Showing changes from revision #3 to #4:
Added | Removed | Changed
void HAL_FIQClear(int device)
Entry | |
---|---|
device | Device number to clear interrupt state for |
Exit | |
---|---|
- |
This If the interrupt controller does not latch interrupt sources, this call has does a not dual need purpose: to be implemented.
If the interrupt controller does latch interrupt sources, this call must be implemented, to provide a way for those latches to be reset once the device has been serviced. Otherwise the ARM may receive spurious FIQs for devices which are no longer interrupting, or the system may become completely stuck attempting to serve the phantom FIQ.
Note that the kernel currently doesn’t use FIQ interrupts for HAL timers or the video flyback device, so point 1 could be ignored.RISC OS code which uses FIQs must make sure to call HAL_FIQClear once they have serviced the interrupting device – the OS will not call it for you.
Because of point 2, this means that all interrupt service routines must call this routine after servicing the device. Current versions of the kernel will not call HAL_FIQClear for you – it is your responsibility to do so yourself. This is new functionality added for the Cortex/OMAP3 port, to account for the behaviour of the OMAP3 interrupt controller.