RE: [PATCH] OMAP3: PM: Removing redundant and potentially dangerous PRCM configration

2009-10-16 Thread Gopinath, Thara


-Original Message-
From: linux-omap-ow...@vger.kernel.org 
[mailto:linux-omap-ow...@vger.kernel.org] On Behalf Of
Sripathy, Vishwanath
Sent: Friday, October 16, 2009 4:45 AM
To: Sripathy, Vishwanath; linux-omap@vger.kernel.org; Kevin Hilman
Subject: [PATCH] OMAP3: PM: Removing redundant and potentially dangerous PRCM 
configration

As part of Core domain context restoration while coming out of off mode
there are some registers being restored which are not required to be restored.
ROM code should have restored them already. Overwriting some of them can have
potential side effect. Eg: CM_CLKEN_PLL register should not be written while 
dpll is locked.

Signed-off-by: Vishwanath BS vishwanath...@ti.com
---

diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c
index fb864cc..da16804 100644
--- a/arch/arm/mach-omap2/prcm.c
+++ b/arch/arm/mach-omap2/prcm.c
@@ -279,7 +279,6 @@ void omap3_prcm_save_context(void)
  prcm_context.cm_sysconfig = __raw_readl(OMAP3430_CM_SYSCONFIG);
  prcm_context.sgx_cm_clksel =
   cm_read_mod_reg(OMAP3430ES2_SGX_MOD, CM_CLKSEL);
- prcm_context.wkup_cm_clksel = cm_read_mod_reg(WKUP_MOD, CM_CLKSEL);
  prcm_context.dss_cm_clksel =
   cm_read_mod_reg(OMAP3430_DSS_MOD, CM_CLKSEL);
  prcm_context.cam_cm_clksel =
@@ -296,8 +295,6 @@ void omap3_prcm_save_context(void)
  cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKSEL4);
  prcm_context.pll_cm_clksel5 =
   cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKSEL5);
- prcm_context.pll_cm_clken =
- cm_read_mod_reg(PLL_MOD, CM_CLKEN);
  prcm_context.pll_cm_clken2 =
  cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKEN2);
  prcm_context.cm_polctrl = __raw_readl(OMAP3430_CM_POLCTRL);
@@ -343,8 +340,6 @@ void omap3_prcm_save_context(void)
   cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_AUTOIDLE2);
  prcm_context.mpu_cm_autoidle2 =
   cm_read_mod_reg(MPU_MOD, CM_AUTOIDLE2);
- prcm_context.pll_cm_autoidle =
-  cm_read_mod_reg(PLL_MOD, CM_AUTOIDLE);
  prcm_context.iva2_cm_clkstctrl =
   cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_CLKSTCTRL);
  prcm_context.mpu_cm_clkstctrl =
@@ -436,7 +431,6 @@ void omap3_prcm_restore_context(void)
  __raw_writel(prcm_context.cm_sysconfig, OMAP3430_CM_SYSCONFIG);
  cm_write_mod_reg(prcm_context.sgx_cm_clksel, OMAP3430ES2_SGX_MOD,
   CM_CLKSEL);
- cm_write_mod_reg(prcm_context.wkup_cm_clksel, WKUP_MOD, CM_CLKSEL);
  cm_write_mod_reg(prcm_context.dss_cm_clksel, OMAP3430_DSS_MOD,
   CM_CLKSEL);
  cm_write_mod_reg(prcm_context.cam_cm_clksel, OMAP3430_CAM_MOD,
@@ -453,7 +447,6 @@ void omap3_prcm_restore_context(void)
  OMAP3430ES2_CM_CLKSEL4);
  cm_write_mod_reg(prcm_context.pll_cm_clksel5, PLL_MOD,
   OMAP3430ES2_CM_CLKSEL5);
