genirq: implement read_irq_line for interrupt lines
Some drivers need to know what the status of the interrupt line is. This is especially true for drivers that register a handler with IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING and in the handler they need to know which edge transition it was invoked for. Provide a way for these handlers to read the logical status of the line after their handler was invoked. If the line reads high it was called for a rising edge and if the line reads low it was called for a falling edge. The irq_read_line callback in the chip allows the controller to provide the real time status of this line. Controllers that can read the status of an interrupt line should implement this by doing necessary hardware reads and return the logical state of the line. Interrupt controllers based on the slow bus architecture should conduct the transaction in this callback. The genirq code will call the chip's bus lock prior to calling irq_read_line. Obviously since the transaction would be completed before returning from irq_read_line it need not do any transactions in the bus unlock call. Change-Id: I3c8746706530bba14a373c671d22ee963b84dfab Signed-off-by: Abhijeet Dharmapurikar <adharmap@codeaurora.org> (cherry picked from commit ed3e47cb88b61859da3c221f22b509ebe0433218) Conflicts: include/linux/interrupt.h
This commit is contained in:
committed by
Rohit Vaswani
parent
c9cf77ff7e
commit
18f1fe25ad
@@ -354,6 +354,7 @@ static inline void enable_irq_lockdep_irqrestore(unsigned int irq, unsigned long
|
||||
|
||||
/* IRQ wakeup (PM) control: */
|
||||
extern int irq_set_irq_wake(unsigned int irq, unsigned int on);
|
||||
extern int irq_read_line(unsigned int irq);
|
||||
|
||||
static inline int enable_irq_wake(unsigned int irq)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user