diff options
author | Deval Shah <deval.maker@gmail.com> | 2016-07-22 13:57:11 +0530 |
---|---|---|
committer | Pavel Pisa <pisa@cmp.felk.cvut.cz> | 2016-07-23 10:10:16 +0200 |
commit | 1c62f7ee2dcc11defc0f8862e9b833606676a04d (patch) | |
tree | b8f107e90f1bbd810efad3d7e4c03891fa5f2a78 | |
parent | bsp/tms570: ensure that change of SCI baudrate is not applied in the middle o... (diff) | |
download | rtems-1c62f7ee2dcc11defc0f8862e9b833606676a04d.tar.bz2 |
Added USB interrupt handler. And defined some macros regarding USB.
-rw-r--r-- | c/src/lib/libbsp/arm/raspberrypi/include/irq.h | 1 | ||||
-rw-r--r-- | c/src/lib/libbsp/arm/raspberrypi/include/raspberrypi.h | 9 | ||||
-rw-r--r-- | c/src/lib/libbsp/arm/raspberrypi/irq/irq.c | 15 |
3 files changed, 25 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/arm/raspberrypi/include/irq.h b/c/src/lib/libbsp/arm/raspberrypi/include/irq.h index 8436c2dfc6..85225efc95 100644 --- a/c/src/lib/libbsp/arm/raspberrypi/include/irq.h +++ b/c/src/lib/libbsp/arm/raspberrypi/include/irq.h @@ -36,6 +36,7 @@ #define BCM2835_INTC_TOTAL_IRQ 64 + 8 +#define BCM2835_IRQ_ID_USB 9 #define BCM2835_IRQ_ID_AUX 29 #define BCM2835_IRQ_ID_SPI_SLAVE 43 #define BCM2835_IRQ_ID_PWA0 45 diff --git a/c/src/lib/libbsp/arm/raspberrypi/include/raspberrypi.h b/c/src/lib/libbsp/arm/raspberrypi/include/raspberrypi.h index 60645b9baa..911b86be22 100644 --- a/c/src/lib/libbsp/arm/raspberrypi/include/raspberrypi.h +++ b/c/src/lib/libbsp/arm/raspberrypi/include/raspberrypi.h @@ -336,6 +336,15 @@ /** @} */ +/** +* @name USB Registers +* +* @{ +*/ + +#define BCM2835_USB_BASE (RPI_PERIPHERAL_BASE + 0x980000) /* DTC_OTG USB controller */ + +/** @} */ /** @} */ diff --git a/c/src/lib/libbsp/arm/raspberrypi/irq/irq.c b/c/src/lib/libbsp/arm/raspberrypi/irq/irq.c index 7b3b2be3cb..f792c57ffc 100644 --- a/c/src/lib/libbsp/arm/raspberrypi/irq/irq.c +++ b/c/src/lib/libbsp/arm/raspberrypi/irq/irq.c @@ -91,6 +91,11 @@ void bsp_interrupt_dispatch(void) { vector = BCM2835_IRQ_ID_SPI; } + /* USB */ + else if ( BCM2835_REG(BCM2835_IRQ_PENDING1) & BCM2835_BIT(9) ) + { + vector = BCM2835_IRQ_ID_USB; + } if ( vector < 255 ) { @@ -144,6 +149,11 @@ rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector) { BCM2835_REG(BCM2835_IRQ_ENABLE2) = BCM2835_BIT(22); } + /* USB */ + else if ( vector == BCM2835_IRQ_ID_USB ) + { + BCM2835_REG(BCM2835_IRQ_ENABLE1) = BCM2835_BIT(9); + } rtems_interrupt_enable(level); @@ -194,6 +204,11 @@ rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector) { BCM2835_REG(BCM2835_IRQ_DISABLE2) = BCM2835_BIT(22); } + /* USB */ + else if ( vector == BCM2835_IRQ_ID_USB ) + { + BCM2835_REG(BCM2835_IRQ_DISABLE1) = BCM2835_BIT(9); + } rtems_interrupt_enable(level); |