[PATCH 3/5] ARM: EXYNOS4: Add support PM for EXYNOS4212
From: Kukjin Kim <hidden>
Date: 2011-08-25 23:33:02
Also in:
linux-samsung-soc
MyungJoo Ham wrote:
On Wed, Aug 24, 2011 at 10:25 PM, Kukjin Kim [off-list ref]
wrote:
quoted
From: Jonghwan Choi <redacted> This patch moves regarding clock stuff of PM into clock file to support PM on EXYNOS4210 and EXYNOS4212 with one single kernel image. Because some clock registers are different on each SoCs. Signed-off-by: Jonghwan Choi <redacted> Signed-off-by: Kukjin Kim <redacted> --- ?arch/arm/mach-exynos4/clock-exynos4210.c ? ? ? ?| ? 38 ++++++++++ ?arch/arm/mach-exynos4/clock-exynos4212.c ? ? ? ?| ? 34 +++++++++ ?arch/arm/mach-exynos4/clock.c ? ? ? ? ? ? ? ? ? | ? 89+++++++++++++++++++++++quoted
?arch/arm/mach-exynos4/include/mach/regs-clock.h | ? ?4 + ?arch/arm/mach-exynos4/pm.c ? ? ? ? ? ? ? ? ? ? ?| ? 79
++------------------
quoted
?5 files changed, 172 insertions(+), 72 deletions(-)diff --git a/arch/arm/mach-exynos4/clock-exynos4210.c b/arch/arm/mach-exynos4/clock-exynos4210.cquoted
index fe74b91..a4b00b7 100644--- a/arch/arm/mach-exynos4/clock-exynos4210.c +++ b/arch/arm/mach-exynos4/clock-exynos4210.c +static struct sleep_save exynos4210_clock_save[] = { + ? ? ? SAVE_ITEM(S5P_CLKSRC_IMAGE), + ? ? ? SAVE_ITEM(S5P_CLKSRC_LCD1), + ? ? ? SAVE_ITEM(S5P_CLKDIV_IMAGE), + ? ? ? SAVE_ITEM(S5P_CLKDIV_LCD1), + ? ? ? SAVE_ITEM(S5P_CLKSRC_MASK_LCD1), + ? ? ? SAVE_ITEM(S5P_CLKGATE_IP_IMAGE_4210), + ? ? ? SAVE_ITEM(S5P_CLKGATE_IP_LCD1), + ? ? ? SAVE_ITEM(S5P_CLKGATE_IP_PERIR_4210), +}; + --- a/arch/arm/mach-exynos4/clock-exynos4212.c +++ b/arch/arm/mach-exynos4/clock-exynos4212.c +static struct sleep_save exynos4212_clock_save[] = { + ? ? ? SAVE_ITEM(S5P_CLKSRC_IMAGE), + ? ? ? SAVE_ITEM(S5P_CLKDIV_IMAGE), + ? ? ? SAVE_ITEM(S5P_CLKGATE_IP_IMAGE_4212), + ? ? ? SAVE_ITEM(S5P_CLKGATE_IP_PERIR_4212), +}; + --- a/arch/arm/mach-exynos4/clock.c +++ b/arch/arm/mach-exynos4/clock.c +static struct sleep_save exynos4_clock_save[] = {Hello,
Hi,
Is there any reason to have the following two SAVE_ITEM(S5P_CLKSRC_IMAGE), SAVE_ITEM(S5P_CLKDIV_IMAGE defined at both clock-exynos4210.c and clock-exynos4212.c, not defined at clock.c once?
Yes, I know. I just wanted to keep in mind there is a different value(CLKGATE_IP_IMAGE) in regarding IMAGE clocks on each SoCs, and I think need it now. Anyway thanks for your pointing out.
Also, consider using CONFIG_PM_SLEEP rather than CONFIG_PM for suspend/resume ops.
(Cc'ed Rafael)
Well, even though CONFIG_PM_SLEEP is used in regarding syscore_ops, in this
case, using CONFIG_PM looks better.
If ARCH_SUSPEND_POSSIBLE will be selected, then CONFIG_SUSPEND is selected
and CONFIG_PM_SLEEP is selected in kernel/power/Kconfig and of course,
ARCH_SUSPEND_POSSIBLE is selected in arch/arm/Kconfig. However above
everything depends on CONFIG_PM. So I think to use CONFIG_PM is more
reasonable. In addition, it is more popular in other mainline codes now.
Hi Rafael,
How do you think about this?
Its original code is below.
---
#ifdef CONFIG_PM
static int exynos4210_clock_suspend(void)
{
s3c_pm_do_save(exynos4210_clock_save,
ARRAY_SIZE(exynos4210_clock_save));
return 0;
}
static void exynos4210_clock_resume(void)
{
s3c_pm_do_restore_core(exynos4210_clock_save,
ARRAY_SIZE(exynos4210_clock_save));
}
#else
#define exynos4210_clock_suspend NULL
#define exynos4210_clock_resume NULL
#endif
struct syscore_ops exynos4210_clock_syscore_ops = {
.suspend = exynos4210_clock_suspend,
.resume = exynos4210_clock_resume,
};
---
Thanks.
Best regards,
Kgene.
--
Kukjin Kim [off-list ref], Senior Engineer,
SW Solution Development Team, Samsung Electronics Co., Ltd.