mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [patch 23/50] genirq: add irq-wake (power-management) support
@ 2006-05-17  0:17 Ingo Molnar
  0 siblings, 0 replies; only message in thread
From: Ingo Molnar @ 2006-05-17  0:17 UTC (permalink / raw)
  To: linux-kernel
  Cc: Thomas Gleixner, Benjamin Herrenschmidt, Russell King,
	Andrew Morton, Christoph Hellwig, linux-arm-kernel

From: Thomas Gleixner <tglx@linutronix.de>

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>
---
 include/linux/interrupt.h |   14 ++++++++++++++
 kernel/irq/manage.c       |   21 +++++++++++++++++++++
 2 files changed, 35 insertions(+)

Index: linux-genirq.q/include/linux/interrupt.h
===================================================================
--- linux-genirq.q.orig/include/linux/interrupt.h
+++ linux-genirq.q/include/linux/interrupt.h
@@ -56,6 +56,20 @@ extern void free_irq(unsigned int, void 
 extern void disable_irq_nosync(unsigned int irq);
 extern void disable_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
 
 #ifndef __ARCH_SET_SOFTIRQ_PENDING
Index: linux-genirq.q/kernel/irq/manage.c
===================================================================
--- linux-genirq.q.orig/kernel/irq/manage.c
+++ linux-genirq.q/kernel/irq/manage.c
@@ -133,6 +133,27 @@ void enable_irq(unsigned int 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->handler->set_wake)
+		ret = desc->handler->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
  * particular irq has been exclusively allocated or is available

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2006-05-17  0:26 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-05-17  0:17 [patch 23/50] genirq: add irq-wake (power-management) support Ingo Molnar

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®