Re: [PATCH] ARM: Exynos: remove arm diagnostic and power register save/restore code
On Mon, Aug 11, 2014 at 11:52 AM, Chander Kashyap k.chan...@samsung.com wrote: As save/restore of arm diagnostic and power registers is handled by generic code, so remove the same. Signed-off-by: Chander Kashyap k.chan...@samsung.com --- arch/arm/mach-exynos/pm.c | 54 ++--- 1 file changed, 2 insertions(+), 52 deletions(-) diff --git a/arch/arm/mach-exynos/pm.c b/arch/arm/mach-exynos/pm.c index 18646b7..af99c55 100644 --- a/arch/arm/mach-exynos/pm.c +++ b/arch/arm/mach-exynos/pm.c @@ -134,45 +134,6 @@ void exynos_enter_aftr(void) exynos_sys_powerdown_conf(SYS_AFTR); } -/* For Cortex-A9 Diagnostic and Power control register */ -static unsigned int save_arm_register[2]; - -static void exynos_cpu_save_register(void) -{ - unsigned long tmp; - - /* Save Power control register */ - asm (mrc p15, 0, %0, c15, c0, 0 -: =r (tmp) : : cc); - - save_arm_register[0] = tmp; - - /* Save Diagnostic register */ - asm (mrc p15, 0, %0, c15, c0, 1 -: =r (tmp) : : cc); - - save_arm_register[1] = tmp; -} - -static void exynos_cpu_restore_register(void) -{ - unsigned long tmp; - - /* Restore Power control register */ - tmp = save_arm_register[0]; - - asm volatile (mcr p15, 0, %0, c15, c0, 0 - : : r (tmp) - : cc); - - /* Restore Diagnostic register */ - tmp = save_arm_register[1]; - - asm volatile (mcr p15, 0, %0, c15, c0, 1 - : : r (tmp) - : cc); -} - static int exynos_cpu_suspend(unsigned long arg) { #ifdef CONFIG_CACHE_L2X0 @@ -238,9 +199,6 @@ static int exynos_pm_suspend(void) tmp = (S5P_USE_STANDBY_WFI0 | S5P_USE_STANDBY_WFE0); pmu_raw_writel(tmp, S5P_CENTRAL_SEQ_OPTION); - if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) - exynos_cpu_save_register(); - return 0; } @@ -272,9 +230,6 @@ static void exynos_pm_resume(void) if (exynos_pm_central_resume()) goto early_wakeup; - if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) - exynos_cpu_restore_register(); - /* For release retention */ pmu_raw_writel((1 28), S5P_PAD_RET_MAUDIO_OPTION); @@ -376,19 +331,14 @@ static int exynos_cpu_pm_notifier(struct notifier_block *self, switch (cmd) { case CPU_PM_ENTER: - if (cpu == 0) { + if (cpu == 0) exynos_pm_central_suspend(); - if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) - exynos_cpu_save_register(); - } break; case CPU_PM_EXIT: if (cpu == 0) { - if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) { + if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) scu_enable(S5P_VA_SCU); - exynos_cpu_restore_register(); - } exynos_pm_central_resume(); } break; Hi Kukjin, Can you take this patch? -- 1.7.9.5 -- To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH] ARM: Exynos: remove arm diagnostic and power register save/restore code
Hi, On Tuesday, August 19, 2014 02:58:31 PM Chander Kashyap wrote: On Mon, Aug 11, 2014 at 11:52 AM, Chander Kashyap k.chan...@samsung.com wrote: As save/restore of arm diagnostic and power registers is handled by generic code, so remove the same. Signed-off-by: Chander Kashyap k.chan...@samsung.com --- arch/arm/mach-exynos/pm.c | 54 ++--- 1 file changed, 2 insertions(+), 52 deletions(-) diff --git a/arch/arm/mach-exynos/pm.c b/arch/arm/mach-exynos/pm.c index 18646b7..af99c55 100644 --- a/arch/arm/mach-exynos/pm.c +++ b/arch/arm/mach-exynos/pm.c @@ -134,45 +134,6 @@ void exynos_enter_aftr(void) exynos_sys_powerdown_conf(SYS_AFTR); } -/* For Cortex-A9 Diagnostic and Power control register */ -static unsigned int save_arm_register[2]; - -static void exynos_cpu_save_register(void) -{ - unsigned long tmp; - - /* Save Power control register */ - asm (mrc p15, 0, %0, c15, c0, 0 -: =r (tmp) : : cc); - - save_arm_register[0] = tmp; - - /* Save Diagnostic register */ - asm (mrc p15, 0, %0, c15, c0, 1 -: =r (tmp) : : cc); - - save_arm_register[1] = tmp; -} - -static void exynos_cpu_restore_register(void) -{ - unsigned long tmp; - - /* Restore Power control register */ - tmp = save_arm_register[0]; - - asm volatile (mcr p15, 0, %0, c15, c0, 0 - : : r (tmp) - : cc); - - /* Restore Diagnostic register */ - tmp = save_arm_register[1]; - - asm volatile (mcr p15, 0, %0, c15, c0, 1 - : : r (tmp) - : cc); -} - static int exynos_cpu_suspend(unsigned long arg) { #ifdef CONFIG_CACHE_L2X0 @@ -238,9 +199,6 @@ static int exynos_pm_suspend(void) tmp = (S5P_USE_STANDBY_WFI0 | S5P_USE_STANDBY_WFE0); pmu_raw_writel(tmp, S5P_CENTRAL_SEQ_OPTION); - if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) - exynos_cpu_save_register(); - return 0; } @@ -272,9 +230,6 @@ static void exynos_pm_resume(void) if (exynos_pm_central_resume()) goto early_wakeup; - if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) - exynos_cpu_restore_register(); - /* For release retention */ pmu_raw_writel((1 28), S5P_PAD_RET_MAUDIO_OPTION); @@ -376,19 +331,14 @@ static int exynos_cpu_pm_notifier(struct notifier_block *self, switch (cmd) { case CPU_PM_ENTER: - if (cpu == 0) { + if (cpu == 0) exynos_pm_central_suspend(); - if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) - exynos_cpu_save_register(); - } break; case CPU_PM_EXIT: if (cpu == 0) { - if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) { + if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) scu_enable(S5P_VA_SCU); - exynos_cpu_restore_register(); - } exynos_pm_central_resume(); } break; Hi Kukjin, Can you take this patch? Your cleanup patch won't apply to the current kernels becaouse exynos_cpu_pm_notifier() has been removed. Please resfresh it. While refreshing it please rebase it on top of my PM_SLEEP=n build fixes: http://www.mail-archive.com/linux-samsung-soc@vger.kernel.org/msg35430.html Please also update patch description to point to the generic code that does arm diagnostic and power register save/restore code. Best regards, -- Bartlomiej Zolnierkiewicz Samsung RD Institute Poland Samsung Electronics -- To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH] ARM: Exynos: remove arm diagnostic and power register save/restore code
As save/restore of arm diagnostic and power registers is handled by generic code, so remove the same. Signed-off-by: Chander Kashyap k.chan...@samsung.com --- arch/arm/mach-exynos/pm.c | 54 ++--- 1 file changed, 2 insertions(+), 52 deletions(-) diff --git a/arch/arm/mach-exynos/pm.c b/arch/arm/mach-exynos/pm.c index 18646b7..af99c55 100644 --- a/arch/arm/mach-exynos/pm.c +++ b/arch/arm/mach-exynos/pm.c @@ -134,45 +134,6 @@ void exynos_enter_aftr(void) exynos_sys_powerdown_conf(SYS_AFTR); } -/* For Cortex-A9 Diagnostic and Power control register */ -static unsigned int save_arm_register[2]; - -static void exynos_cpu_save_register(void) -{ - unsigned long tmp; - - /* Save Power control register */ - asm (mrc p15, 0, %0, c15, c0, 0 -: =r (tmp) : : cc); - - save_arm_register[0] = tmp; - - /* Save Diagnostic register */ - asm (mrc p15, 0, %0, c15, c0, 1 -: =r (tmp) : : cc); - - save_arm_register[1] = tmp; -} - -static void exynos_cpu_restore_register(void) -{ - unsigned long tmp; - - /* Restore Power control register */ - tmp = save_arm_register[0]; - - asm volatile (mcr p15, 0, %0, c15, c0, 0 - : : r (tmp) - : cc); - - /* Restore Diagnostic register */ - tmp = save_arm_register[1]; - - asm volatile (mcr p15, 0, %0, c15, c0, 1 - : : r (tmp) - : cc); -} - static int exynos_cpu_suspend(unsigned long arg) { #ifdef CONFIG_CACHE_L2X0 @@ -238,9 +199,6 @@ static int exynos_pm_suspend(void) tmp = (S5P_USE_STANDBY_WFI0 | S5P_USE_STANDBY_WFE0); pmu_raw_writel(tmp, S5P_CENTRAL_SEQ_OPTION); - if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) - exynos_cpu_save_register(); - return 0; } @@ -272,9 +230,6 @@ static void exynos_pm_resume(void) if (exynos_pm_central_resume()) goto early_wakeup; - if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) - exynos_cpu_restore_register(); - /* For release retention */ pmu_raw_writel((1 28), S5P_PAD_RET_MAUDIO_OPTION); @@ -376,19 +331,14 @@ static int exynos_cpu_pm_notifier(struct notifier_block *self, switch (cmd) { case CPU_PM_ENTER: - if (cpu == 0) { + if (cpu == 0) exynos_pm_central_suspend(); - if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) - exynos_cpu_save_register(); - } break; case CPU_PM_EXIT: if (cpu == 0) { - if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) { + if (read_cpuid_part() == ARM_CPU_PART_CORTEX_A9) scu_enable(S5P_VA_SCU); - exynos_cpu_restore_register(); - } exynos_pm_central_resume(); } break; -- 1.7.9.5 -- To unsubscribe from this list: send the line unsubscribe linux-samsung-soc in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html