- cm_write_mod_reg(prcm_context.pll_cm_clken, PLL_MOD, CM_CLKEN);
  cm_write_mod_reg(prcm_context.pll_cm_clken2, PLL_MOD,
  OMAP3430ES2_CM_CLKEN2);
  __raw_writel(prcm_context.cm_polctrl, OMAP3430_CM_POLCTRL);
@@ -492,7 +485,6 @@ void omap3_prcm_restore_context(void)
  cm_write_mod_reg(prcm_context.iva2_cm_autiidle2, OMAP3430_IVA2_MOD,
  CM_AUTOIDLE2);
  cm_write_mod_reg(prcm_context.mpu_cm_autoidle2, MPU_MOD, CM_AUTOIDLE2);
- cm_write_mod_reg(prcm_context.pll_cm_autoidle, PLL_MOD, CM_AUTOIDLE);
  cm_write_mod_reg(prcm_context.iva2_cm_clkstctrl, OMAP3430_IVA2_MOD,
  CM_CLKSTCTRL);
  cm_write_mod_reg(prcm_context.mpu_cm_clkstctrl, MPU_MOD, CM_CLKSTCTRL);

Why not remove these unwanted variables wkup_cm_clksel, pll_cm_clken, 
pll_cm_autoidle from the structure omap3_prcm_regs also?

Regards
Thara
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


RE: [PATCH] OMAP3: PM: Removing redundant and potentially dangerous PRCM configration

2009-10-16 Thread Sripathy, Vishwanath
Yes it can be removed. I will repost the patch with them removed.

Vishwa

-Original Message-
From: Gopinath, Thara 
Sent: Friday, October 16, 2009 6:16 AM
To: Sripathy, Vishwanath; linux-omap@vger.kernel.org; Kevin Hilman
Subject: RE: [PATCH] OMAP3: PM: Removing redundant and potentially dangerous 
PRCM configration



-Original Message-
From: linux-omap-ow...@vger.kernel.org 
[mailto:linux-omap-ow...@vger.kernel.org] On Behalf Of
Sripathy, Vishwanath
Sent: Friday, October 16, 2009 4:45 AM
To: Sripathy, Vishwanath; linux-omap@vger.kernel.org; Kevin Hilman
Subject: [PATCH] OMAP3: PM: Removing redundant and potentially dangerous PRCM 
configration

As part of Core domain context restoration while coming out of off mode
there are some registers being restored which are not required to be restored.
ROM code should have restored them already. Overwriting some of them can have
potential side effect. Eg: CM_CLKEN_PLL register should not be written while 
dpll is locked.

Signed-off-by: Vishwanath BS vishwanath...@ti.com
---

diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c
index fb864cc..da16804 100644
--- a/arch/arm/mach-omap2/prcm.c
+++ b/arch/arm/mach-omap2/prcm.c
@@ -279,7 +279,6 @@ void omap3_prcm_save_context(void)
  prcm_context.cm_sysconfig = __raw_readl(OMAP3430_CM_SYSCONFIG);
  prcm_context.sgx_cm_clksel =
   cm_read_mod_reg(OMAP3430ES2_SGX_MOD, CM_CLKSEL);
- prcm_context.wkup_cm_clksel = cm_read_mod_reg(WKUP_MOD, CM_CLKSEL);
  prcm_context.dss_cm_clksel =
   cm_read_mod_reg(OMAP3430_DSS_MOD, CM_CLKSEL);
  prcm_context.cam_cm_clksel =
@@ -296,8 +295,6 @@ void omap3_prcm_save_context(void)
  cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKSEL4);
  prcm_context.pll_cm_clksel5 =
   cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKSEL5);
- prcm_context.pll_cm_clken =
- cm_read_mod_reg(PLL_MOD, CM_CLKEN);
  prcm_context.pll_cm_clken2 =
  cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKEN2);
  prcm_context.cm_polctrl = __raw_readl(OMAP3430_CM_POLCTRL);
@@ -343,8 +340,6 @@ void omap3_prcm_save_context(void)
   cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_AUTOIDLE2);
  prcm_context.mpu_cm_autoidle2 =
   cm_read_mod_reg(MPU_MOD, CM_AUTOIDLE2);
