summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/raspberrypi/irq/irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'c/src/lib/libbsp/arm/raspberrypi/irq/irq.c')
-rw-r--r--c/src/lib/libbsp/arm/raspberrypi/irq/irq.c15
1 files changed, 15 insertions, 0 deletions
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);