summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kernel/irq/internals.h2
-rw-r--r--kernel/irq/manage.c4
-rw-r--r--kernel/irq/pm.c2
-rw-r--r--kernel/irq/settings.h2
4 files changed, 7 insertions, 3 deletions
diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h
index 4688911..cef0849 100644
--- a/kernel/irq/internals.h
+++ b/kernel/irq/internals.h
@@ -49,6 +49,7 @@ enum {
* IRQS_PENDING - irq is pending and replayed later
* IRQS_MASKED - irq is masked
* IRQS_SUSPENDED - irq is suspended
+ * IRQS_WAKEUP - irq triggers system wakeup from suspend
*/
enum {
IRQS_AUTODETECT = 0x00000001,
@@ -62,6 +63,7 @@ enum {
IRQS_PENDING = 0x00000200,
IRQS_MASKED = 0x00000400,
IRQS_SUSPENDED = 0x00000800,
+ IRQS_WAKEUP = 0x00001000,
};
#define irq_data_to_desc(data) container_of(data, struct irq_desc, irq_data)
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index b912de4..ccc9389 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -489,7 +489,7 @@ int irq_set_irq_wake(unsigned int irq, unsigned int on)
if (ret)
desc->wake_depth = 0;
else
- desc->status |= IRQ_WAKEUP;
+ desc->istate |= IRQS_WAKEUP;
}
} else {
if (desc->wake_depth == 0) {
@@ -499,7 +499,7 @@ int irq_set_irq_wake(unsigned int irq, unsigned int on)
if (ret)
desc->wake_depth = 1;
else
- desc->status &= ~IRQ_WAKEUP;
+ desc->istate &= ~IRQS_WAKEUP;
}
}
diff --git a/kernel/irq/pm.c b/kernel/irq/pm.c
index d81337f..f39383d 100644
--- a/kernel/irq/pm.c
+++ b/kernel/irq/pm.c
@@ -69,7 +69,7 @@ int check_wakeup_irqs(void)
int irq;
for_each_irq_desc(irq, desc)
- if ((desc->status & IRQ_WAKEUP) &&
+ if ((desc->istate & IRQS_WAKEUP) &&
(desc->istate & IRQS_PENDING))
return -EBUSY;
diff --git a/kernel/irq/settings.h b/kernel/irq/settings.h
index 2cd45fd..ef09824 100644
--- a/kernel/irq/settings.h
+++ b/kernel/irq/settings.h
@@ -18,3 +18,5 @@ enum {
#define IRQ_PENDING GOT_YOU_MORON
#undef IRQ_MASKED
#define IRQ_MASKED GOT_YOU_MORON
+#undef IRQ_WAKEUP
+#define IRQ_WAKEUP GOT_YOU_MORON