- prcm_context.pll_cm_autoidle =
-  cm_read_mod_reg(PLL_MOD, CM_AUTOIDLE);
  prcm_context.iva2_cm_clkstctrl =
   cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_CLKSTCTRL);
  prcm_context.mpu_cm_clkstctrl =
@@ -436,7 +431,6 @@ void omap3_prcm_restore_context(void)
  __raw_writel(prcm_context.cm_sysconfig, OMAP3430_CM_SYSCONFIG);
  cm_write_mod_reg(prcm_context.sgx_cm_clksel, OMAP3430ES2_SGX_MOD,
   CM_CLKSEL);
- cm_write_mod_reg(prcm_context.wkup_cm_clksel, WKUP_MOD, CM_CLKSEL);
  cm_write_mod_reg(prcm_context.dss_cm_clksel, OMAP3430_DSS_MOD,
   CM_CLKSEL);
  cm_write_mod_reg(prcm_context.cam_cm_clksel, OMAP3430_CAM_MOD,
@@ -453,7 +447,6 @@ void omap3_prcm_restore_context(void)
  OMAP3430ES2_CM_CLKSEL4);
  cm_write_mod_reg(prcm_context.pll_cm_clksel5, PLL_MOD,
   OMAP3430ES2_CM_CLKSEL5);
- cm_write_mod_reg(prcm_context.pll_cm_clken, PLL_MOD, CM_CLKEN);
  cm_write_mod_reg(prcm_context.pll_cm_clken2, PLL_MOD,
  OMAP3430ES2_CM_CLKEN2);
  __raw_writel(prcm_context.cm_polctrl, OMAP3430_CM_POLCTRL);
@@ -492,7 +485,6 @@ void omap3_prcm_restore_context(void)
  cm_write_mod_reg(prcm_context.iva2_cm_autiidle2, OMAP3430_IVA2_MOD,
  CM_AUTOIDLE2);
  cm_write_mod_reg(prcm_context.mpu_cm_autoidle2, MPU_MOD, CM_AUTOIDLE2);
- cm_write_mod_reg(prcm_context.pll_cm_autoidle, PLL_MOD, CM_AUTOIDLE);
  cm_write_mod_reg(prcm_context.iva2_cm_clkstctrl, OMAP3430_IVA2_MOD,
  CM_CLKSTCTRL);
  cm_write_mod_reg(prcm_context.mpu_cm_clkstctrl, MPU_MOD, CM_CLKSTCTRL);

Why not remove these unwanted variables wkup_cm_clksel, pll_cm_clken, 
pll_cm_autoidle from the structure omap3_prcm_regs also?

Regards
Thara
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] OMAP3: PM: Removing redundant and potentially dangerous PRCM configration

2009-10-15 Thread Sripathy, Vishwanath
As part of Core domain context restoration while coming out of off mode
there are some registers being restored which are not required to be restored.
ROM code should have restored them already. Overwriting some of them can have
potential side effect. Eg: CM_CLKEN_PLL register should not be written while 
dpll is locked.

Signed-off-by: Vishwanath BS vishwanath...@ti.com
---

diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c
index fb864cc..da16804 100644
--- a/arch/arm/mach-omap2/prcm.c
+++ b/arch/arm/mach-omap2/prcm.c
@@ -279,7 +279,6 @@ void omap3_prcm_save_context(void)
prcm_context.cm_sysconfig = __raw_readl(OMAP3430_CM_SYSCONFIG);
prcm_context.sgx_cm_clksel =
 cm_read_mod_reg(OMAP3430ES2_SGX_MOD, CM_CLKSEL);
-   prcm_context.wkup_cm_clksel = cm_read_mod_reg(WKUP_MOD, CM_CLKSEL);
prcm_context.dss_cm_clksel =
 cm_read_mod_reg(OMAP3430_DSS_MOD, CM_CLKSEL);
