diff options
Diffstat (limited to 'drivers/sh/intc')
-rw-r--r-- | drivers/sh/intc/core.c | 8 | ||||
-rw-r--r-- | drivers/sh/intc/internals.h | 1 |
2 files changed, 9 insertions, 0 deletions
diff --git a/drivers/sh/intc/core.c b/drivers/sh/intc/core.c index e85512dd9c72..e53e449b4eca 100644 --- a/drivers/sh/intc/core.c +++ b/drivers/sh/intc/core.c | |||
@@ -354,6 +354,8 @@ int __init register_intc_controller(struct intc_desc *desc) | |||
354 | if (desc->force_enable) | 354 | if (desc->force_enable) |
355 | intc_enable_disable_enum(desc, d, desc->force_enable, 1); | 355 | intc_enable_disable_enum(desc, d, desc->force_enable, 1); |
356 | 356 | ||
357 | d->skip_suspend = desc->skip_syscore_suspend; | ||
358 | |||
357 | nr_intc_controllers++; | 359 | nr_intc_controllers++; |
358 | 360 | ||
359 | return 0; | 361 | return 0; |
@@ -386,6 +388,9 @@ static int intc_suspend(void) | |||
386 | list_for_each_entry(d, &intc_list, list) { | 388 | list_for_each_entry(d, &intc_list, list) { |
387 | int irq; | 389 | int irq; |
388 | 390 | ||
391 | if (d->skip_suspend) | ||
392 | continue; | ||
393 | |||
389 | /* enable wakeup irqs belonging to this intc controller */ | 394 | /* enable wakeup irqs belonging to this intc controller */ |
390 | for_each_active_irq(irq) { | 395 | for_each_active_irq(irq) { |
391 | struct irq_data *data; | 396 | struct irq_data *data; |
@@ -409,6 +414,9 @@ static void intc_resume(void) | |||
409 | list_for_each_entry(d, &intc_list, list) { | 414 | list_for_each_entry(d, &intc_list, list) { |
410 | int irq; | 415 | int irq; |
411 | 416 | ||
417 | if (d->skip_suspend) | ||
418 | continue; | ||
419 | |||
412 | for_each_active_irq(irq) { | 420 | for_each_active_irq(irq) { |
413 | struct irq_data *data; | 421 | struct irq_data *data; |
414 | struct irq_chip *chip; | 422 | struct irq_chip *chip; |
diff --git a/drivers/sh/intc/internals.h b/drivers/sh/intc/internals.h index 1c2722e5af3f..b0e9155ff739 100644 --- a/drivers/sh/intc/internals.h +++ b/drivers/sh/intc/internals.h | |||
@@ -67,6 +67,7 @@ struct intc_desc_int { | |||
67 | struct intc_window *window; | 67 | struct intc_window *window; |
68 | unsigned int nr_windows; | 68 | unsigned int nr_windows; |
69 | struct irq_chip chip; | 69 | struct irq_chip chip; |
70 | bool skip_suspend; | ||
70 | }; | 71 | }; |
71 | 72 | ||
72 | 73 | ||