forked from Imagelibrary/rtems
bsp/lpc32xx: Fix interrupt controller suppport
Enable/Disable vector routines now check for a valid vector. Without these guards, the Enable/Disable vector routines will not work with the interrupt server.
This commit is contained in:
committed by
Sebastian Huber
parent
c0151e6c64
commit
2f8f951b42
4
c/src/lib/libbsp/arm/lpc32xx/irq/irq.c
Normal file → Executable file
4
c/src/lib/libbsp/arm/lpc32xx/irq/irq.c
Normal file → Executable file
@@ -267,24 +267,28 @@ void bsp_interrupt_dispatch(void)
|
||||
|
||||
rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
|
||||
{
|
||||
if (lpc32xx_irq_is_valid(vector)) {
|
||||
rtems_interrupt_level level;
|
||||
|
||||
rtems_interrupt_disable(level);
|
||||
lpc32xx_irq_set_bit_in_register(vector, LPC32XX_IRQ_OFFSET_ER);
|
||||
lpc32xx_irq_set_bit_in_field(vector, &lpc32xx_irq_enable);
|
||||
rtems_interrupt_enable(level);
|
||||
}
|
||||
|
||||
return RTEMS_SUCCESSFUL;
|
||||
}
|
||||
|
||||
rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
|
||||
{
|
||||
if (lpc32xx_irq_is_valid(vector)) {
|
||||
rtems_interrupt_level level;
|
||||
|
||||
rtems_interrupt_disable(level);
|
||||
lpc32xx_irq_clear_bit_in_field(vector, &lpc32xx_irq_enable);
|
||||
lpc32xx_irq_clear_bit_in_register(vector, LPC32XX_IRQ_OFFSET_ER);
|
||||
rtems_interrupt_enable(level);
|
||||
}
|
||||
|
||||
return RTEMS_SUCCESSFUL;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user