Skip to content

Commit

Permalink
+ pm-exynos4.c: testing3 [do not merge]
Browse files Browse the repository at this point in the history
  • Loading branch information
voku committed Apr 27, 2012
1 parent 306e9c9 commit 0446976
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 30 deletions.
6 changes: 3 additions & 3 deletions arch/arm/configs/voku_defconfig
Expand Up @@ -37,7 +37,7 @@ CONFIG_IRQ_WORK=y
CONFIG_EXPERIMENTAL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_CROSS_COMPILE=""
CONFIG_LOCALVERSION="-Voku-V2.2"
CONFIG_LOCALVERSION="-Voku-V2.3"
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_HAVE_KERNEL_GZIP=y
CONFIG_HAVE_KERNEL_LZMA=y
Expand Down Expand Up @@ -662,14 +662,14 @@ CONFIG_CPU_FREQ_STAT=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_ADAPTIVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_LULZACTIVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_SAKURACTIVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_LAGFREE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_WHEATLEY is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_LAZY is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_LAZY=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_SMARTASS2 is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_BRAZILIANWAX is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_INTERACTIVEX is not set
Expand Down
104 changes: 77 additions & 27 deletions arch/arm/mach-exynos/pm-exynos4.c
Expand Up @@ -59,7 +59,24 @@ static struct sleep_save exynos4_set_clksrc[] = {
};

static struct sleep_save exynos4210_set_clksrc[] = {
{ .reg = EXYNOS4_CLKSRC_DMC , .val = 0x00010000, },
{ .reg = EXYNOS4_CLKSRC_CAM , .val = 0x11111111, },
{ .reg = EXYNOS4_CLKSRC_LCD0 , .val = 0x00001111, },
{ .reg = EXYNOS4_CLKSRC_LCD1 , .val = 0x00001111, },
{ .reg = EXYNOS4_CLKSRC_FSYS , .val = 0x00011111, },
{ .reg = EXYNOS4_CLKSRC_PERIL0 , .val = 0x01111111, },
{ .reg = EXYNOS4_CLKSRC_PERIL1 , .val = 0x01110055, },
{ .reg = EXYNOS4_CLKSRC_MAUDIO , .val = 0x00000006, },
{ .reg = EXYNOS4_CLKSRC_MASK_TOP , .val = 0x00000001, },
{ .reg = EXYNOS4_CLKSRC_MASK_CAM , .val = 0x11111111, },
{ .reg = EXYNOS4_CLKSRC_MASK_TV , .val = 0x00000111, },
{ .reg = EXYNOS4_CLKSRC_MASK_LCD0 , .val = 0x00001111, },
{ .reg = EXYNOS4_CLKSRC_MASK_LCD1 , .val = 0x00001111, },
{ .reg = EXYNOS4_CLKSRC_MASK_MAUDIO , .val = 0x00000001, },
{ .reg = EXYNOS4_CLKSRC_MASK_FSYS , .val = 0x01011111, },
{ .reg = EXYNOS4_CLKSRC_MASK_PERIL0 , .val = 0x01111111, },
{ .reg = EXYNOS4_CLKSRC_MASK_PERIL1 , .val = 0x01110111, },
{ .reg = EXYNOS4_CLKSRC_MASK_DMC , .val = 0x00010000, },
};

