diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-04-26 15:06:32 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-05-03 17:30:56 +0200 |
commit | a91dc98b5ad5ee9bc8d592c62753a467daf4e711 (patch) | |
tree | e406ebd9033b0ac2af6ca7c7ed8b85460f3df430 /c/src/lib/libbsp/arm/realview-pbx-a9/include/tm27.h | |
parent | bsps/arm: Copy vector table only if necessary (diff) | |
download | rtems-a91dc98b5ad5ee9bc8d592c62753a467daf4e711.tar.bz2 |
bsp/realview-pbx-a9: New BSP
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libbsp/arm/realview-pbx-a9/include/tm27.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/arm/realview-pbx-a9/include/tm27.h b/c/src/lib/libbsp/arm/realview-pbx-a9/include/tm27.h new file mode 100644 index 0000000000..2a31e8950d --- /dev/null +++ b/c/src/lib/libbsp/arm/realview-pbx-a9/include/tm27.h @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2013 embedded brains GmbH. All rights reserved. + * + * embedded brains GmbH + * Dornierstr. 4 + * 82178 Puchheim + * Germany + * <info@embedded-brains.de> + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.com/license/LICENSE. + */ + +#ifndef _RTEMS_TMTEST27 +#error "This is an RTEMS internal file you must not include directly." +#endif + +#ifndef __tm27_h +#define __tm27_h + +#include <assert.h> + +#include <bsp.h> +#include <bsp/irq.h> + +#define MUST_WAIT_FOR_INTERRUPT 1 + +#define RVPBXA9_TM27_IRQ ARM_GIC_IRQ_SGI_13 + +#define RVPBXA9_TM27_PRIO_LOW 0xfe + +#define RVPBXA9_TM27_PRIO_HIGH 0x00 + +static void Install_tm27_vector(void (*handler)(rtems_vector_number)) +{ + rtems_status_code sc = rtems_interrupt_handler_install( + RVPBXA9_TM27_IRQ, + "TM27", + RTEMS_INTERRUPT_UNIQUE, + (rtems_interrupt_handler) handler, + NULL + ); + assert(sc == RTEMS_SUCCESSFUL); + + sc = arm_gic_irq_set_priority( + RVPBXA9_TM27_IRQ, + RVPBXA9_TM27_PRIO_LOW + ); + assert(sc == RTEMS_SUCCESSFUL); +} + +static void Cause_tm27_intr(void) +{ + rtems_status_code sc = arm_gic_irq_generate_software_irq( + RVPBXA9_TM27_IRQ, + ARM_GIC_IRQ_SOFTWARE_IRQ_TO_SELF, + 0 + ); + assert(sc == RTEMS_SUCCESSFUL); +} + +static void Clear_tm27_intr(void) +{ + rtems_status_code sc = arm_gic_irq_set_priority( + RVPBXA9_TM27_IRQ, + RVPBXA9_TM27_PRIO_LOW + ); + assert(sc == RTEMS_SUCCESSFUL); +} + +static void Lower_tm27_intr(void) +{ + rtems_status_code sc = arm_gic_irq_set_priority( + RVPBXA9_TM27_IRQ, + RVPBXA9_TM27_PRIO_HIGH + ); + assert(sc == RTEMS_SUCCESSFUL); +} + +#endif /* __tm27_h */ |