From 35c0e7f5860ddf15f05b52374b6ab573d07e83f6 Mon Sep 17 00:00:00 2001 From: "Rafael J. Wysocki" Date: Fri, 23 Dec 2011 01:23:30 +0100 Subject: [PATCH] --- yaml --- r: 280423 b: refs/heads/master c: 0f966d74cf77a9140a025464a287e1d2fee8a1fc h: refs/heads/master i: 280421: 11f135cc8f9ad2259956803fadae1a79f92b49f8 280419: 6dc7a2145b1f4216b949e4d7788706d3bb34f7f9 280415: 2fdf9d615fd2cbe7aa511a7a07457b31c746e8a2 v: v3 --- [refs] | 2 +- trunk/arch/arm/mach-shmobile/intc-sh7372.c | 1 + trunk/drivers/sh/intc/core.c | 8 ++++++++ trunk/drivers/sh/intc/internals.h | 1 + trunk/include/linux/sh_intc.h | 1 + 5 files changed, 12 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index b14a6ba49f1c..4a8bc9d77ef6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f7dadb37931a6ffa2aa6b443188299166dc5e638 +refs/heads/master: 0f966d74cf77a9140a025464a287e1d2fee8a1fc diff --git a/trunk/arch/arm/mach-shmobile/intc-sh7372.c b/trunk/arch/arm/mach-shmobile/intc-sh7372.c index d087b31b5d12..89afcaba99a1 100644 --- a/trunk/arch/arm/mach-shmobile/intc-sh7372.c +++ b/trunk/arch/arm/mach-shmobile/intc-sh7372.c @@ -535,6 +535,7 @@ static struct resource intcs_resources[] __initdata = { static struct intc_desc intcs_desc __initdata = { .name = "sh7372-intcs", .force_enable = ENABLED_INTCS, + .skip_syscore_suspend = true, .resource = intcs_resources, .num_resources = ARRAY_SIZE(intcs_resources), .hw = INTC_HW_DESC(intcs_vectors, intcs_groups, intcs_mask_registers, diff --git a/trunk/drivers/sh/intc/core.c b/trunk/drivers/sh/intc/core.c index 8b7a141ff35e..be5a025eeca3 100644 --- a/trunk/drivers/sh/intc/core.c +++ b/trunk/drivers/sh/intc/core.c @@ -354,6 +354,8 @@ int __init register_intc_controller(struct intc_desc *desc) if (desc->force_enable) intc_enable_disable_enum(desc, d, desc->force_enable, 1); + d->skip_suspend = desc->skip_syscore_suspend; + nr_intc_controllers++; return 0; @@ -386,6 +388,9 @@ static int intc_suspend(void) list_for_each_entry(d, &intc_list, list) { int irq; + if (d->skip_suspend) + continue; + /* enable wakeup irqs belonging to this intc controller */ for_each_active_irq(irq) { struct irq_data *data; @@ -409,6 +414,9 @@ static void intc_resume(void) list_for_each_entry(d, &intc_list, list) { int irq; + if (d->skip_suspend) + continue; + for_each_active_irq(irq) { struct irq_data *data; struct irq_chip *chip; diff --git a/trunk/drivers/sh/intc/internals.h b/trunk/drivers/sh/intc/internals.h index 5b934851efa8..b3fe1cf25a28 100644 --- a/trunk/drivers/sh/intc/internals.h +++ b/trunk/drivers/sh/intc/internals.h @@ -67,6 +67,7 @@ struct intc_desc_int { struct intc_window *window; unsigned int nr_windows; struct irq_chip chip; + bool skip_suspend; }; diff --git a/trunk/include/linux/sh_intc.h b/trunk/include/linux/sh_intc.h index 5812fefbcedf..b160645f5599 100644 --- a/trunk/include/linux/sh_intc.h +++ b/trunk/include/linux/sh_intc.h @@ -95,6 +95,7 @@ struct intc_desc { unsigned int num_resources; intc_enum force_enable; intc_enum force_disable; + bool skip_syscore_suspend; struct intc_hw_desc hw; };