From e37d57bc8100d5978642b77cc03e46a37cb7f503 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Mon, 6 May 2013 10:59:07 +0200 Subject: bsps/arm: Add shared GIC tmtests/tm27 support --- c/src/lib/libbsp/arm/realview-pbx-a9/Makefile.am | 1 + .../lib/libbsp/arm/realview-pbx-a9/include/tm27.h | 59 +--------------- c/src/lib/libbsp/arm/realview-pbx-a9/preinstall.am | 4 ++ c/src/lib/libbsp/arm/shared/include/arm-gic-tm27.h | 81 ++++++++++++++++++++++ 4 files changed, 87 insertions(+), 58 deletions(-) create mode 100644 c/src/lib/libbsp/arm/shared/include/arm-gic-tm27.h 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 - -#include -#include - -#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 #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 + * + * + * 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 + +#include +#include + +#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 */ -- cgit v1.2.3