summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDeval Shah <deval.maker@gmail.com>2016-07-22 13:57:11 +0530
committerPavel Pisa <pisa@cmp.felk.cvut.cz>2016-07-23 10:10:16 +0200
commit1c62f7ee2dcc11defc0f8862e9b833606676a04d (patch)
treeb8f107e90f1bbd810efad3d7e4c03891fa5f2a78
parentbsp/tms570: ensure that change of SCI baudrate is not applied in the middle o... (diff)
downloadrtems-1c62f7ee2dcc11defc0f8862e9b833606676a04d.tar.bz2
Added USB interrupt handler. And defined some macros regarding USB.
-rw-r--r--c/src/lib/libbsp/arm/raspberrypi/include/irq.h1
-rw-r--r--c/src/lib/libbsp/arm/raspberrypi/include/raspberrypi.h9
-rw-r--r--c/src/lib/libbsp/arm/raspberrypi/irq/irq.c15
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);