ARM: OMAP AM3517/05: hwmod data: block WFI when EMAC active
authorPaul Walmsley <paul@pwsan.com>
Wed, 6 Feb 2013 20:48:56 +0000 (13:48 -0700)
committerPaul Walmsley <paul@pwsan.com>
Wed, 6 Feb 2013 20:48:56 +0000 (13:48 -0700)
According to Mark Greer, on OMAP AM3517/3505 chips, the EMAC is unable
to wake the ARM up from WFI:

    http://www.spinics.net/lists/arm-kernel/msg174734.html

Further troubleshooting was unable to narrow the problem down.  So we
don't have much choice other than to block WFI when the EMAC is active
with the HWMOD_BLOCK_WFI flag.

Based on Mark's original patch.  We're removing the omap_device-based
pm_lats code, so a different approach was needed.

This third version contains some corrections thanks to Mark's review.

Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Mark A. Greer <mgreer@animalcreek.com>
Acked-by: Mark A. Greer <mgreer@animalcreek.com>
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c

index 8bb2628..ac7e03e 100644 (file)
@@ -3493,7 +3493,12 @@ static struct omap_hwmod am35xx_emac_hwmod = {
        .name           = "davinci_emac",
        .mpu_irqs       = am35xx_emac_mpu_irqs,
        .class          = &am35xx_emac_class,
-       .flags          = HWMOD_NO_IDLEST,
+       /*
+        * According to Mark Greer, the MPU will not return from WFI
+        * when the EMAC signals an interrupt.
+        * http://www.spinics.net/lists/arm-kernel/msg174734.html
+        */
+       .flags          = (HWMOD_NO_IDLEST | HWMOD_BLOCK_WFI),
 };
 
 /* l3_core -> davinci emac interface */