diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2011-02-10 13:46:26 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2011-02-19 06:58:22 -0500 |
commit | 7f94226f03299f1ca32f118f02f2a0295e0e5e93 (patch) | |
tree | 049a83a3c264d4378f341991800c345bf4eeb5a5 /kernel/irq | |
parent | d4d5e08960844a062da8387ee5f16ca7a33200d0 (diff) |
genirq: Move wakeup state to irq_data
Some irq_chips need to know the state of wakeup mode for
setting the trigger type etc. Reflect it in irq_data state.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/irq')
-rw-r--r-- | kernel/irq/internals.h | 2 | ||||
-rw-r--r-- | kernel/irq/manage.c | 4 | ||||
-rw-r--r-- | kernel/irq/pm.c | 2 |
3 files changed, 3 insertions, 5 deletions
diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h index 1d500fbde0d4..5e2366da9f38 100644 --- a/kernel/irq/internals.h +++ b/kernel/irq/internals.h | |||
@@ -46,7 +46,6 @@ enum { | |||
46 | * IRQS_PENDING - irq is pending and replayed later | 46 | * IRQS_PENDING - irq is pending and replayed later |
47 | * IRQS_MASKED - irq is masked | 47 | * IRQS_MASKED - irq is masked |
48 | * IRQS_SUSPENDED - irq is suspended | 48 | * IRQS_SUSPENDED - irq is suspended |
49 | * IRQS_WAKEUP - irq triggers system wakeup from suspend | ||
50 | */ | 49 | */ |
51 | enum { | 50 | enum { |
52 | IRQS_AUTODETECT = 0x00000001, | 51 | IRQS_AUTODETECT = 0x00000001, |
@@ -60,7 +59,6 @@ enum { | |||
60 | IRQS_PENDING = 0x00000200, | 59 | IRQS_PENDING = 0x00000200, |
61 | IRQS_MASKED = 0x00000400, | 60 | IRQS_MASKED = 0x00000400, |
62 | IRQS_SUSPENDED = 0x00000800, | 61 | IRQS_SUSPENDED = 0x00000800, |
63 | IRQS_WAKEUP = 0x00001000, | ||
64 | }; | 62 | }; |
65 | 63 | ||
66 | #include "compat.h" | 64 | #include "compat.h" |
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 50809c79c7ad..ea6add6036b1 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
@@ -492,7 +492,7 @@ int irq_set_irq_wake(unsigned int irq, unsigned int on) | |||
492 | if (ret) | 492 | if (ret) |
493 | desc->wake_depth = 0; | 493 | desc->wake_depth = 0; |
494 | else | 494 | else |
495 | desc->istate |= IRQS_WAKEUP; | 495 | irqd_set(&desc->irq_data, IRQD_WAKEUP_STATE); |
496 | } | 496 | } |
497 | } else { | 497 | } else { |
498 | if (desc->wake_depth == 0) { | 498 | if (desc->wake_depth == 0) { |
@@ -502,7 +502,7 @@ int irq_set_irq_wake(unsigned int irq, unsigned int on) | |||
502 | if (ret) | 502 | if (ret) |
503 | desc->wake_depth = 1; | 503 | desc->wake_depth = 1; |
504 | else | 504 | else |
505 | desc->istate &= ~IRQS_WAKEUP; | 505 | irqd_clear(&desc->irq_data, IRQD_WAKEUP_STATE); |
506 | } | 506 | } |
507 | } | 507 | } |
508 | 508 | ||
diff --git a/kernel/irq/pm.c b/kernel/irq/pm.c index f39383d8672d..1329f0eff49e 100644 --- a/kernel/irq/pm.c +++ b/kernel/irq/pm.c | |||
@@ -69,7 +69,7 @@ int check_wakeup_irqs(void) | |||
69 | int irq; | 69 | int irq; |
70 | 70 | ||
71 | for_each_irq_desc(irq, desc) | 71 | for_each_irq_desc(irq, desc) |
72 | if ((desc->istate & IRQS_WAKEUP) && | 72 | if (irqd_is_wakeup_set(&desc->irq_data) && |
73 | (desc->istate & IRQS_PENDING)) | 73 | (desc->istate & IRQS_PENDING)) |
74 | return -EBUSY; | 74 | return -EBUSY; |
75 | 75 | ||