Re: [PATCH] ARM: Exynos: remove arm diagnostic and power register save/restore code

2014-08-19 Thread Chander Kashyap
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

2014-08-19 Thread Bartlomiej Zolnierkiewicz

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

2014-08-11 Thread Chander Kashyap
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