forked from luck/tmp_suning_uos_patched
[PATCH] genirq: add irq-wake (power-management) support
Enable platforms to set the irq-wake (power-management) properties of an IRQ. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
7a55713ab4
commit
ba9a2331ba
|
@ -36,6 +36,20 @@ extern void free_irq(unsigned int, void *);
|
||||||
extern void disable_irq_nosync(unsigned int irq);
|
extern void disable_irq_nosync(unsigned int irq);
|
||||||
extern void disable_irq(unsigned int irq);
|
extern void disable_irq(unsigned int irq);
|
||||||
extern void enable_irq(unsigned int irq);
|
extern void enable_irq(unsigned int irq);
|
||||||
|
|
||||||
|
/* IRQ wakeup (PM) control: */
|
||||||
|
extern int set_irq_wake(unsigned int irq, unsigned int on);
|
||||||
|
|
||||||
|
static inline int enable_irq_wake(unsigned int irq)
|
||||||
|
{
|
||||||
|
return set_irq_wake(irq, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline int disable_irq_wake(unsigned int irq)
|
||||||
|
{
|
||||||
|
return set_irq_wake(irq, 0);
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __ARCH_SET_SOFTIRQ_PENDING
|
#ifndef __ARCH_SET_SOFTIRQ_PENDING
|
||||||
|
|
|
@ -133,6 +133,27 @@ void enable_irq(unsigned int irq)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(enable_irq);
|
EXPORT_SYMBOL(enable_irq);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set_irq_wake - control irq power management wakeup
|
||||||
|
* @irq: interrupt to control
|
||||||
|
* @on: enable/disable power management wakeup
|
||||||
|
*
|
||||||
|
* Enable/disable power management wakeup mode
|
||||||
|
*/
|
||||||
|
int set_irq_wake(unsigned int irq, unsigned int on)
|
||||||
|
{
|
||||||
|
struct irq_desc *desc = irq_desc + irq;
|
||||||
|
unsigned long flags;
|
||||||
|
int ret = -ENXIO;
|
||||||
|
|
||||||
|
spin_lock_irqsave(&desc->lock, flags);
|
||||||
|
if (desc->chip->set_wake)
|
||||||
|
ret = desc->chip->set_wake(irq, on);
|
||||||
|
spin_unlock_irqrestore(&desc->lock, flags);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL(set_irq_wake);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Internal function that tells the architecture code whether a
|
* Internal function that tells the architecture code whether a
|
||||||
* particular irq has been exclusively allocated or is available
|
* particular irq has been exclusively allocated or is available
|
||||||
|
|
Loading…
Reference in New Issue
Block a user