prcm_context.cam_cm_clksel =
@@ -296,8 +295,6 @@ void omap3_prcm_save_context(void)
cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKSEL4);
prcm_context.pll_cm_clksel5 =
 cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKSEL5);
-   prcm_context.pll_cm_clken =
-   cm_read_mod_reg(PLL_MOD, CM_CLKEN);
prcm_context.pll_cm_clken2 =
cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKEN2);
prcm_context.cm_polctrl = __raw_readl(OMAP3430_CM_POLCTRL);
@@ -343,8 +340,6 @@ void omap3_prcm_save_context(void)
 cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_AUTOIDLE2);
prcm_context.mpu_cm_autoidle2 =
 cm_read_mod_reg(MPU_MOD, CM_AUTOIDLE2);
-   prcm_context.pll_cm_autoidle =
-cm_read_mod_reg(PLL_MOD, CM_AUTOIDLE);
prcm_context.iva2_cm_clkstctrl =
 cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_CLKSTCTRL);
prcm_context.mpu_cm_clkstctrl =
@@ -436,7 +431,6 @@ void omap3_prcm_restore_context(void)
__raw_writel(prcm_context.cm_sysconfig, OMAP3430_CM_SYSCONFIG);
cm_write_mod_reg(prcm_context.sgx_cm_clksel, OMAP3430ES2_SGX_MOD,
 CM_CLKSEL);
-   cm_write_mod_reg(prcm_context.wkup_cm_clksel, WKUP_MOD, CM_CLKSEL);
cm_write_mod_reg(prcm_context.dss_cm_clksel, OMAP3430_DSS_MOD,
 CM_CLKSEL);
cm_write_mod_reg(prcm_context.cam_cm_clksel, OMAP3430_CAM_MOD,
@@ -453,7 +447,6 @@ void omap3_prcm_restore_context(void)
OMAP3430ES2_CM_CLKSEL4);
cm_write_mod_reg(prcm_context.pll_cm_clksel5, PLL_MOD,
 OMAP3430ES2_CM_CLKSEL5);
-   cm_write_mod_reg(prcm_context.pll_cm_clken, PLL_MOD, CM_CLKEN);
cm_write_mod_reg(prcm_context.pll_cm_clken2, PLL_MOD,
OMAP3430ES2_CM_CLKEN2);
__raw_writel(prcm_context.cm_polctrl, OMAP3430_CM_POLCTRL);
@@ -492,7 +485,6 @@ void omap3_prcm_restore_context(void)
cm_write_mod_reg(prcm_context.iva2_cm_autiidle2, OMAP3430_IVA2_MOD,
CM_AUTOIDLE2);
cm_write_mod_reg(prcm_context.mpu_cm_autoidle2, MPU_MOD, CM_AUTOIDLE2);
-   cm_write_mod_reg(prcm_context.pll_cm_autoidle, PLL_MOD, CM_AUTOIDLE);
cm_write_mod_reg(prcm_context.iva2_cm_clkstctrl, OMAP3430_IVA2_MOD,
CM_CLKSTCTRL);
cm_write_mod_reg(prcm_context.mpu_cm_clkstctrl, MPU_MOD, CM_CLKSTCTRL);
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH] OMAP3: PM: Removing redundant and potentially dangerous PRCM configration

2009-10-15 Thread Sripathy, Vishwanath
As part of Core domain context restoration while coming out of off mode
there are some registers being restored which are not required to be restored.
ROM code should have restored them already. Overwriting some of them can have
potential side effect. Eg: CM_CLKEN_PLL register should not be written while 
dpll is locked.

Signed-off-by: Vishwanath BS vishwanath...@ti.com
---