static struct sleep_save exynos4_core_save[] = {
Expand Down Expand Up @@ -222,31 +239,64 @@ static struct sleep_save exynos4_regs_save[] = {
};

static struct sleep_save exynos4210_regs_save[] = {
/* SROM side */
SAVE_ITEM(S5P_SROM_BW),
SAVE_ITEM(S5P_SROM_BC0),
SAVE_ITEM(S5P_SROM_BC1),
SAVE_ITEM(S5P_SROM_BC2),
SAVE_ITEM(S5P_SROM_BC3),
/* GPIO Part1 */
SAVE_ITEM(S5P_VA_GPIO + 0x71C),
SAVE_ITEM(S5P_VA_GPIO + 0x720),
SAVE_ITEM(S5P_VA_GPIO + 0x724),
SAVE_ITEM(S5P_VA_GPIO + 0x728),
SAVE_ITEM(S5P_VA_GPIO + 0x72C),
SAVE_ITEM(S5P_VA_GPIO + 0x91C),
SAVE_ITEM(S5P_VA_GPIO + 0x920),
SAVE_ITEM(S5P_VA_GPIO + 0x924),
SAVE_ITEM(S5P_VA_GPIO + 0x928),
SAVE_ITEM(S5P_VA_GPIO + 0x92C),
/* GPIO Part2 */
SAVE_ITEM(S5P_VA_GPIO2 + 0x700),
SAVE_ITEM(S5P_VA_GPIO2 + 0x704),
SAVE_ITEM(S5P_VA_GPIO2 + 0x900),
SAVE_ITEM(S5P_VA_GPIO2 + 0x904),
/* SROM side */
SAVE_ITEM(S5P_SROM_BW),
SAVE_ITEM(S5P_SROM_BC0),
SAVE_ITEM(S5P_SROM_BC1),
SAVE_ITEM(S5P_SROM_BC2),
SAVE_ITEM(S5P_SROM_BC3),
SAVE_ITEM(S5P_VA_GPIO + 0x700),
SAVE_ITEM(S5P_VA_GPIO + 0x704),
SAVE_ITEM(S5P_VA_GPIO + 0x708),
SAVE_ITEM(S5P_VA_GPIO + 0x70C),
SAVE_ITEM(S5P_VA_GPIO + 0x710),
SAVE_ITEM(S5P_VA_GPIO + 0x714),
SAVE_ITEM(S5P_VA_GPIO + 0x718),
SAVE_ITEM(S5P_VA_GPIO + 0x71C),
SAVE_ITEM(S5P_VA_GPIO + 0x720),
SAVE_ITEM(S5P_VA_GPIO + 0x724),
SAVE_ITEM(S5P_VA_GPIO + 0x728),
SAVE_ITEM(S5P_VA_GPIO + 0x72C),
SAVE_ITEM(S5P_VA_GPIO + 0x730),
SAVE_ITEM(S5P_VA_GPIO + 0x734),
SAVE_ITEM(S5P_VA_GPIO + 0x738),
SAVE_ITEM(S5P_VA_GPIO + 0x73C),
SAVE_ITEM(S5P_VA_GPIO + 0x900),
SAVE_ITEM(S5P_VA_GPIO + 0x904),
SAVE_ITEM(S5P_VA_GPIO + 0x908),
SAVE_ITEM(S5P_VA_GPIO + 0x90C),
SAVE_ITEM(S5P_VA_GPIO + 0x910),
SAVE_ITEM(S5P_VA_GPIO + 0x914),
SAVE_ITEM(S5P_VA_GPIO + 0x918),
SAVE_ITEM(S5P_VA_GPIO + 0x91C),
SAVE_ITEM(S5P_VA_GPIO + 0x920),
SAVE_ITEM(S5P_VA_GPIO + 0x924),
SAVE_ITEM(S5P_VA_GPIO + 0x928),
SAVE_ITEM(S5P_VA_GPIO + 0x92C),
SAVE_ITEM(S5P_VA_GPIO + 0x930),
SAVE_ITEM(S5P_VA_GPIO + 0x934),
SAVE_ITEM(S5P_VA_GPIO + 0x938),
SAVE_ITEM(S5P_VA_GPIO + 0x93C),
SAVE_ITEM(S5P_VA_GPIO2 + 0x700),
SAVE_ITEM(S5P_VA_GPIO2 + 0x704),
SAVE_ITEM(S5P_VA_GPIO2 + 0x708),
SAVE_ITEM(S5P_VA_GPIO2 + 0x70C),
SAVE_ITEM(S5P_VA_GPIO2 + 0x710),
SAVE_ITEM(S5P_VA_GPIO2 + 0x714),
SAVE_ITEM(S5P_VA_GPIO2 + 0x718),
SAVE_ITEM(S5P_VA_GPIO2 + 0x71C),
SAVE_ITEM(S5P_VA_GPIO2 + 0x720),
SAVE_ITEM(S5P_VA_GPIO2 + 0x900),
SAVE_ITEM(S5P_VA_GPIO2 + 0x904),
SAVE_ITEM(S5P_VA_GPIO2 + 0x908),
SAVE_ITEM(S5P_VA_GPIO2 + 0x90C),
SAVE_ITEM(S5P_VA_GPIO2 + 0x910),
SAVE_ITEM(S5P_VA_GPIO2 + 0x914),
SAVE_ITEM(S5P_VA_GPIO2 + 0x918),
SAVE_ITEM(S5P_VA_GPIO2 + 0x91C),
SAVE_ITEM(S5P_VA_GPIO2 + 0x920),
};


static struct sleep_save exynos4x12_regs_save[] = {
/* SROM side */
SAVE_ITEM(S5P_SROM_BW),
Expand Down Expand Up @@ -330,6 +380,7 @@ void exynos4_cpu_suspend(void)
#ifdef CONFIG_ARM_TRUSTZONE
exynos_smc(SMC_CMD_SLEEP, 0, 0, 0);
#else

/*
* Setting Central Sequence Register for power down mode
*/
Expand All @@ -348,6 +399,7 @@ void exynos4_cpu_suspend(void)
__raw_writel(tmp, S5P_CENTRAL_SEQ_CONFIGURATION);
#endif
}
EXPORT_SYMBOL(exynos4_cpu_suspend);

static int exynos4_pm_prepare(void)
{
Expand Down Expand Up @@ -383,10 +435,10 @@ static void exynos4_cpu_prepare(void)

/* Before enter central sequence mode, clock src register have to set */

s3c_pm_do_restore_core(exynos4_set_clksrc, ARRAY_SIZE(exynos4_set_clksrc));

if (soc_is_exynos4210())
s3c_pm_do_restore_core(exynos4210_set_clksrc, ARRAY_SIZE(exynos4210_set_clksrc));
else
s3c_pm_do_restore_core(exynos4_set_clksrc, ARRAY_SIZE(exynos4_set_clksrc));
}

static int exynos4_pm_add(struct sys_device *sysdev)
Expand All @@ -395,9 +447,7 @@ static int exynos4_pm_add(struct sys_device *sysdev)
pm_cpu_sleep = exynos4_cpu_suspend;

pm_prepare = exynos4_pm_prepare;
#ifdef CONFIG_SLP
pm_finish = exynos4_pm_finish;
#endif

return 0;
}
Expand Down

0 comments on commit 0446976

Please sign in to comment.