summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2017-06-27 04:48:38 -0400
committerTony Lindgren <tony@atomide.com>2017-06-30 02:30:18 -0400
commit324dd7a6ac27b388e605ef136f23c88a5e49edbe (patch)
treeedea23047b2098432f07e8256f610e9ab4cd9418
parent1df5eaa6bced2d8a9de305d4a5f587adf57ddf35 (diff)
ARM: OMAP2+: Fix omap3 prm shared irq
Shared interrupts with IRQ_NOAUTOEN got a warning added with commit 04c848d39879 ("genirq: Warn when IRQ_NOAUTOEN is used with shared interrupts"). Let's just drop the IRQ_NOAUTOEN use for omap3 PRM shared interrupt as it does not seem to cause any other issues based on my testing. We have moved a lot of the code to initialize later, and whatever problems the legacy booting had seem to be gone now with pinctrl driver and device tree based booting. Otherwise we will get: WARNING: CPU: 0 PID: 1 at kernel/irq/manage.c:1348 __setup_irq+0x5d0/0x64c [<c01b0260>] (__setup_irq) from [<c01b0480>] (request_threaded_irq+0xdc/0x188) [<c01b0480>] (request_threaded_irq) from [<c051c780>] (pcs_probe+0x6ec/0x8a4) [<c051c780>] (pcs_probe) from [<c05a84b8>] (platform_drv_probe+0x50/0xb0) [<c05a84b8>] (platform_drv_probe) from [<c05a6288>] (driver_probe_device+0x33c/0x478) Note that we also need to remove the related enable_irq() to avoid getting the following: WARNING: CPU: 0 PID: 1 at kernel/irq/manage.c:529 enable_irq+0x34/0x70 [<c01afa04>] (enable_irq) from [<c0c0f1fc>] (omap3_pm_init+0x118/0x3f8) [<c0c0f1fc>] (omap3_pm_init) from [<c0c0ae7c>] (am35xx_init_late+0x10/0x18) Cc: Kevin Hilman <khilman@baylibre.com> Cc: Tero Kristo <t-kristo@ti.com> Signed-off-by: Tony Lindgren <tony@atomide.com>
-rw-r--r--arch/arm/mach-omap2/pm34xx.c1
-rw-r--r--arch/arm/mach-omap2/prm3xxx.c7
2 files changed, 1 insertions, 7 deletions
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index d44e0e2f1106..841ba19d64a6 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -486,7 +486,6 @@ int __init omap3_pm_init(void)
486 ret = request_irq(omap_prcm_event_to_irq("io"), 486 ret = request_irq(omap_prcm_event_to_irq("io"),
487 _prcm_int_handle_io, IRQF_SHARED | IRQF_NO_SUSPEND, "pm_io", 487 _prcm_int_handle_io, IRQF_SHARED | IRQF_NO_SUSPEND, "pm_io",
488 omap3_pm_init); 488 omap3_pm_init);
489 enable_irq(omap_prcm_event_to_irq("io"));
490 489
491 if (ret) { 490 if (ret) {
492 pr_err("pm: Failed to request pm_io irq\n"); 491 pr_err("pm: Failed to request pm_io irq\n");
diff --git a/arch/arm/mach-omap2/prm3xxx.c b/arch/arm/mach-omap2/prm3xxx.c
index 382e236fbfd9..64f6451499a7 100644
--- a/arch/arm/mach-omap2/prm3xxx.c
+++ b/arch/arm/mach-omap2/prm3xxx.c
@@ -692,7 +692,6 @@ static int omap3xxx_prm_late_init(void)
692{ 692{
693 struct device_node *np; 693 struct device_node *np;
694 int irq_num; 694 int irq_num;
695 int ret;
696 695
697 if (!(prm_features & PRM_HAS_IO_WAKEUP)) 696 if (!(prm_features & PRM_HAS_IO_WAKEUP))
698 return 0; 697 return 0;
@@ -712,12 +711,8 @@ static int omap3xxx_prm_late_init(void)
712 } 711 }
713 712
714 omap3xxx_prm_enable_io_wakeup(); 713 omap3xxx_prm_enable_io_wakeup();
715 ret = omap_prcm_register_chain_handler(&omap3_prcm_irq_setup);
716 if (!ret)
717 irq_set_status_flags(omap_prcm_event_to_irq("io"),
718 IRQ_NOAUTOEN);
719 714
720 return ret; 715 return omap_prcm_register_chain_handler(&omap3_prcm_irq_setup);
721} 716}
722 717
723static void __exit omap3xxx_prm_exit(void) 718static void __exit omap3xxx_prm_exit(void)