diff --git a/arch/arm/mach-omap2/prcm.c b/arch/arm/mach-omap2/prcm.c
index fb864cc..da16804 100644
--- a/arch/arm/mach-omap2/prcm.c
+++ b/arch/arm/mach-omap2/prcm.c
@@ -279,7 +279,6 @@ void omap3_prcm_save_context(void)
prcm_context.cm_sysconfig = __raw_readl(OMAP3430_CM_SYSCONFIG);
prcm_context.sgx_cm_clksel =
 cm_read_mod_reg(OMAP3430ES2_SGX_MOD, CM_CLKSEL);
-   prcm_context.wkup_cm_clksel = cm_read_mod_reg(WKUP_MOD, CM_CLKSEL);
prcm_context.dss_cm_clksel =
 cm_read_mod_reg(OMAP3430_DSS_MOD, CM_CLKSEL);
prcm_context.cam_cm_clksel =
@@ -296,8 +295,6 @@ void omap3_prcm_save_context(void)
cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKSEL4);
prcm_context.pll_cm_clksel5 =
 cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKSEL5);
-   prcm_context.pll_cm_clken =
-   cm_read_mod_reg(PLL_MOD, CM_CLKEN);
prcm_context.pll_cm_clken2 =
cm_read_mod_reg(PLL_MOD, OMAP3430ES2_CM_CLKEN2);
prcm_context.cm_polctrl = __raw_readl(OMAP3430_CM_POLCTRL);
@@ -343,8 +340,6 @@ void omap3_prcm_save_context(void)
 cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_AUTOIDLE2);
prcm_context.mpu_cm_autoidle2 =
 cm_read_mod_reg(MPU_MOD, CM_AUTOIDLE2);
-   prcm_context.pll_cm_autoidle =
-cm_read_mod_reg(PLL_MOD, CM_AUTOIDLE);
prcm_context.iva2_cm_clkstctrl =
 cm_read_mod_reg(OMAP3430_IVA2_MOD, CM_CLKSTCTRL);
prcm_context.mpu_cm_clkstctrl =
@@ -436,7 +431,6 @@ void omap3_prcm_restore_context(void)
__raw_writel(prcm_context.cm_sysconfig, OMAP3430_CM_SYSCONFIG);
cm_write_mod_reg(prcm_context.sgx_cm_clksel, OMAP3430ES2_SGX_MOD,
 CM_CLKSEL);
-   cm_write_mod_reg(prcm_context.wkup_cm_clksel, WKUP_MOD, CM_CLKSEL);
cm_write_mod_reg(prcm_context.dss_cm_clksel, OMAP3430_DSS_MOD,
 CM_CLKSEL);
cm_write_mod_reg(prcm_context.cam_cm_clksel, OMAP3430_CAM_MOD,
@@ -453,7 +447,6 @@ void omap3_prcm_restore_context(void)
OMAP3430ES2_CM_CLKSEL4);
cm_write_mod_reg(prcm_context.pll_cm_clksel5, PLL_MOD,
 OMAP3430ES2_CM_CLKSEL5);
-   cm_write_mod_reg(prcm_context.pll_cm_clken, PLL_MOD, CM_CLKEN);
cm_write_mod_reg(prcm_context.pll_cm_clken2, PLL_MOD,
OMAP3430ES2_CM_CLKEN2);
__raw_writel(prcm_context.cm_polctrl, OMAP3430_CM_POLCTRL);
@@ -492,7 +485,6 @@ void omap3_prcm_restore_context(void)
cm_write_mod_reg(prcm_context.iva2_cm_autiidle2, OMAP3430_IVA2_MOD,
CM_AUTOIDLE2);
cm_write_mod_reg(prcm_context.mpu_cm_autoidle2, MPU_MOD, CM_AUTOIDLE2);
-   cm_write_mod_reg(prcm_context.pll_cm_autoidle, PLL_MOD, CM_AUTOIDLE);
cm_write_mod_reg(prcm_context.iva2_cm_clkstctrl, OMAP3430_IVA2_MOD,
CM_CLKSTCTRL);
cm_write_mod_reg(prcm_context.mpu_cm_clkstctrl, MPU_MOD, CM_CLKSTCTRL);
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html