Entry | |
---|---|
R0 | Device number |
R1 | Address of device driver routine |
R2 | Value to be passed in R12 when driver is called |
R3 | Address of interrupt status if R0 = podule “IRQ” or “FIQ as IRQ” on entry |
R4 | Interrupt mask to use, if R0 = podule “IRQ” or “FIQ as IRQ” on entry |
Exit | |
---|---|
R0 | Preserved |
R1 | Preserved |
R2 | Preserved |
R3 | Preserved |
R4 | Preserved |
The purpose of this call is to remove a driver from the list of claimants of a device vector.
The device vector is identified by the contents of the register on entry; R0-R2 (R0-R4 if R0 relates to one of the podule device numbers (see Podule_ReadInfo?) when registered) must be the same as when the vector was claimed.
The previous vector owner is re-installed at the head of the chain. If there is no previous owner, then the IRQs from the corresponding device are disabled.
You must not attempt to disable a device’s IRQs within the IO controller when you release its vector. For expansion card IRQs, you should prevent your device from interrupting again by programming the hardware locally on your expansion card.