From 503c94783b64f299e1c07a6429738c83c7fc4b85 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Tue, 8 Feb 2011 14:34:18 +0100 Subject: [PATCH] --- yaml --- r: 234736 b: refs/heads/master c: 6d2cd17fde1fc3e93302815f049f255bb2b3123e h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/kernel/irq/internals.h | 2 ++ trunk/kernel/irq/manage.c | 4 ++-- trunk/kernel/irq/pm.c | 2 +- trunk/kernel/irq/settings.h | 2 ++ 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 8cefd68da108..1a82773aafce 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c531e8361f1968d664e6e97fbd3bfa4cf0e62e42 +refs/heads/master: 6d2cd17fde1fc3e93302815f049f255bb2b3123e diff --git a/trunk/kernel/irq/internals.h b/trunk/kernel/irq/internals.h index 46889119e6a6..cef0849dcfa5 100644 --- a/trunk/kernel/irq/internals.h +++ b/trunk/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/trunk/kernel/irq/manage.c b/trunk/kernel/irq/manage.c index b912de4ff4de..ccc9389909ff 100644 --- a/trunk/kernel/irq/manage.c +++ b/trunk/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/trunk/kernel/irq/pm.c b/trunk/kernel/irq/pm.c index d81337fc1cff..f39383d8672d 100644 --- a/trunk/kernel/irq/pm.c +++ b/trunk/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/trunk/kernel/irq/settings.h b/trunk/kernel/irq/settings.h index 2cd45fd5ec8a..ef09824e4b32 100644 --- a/trunk/kernel/irq/settings.h +++ b/trunk/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