From a520a30ffd932bce334d894adce12a6ceec2be00 Mon Sep 17 00:00:00 2001 From: Greg Guyotte Date: Tue, 21 Jun 2011 21:56:06 -0500 Subject: [PATCH] Fix matrix suspend * Added new OMAP config option OMAP3_PM_DISABLE_VT_SWITCH which disables the VT console switch which normally occurs during suspend. This console switch, when performed with Matrix running, hangs. The VT switch is considered unnecessary. * Modified OMAP3 EVM and OMAP3 Beagle defconfig files to default the OMAP3_PM_DISABLE_VT_SWITCH=y, and also to default MMC_UNSAFE_RESUME=y. The latter case causes a hang during suspend if the root filesystem is located on the MMC card. This fix has actually been done in another patch, but the defconfigs were not updated. Signed-off-by: Greg Guyotte Fix mistake in Kconfig Did not mean to add the two lines in Kconfig under ARCH_OMAP3. Signed-off-by: Greg Guyotte --- arch/arm/configs/omap3_beagle_defconfig | 3 ++- arch/arm/configs/omap3_evm_defconfig | 3 ++- arch/arm/mach-omap2/Kconfig | 10 ++++++++++ arch/arm/mach-omap2/pm34xx.c | 4 ++++ 4 files changed, 18 insertions(+), 2 deletions(-) diff --git a/arch/arm/configs/omap3_beagle_defconfig b/arch/arm/configs/omap3_beagle_defconfig index cef7597..6e8d50c 100644 --- a/arch/arm/configs/omap3_beagle_defconfig +++ b/arch/arm/configs/omap3_beagle_defconfig @@ -97,6 +97,7 @@ CONFIG_MACH_OMAP3_BEAGLE=y # CONFIG_MACH_OMAP_3630SDP is not set # CONFIG_OMAP3_EMU is not set # CONFIG_OMAP3_SDRC_AC_TIMING is not set +CONFIG_OMAP3_PM_DISABLE_VT_SWITCH=y # # Processor Features @@ -504,7 +505,7 @@ CONFIG_USB_ETH=y CONFIG_USB_ETH_RNDIS=y CONFIG_MMC=y # CONFIG_MMC_DEBUG is not set -# CONFIG_MMC_UNSAFE_RESUME is not set +CONFIG_MMC_UNSAFE_RESUME=y # # MMC/SD/SDIO Card Drivers diff --git a/arch/arm/configs/omap3_evm_defconfig b/arch/arm/configs/omap3_evm_defconfig index 675ae9c..8db3574 100644 --- a/arch/arm/configs/omap3_evm_defconfig +++ b/arch/arm/configs/omap3_evm_defconfig @@ -97,6 +97,7 @@ CONFIG_MACH_OMAP3EVM=y # CONFIG_MACH_OMAP_3630SDP is not set # CONFIG_OMAP3_EMU is not set # CONFIG_OMAP3_SDRC_AC_TIMING is not set +CONFIG_OMAP3_PM_DISABLE_VT_SWITCH=y # # Processor Features @@ -557,7 +558,7 @@ CONFIG_USB_ETH=y CONFIG_USB_ETH_RNDIS=y CONFIG_MMC=y # CONFIG_MMC_DEBUG is not set -# CONFIG_MMC_UNSAFE_RESUME is not set +CONFIG_MMC_UNSAFE_RESUME=y # # MMC/SD/SDIO Card Drivers diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig index dfa5464..43dc070 100644 --- a/arch/arm/mach-omap2/Kconfig +++ b/arch/arm/mach-omap2/Kconfig @@ -338,6 +338,16 @@ config OMAP3_EMU help Say Y here to enable debugging hardware of omap3 +config OMAP3_PM_DISABLE_VT_SWITCH + bool "OMAP3 Disable PM Console Switch" + depends on ARCH_OMAP3 + default y + help + This option disables the default PM VT switch behavior for OMAP3. + Some platforms hang during suspend due to a failed attempt to + perform the VT switch. The VT switch is unnecessary on many + platforms. + config OMAP3_SDRC_AC_TIMING bool "Enable SDRC AC timing register changes" depends on ARCH_OMAP3 diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index 242babc..1d23b55 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c @@ -1072,6 +1072,10 @@ static int __init omap3_pm_init(void) printk(KERN_ERR "Power Management for TI OMAP3.\n"); +#ifdef CONFIG_OMAP3_PM_DISABLE_VT_SWITCH + pm_set_vt_switch(0); +#endif + /* XXX prcm_setup_regs needs to be before enabling hw * supervised mode for powerdomains */ prcm_setup_regs(); -- 1.7.0.4