[CPUFREQ] ARM Exynos4210 PM/Suspend compatibility with different bootloaders
authorMyungJoo Ham <myungjoo.ham@samsung.com>
Thu, 18 Aug 2011 10:45:16 +0000 (19:45 +0900)
committerDave Jones <davej@redhat.com>
Wed, 26 Oct 2011 21:19:46 +0000 (17:19 -0400)
commit0073f538c1c35f996982b583f5de7a6a43408b9b
tree035c9975f1d65d265ae4165f31b31325fe269dfd
parent8efd072b32d67436413e98e25e9a316216e88900
[CPUFREQ] ARM Exynos4210 PM/Suspend compatibility with different bootloaders

We have various bootloaders for Exynos4210 machines. Some of they
set the ARM core frequency at boot time even when the boot is a resume
from suspend-to-RAM. Such changes may create inconsistency in the
data of CPUFREQ driver and have incurred hang issues with suspend-to-RAM.

This patch enables to save and restore CPU frequencies with pm-notifier and
sets the frequency at the initial (boot-time) value so that there wouldn't
be any inconsistency between bootloader and kernel. This patch does not
use CPUFREQ's suspend/resume callbacks because they are syscore-ops, which
do not allow to use mutex that is being used by regulators that are used by
the target function.

This also prevents any CPUFREQ transitions during suspend-resume context,
which could be dangerous at noirq-context along with regulator framework.

Signed-off-by: MyungJoo Ham <myungjoo.ham@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Dave Jones <davej@redhat.com>
drivers/cpufreq/exynos4210-cpufreq.c