This is in accordance with the information in the datasheet and has been verified with the linux source code for RPi --- c/src/lib/libbsp/arm/raspberrypi/include/irq.h | 1 + c/src/lib/libbsp/arm/raspberrypi/irq/irq.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+)
diff --git a/c/src/lib/libbsp/arm/raspberrypi/include/irq.h b/c/src/lib/libbsp/arm/raspberrypi/include/irq.h index 8436c2d..e3b4e7d 100644 --- a/c/src/lib/libbsp/arm/raspberrypi/include/irq.h +++ b/c/src/lib/libbsp/arm/raspberrypi/include/irq.h @@ -51,6 +51,7 @@ #define BCM2835_IRQ_ID_UART 57 +#define BCM2835_IRQ_ID_SDCARD 62 #define BCM2835_IRQ_ID_TIMER_0 64 #define BCM2835_IRQ_ID_MAILBOX_0 65 #define BCM2835_IRQ_ID_DOORBELL_0 66 diff --git a/c/src/lib/libbsp/arm/raspberrypi/irq/irq.c b/c/src/lib/libbsp/arm/raspberrypi/irq/irq.c index 7b3b2be..c205ef7 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; } + /* SD CARD */ + else if ( BCM2835_REG(BCM2835_IRQ_PENDING2) & BCM2835_BIT(30) ) + { + vector = BCM2835_IRQ_ID_SDCARD; + } 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); } + /* SD CARD */ + else if ( vector == BCM2835_IRQ_ID_SDCARD ) + { + BCM2835_REG(BCM2835_IRQ_ENABLE2) = BCM2835_BIT(30); + } 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); } + /* SD CARD */ + else if ( vector == BCM2835_IRQ_ID_SDCARD ) + { + BCM2835_REG(BCM2835_IRQ_DISABLE2) = BCM2835_REG(30); + } rtems_interrupt_enable(level); -- 1.9.1 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel