diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-05-06 10:59:07 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2013-05-06 15:06:52 +0200 |
commit | e37d57bc8100d5978642b77cc03e46a37cb7f503 (patch) | |
tree | 454bd77f2ebb130018be055fe235a07c1ebe3546 | |
parent | bsps/arm: Remove superfluous parameter (diff) | |
download | rtems-e37d57bc8100d5978642b77cc03e46a37cb7f503.tar.bz2 |
bsps/arm: Add shared GIC tmtests/tm27 support
4 files changed, 87 insertions, 58 deletions
diff --git a/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am b/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am index e1b8741fb0..d8589a3c6f 100644 --- a/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am +++ b/c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am @@ -39,6 +39,7 @@ include_bsp_HEADERS += ../shared/include/arm-cp15-start.h include_bsp_HEADERS += ../shared/include/arm-gic.h include_bsp_HEADERS += ../shared/include/arm-gic-irq.h include_bsp_HEADERS += ../shared/include/arm-gic-regs.h +include_bsp_HEADERS += ../shared/include/arm-gic-tm27.h include_bsp_HEADERS += ../shared/include/arm-pl011.h include_bsp_HEADERS += ../shared/include/arm-pl011-regs.h include_bsp_HEADERS += include/irq.h 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 index 2a31e8950d..96ab469033 100644 --- a/c/src/lib/libbsp/arm/realview-pbx-a9/include/tm27.h +++ b/c/src/lib/libbsp/arm/realview-pbx-a9/include/tm27.h @@ -19,63 +19,6 @@ #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); -} +#include <bsp/arm-gic-tm27.h> #endif /* __tm27_h */ diff --git a/c/src/lib/libbsp/arm/realview-pbx-a9/preinstall.am b/c/src/lib/libbsp/arm/realview-pbx-a9/preinstall.am index fe641ac0b9..b153c8c8df 100644 --- a/c/src/lib/libbsp/arm/realview-pbx-a9/preinstall.am +++ b/c/src/lib/libbsp/arm/realview-pbx-a9/preinstall.am @@ -110,6 +110,10 @@ $(PROJECT_INCLUDE)/bsp/arm-gic-regs.h: ../shared/include/arm-gic-regs.h $(PROJEC $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/arm-gic-regs.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/arm-gic-regs.h +$(PROJECT_INCLUDE)/bsp/arm-gic-tm27.h: ../shared/include/arm-gic-tm27.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) + $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/arm-gic-tm27.h +PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/arm-gic-tm27.h + $(PROJECT_INCLUDE)/bsp/arm-pl011.h: ../shared/include/arm-pl011.h $(PROJECT_INCLUDE)/bsp/$(dirstamp) $(INSTALL_DATA) $< $(PROJECT_INCLUDE)/bsp/arm-pl011.h PREINSTALL_FILES += $(PROJECT_INCLUDE)/bsp/arm-pl011.h diff --git a/c/src/lib/libbsp/arm/shared/include/arm-gic-tm27.h b/c/src/lib/libbsp/arm/shared/include/arm-gic-tm27.h new file mode 100644 index 0000000000..45e6c5d616 --- /dev/null +++ b/c/src/lib/libbsp/arm/shared/include/arm-gic-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 LIBBSP_ARM_SHARED_ARM_GIC_TM27_H +#define LIBBSP_ARM_SHARED_ARM_GIC_TM27_H + +#include <assert.h> + +#include <bsp.h> +#include <bsp/irq.h> + +#define MUST_WAIT_FOR_INTERRUPT 1 + +#define ARM_GIC_TM27_IRQ ARM_GIC_IRQ_SGI_13 + +#define ARM_GIC_TM27_PRIO_LOW 0xfe + +#define ARM_GIC_TM27_PRIO_HIGH 0x00 + +static inline void Install_tm27_vector(void (*handler)(rtems_vector_number)) +{ + rtems_status_code sc = rtems_interrupt_handler_install( + ARM_GIC_TM27_IRQ, + "TM27", + RTEMS_INTERRUPT_UNIQUE, + (rtems_interrupt_handler) handler, + NULL + ); + assert(sc == RTEMS_SUCCESSFUL); + + sc = arm_gic_irq_set_priority( + ARM_GIC_TM27_IRQ, + ARM_GIC_TM27_PRIO_LOW + ); + assert(sc == RTEMS_SUCCESSFUL); +} + +static inline void Cause_tm27_intr(void) +{ + rtems_status_code sc = arm_gic_irq_generate_software_irq( + ARM_GIC_TM27_IRQ, + ARM_GIC_IRQ_SOFTWARE_IRQ_TO_SELF, + 0 + ); + assert(sc == RTEMS_SUCCESSFUL); +} + +static inline void Clear_tm27_intr(void) +{ + rtems_status_code sc = arm_gic_irq_set_priority( + ARM_GIC_TM27_IRQ, + ARM_GIC_TM27_PRIO_LOW + ); + assert(sc == RTEMS_SUCCESSFUL); +} + +static inline void Lower_tm27_intr(void) +{ + rtems_status_code sc = arm_gic_irq_set_priority( + ARM_GIC_TM27_IRQ, + ARM_GIC_TM27_PRIO_HIGH + ); + assert(sc == RTEMS_SUCCESSFUL); +} + +#endif /* LIBBSP_ARM_SHARED_ARM_GIC_TM27_H */ |