ARM: mach-shmobile: sh7372 A3SP no_suspend_console fix
authorMagnus Damm <damm@opensource.se>
Wed, 9 Nov 2011 23:44:01 +0000 (00:44 +0100)
committerRafael J. Wysocki <rjw@sisk.pl>
Wed, 9 Nov 2011 23:44:01 +0000 (00:44 +0100)
If "no_suspend_irq" is used on the sh7372 Mackerel board
with v3.2-rc1 then Suspend-to-RAM fails because the serial
console tries to write to the SCIF driver even though the
power domain is turned off.

This patch checks the state of "console_suspend_enabled"
to see if A3SP should be forced enabled.

Signed-off-by: Magnus Damm <damm@opensource.se>
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
arch/arm/mach-shmobile/pm-sh7372.c

index e26138352f07ae8e43b0059d89565e6aec3dc146..78c98a847433562c01d82c47721820813e8b0df4 100644 (file)
@@ -20,6 +20,7 @@
 #include <linux/delay.h>
 #include <linux/irq.h>
 #include <linux/bitrev.h>
+#include <linux/console.h>
 #include <asm/system.h>
 #include <asm/io.h>
 #include <asm/tlbflush.h>
@@ -469,6 +470,11 @@ void __init sh7372_pm_init(void)
        /* do not convert A3SM, A3SP, A3SG, A4R power down into A4S */
        __raw_writel(0, PDNSEL);
 
+       /* serial consoles make use of SCIF hardware located in A3SP,
+        * keep such power domain on if "no_console_suspend" is set.
+        */
+       sh7372_a3sp.stay_on = !console_suspend_enabled;
+
        sh7372_suspend_init();
        sh7372_cpuidle_init();
 }