[PATCH 2/2] Add early init for voltage controller configuration and off mode polarity.

2008-08-06 Thread Kalle Jokiniemi
From: ext Peter 'p2' De Schrijver [EMAIL PROTECTED]

Signed-off-by: Peter 'p2' De Schrijver [EMAIL PROTECTED]
Signed-off-by: Kalle Jokiniemi [EMAIL PROTECTED]
---
 arch/arm/mach-omap2/pm34xx.c |   12 
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index a6cfc46..fc72c11 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -484,3 +484,15 @@ static void __init configure_vc(void)
 #endif
 
 }
+
+static int __init omap3_pm_early_init(void)
+{
+   prm_clear_mod_reg_bits(OMAP3430_OFFMODE_POL, OMAP3430_GR_MOD,
+   OMAP3_PRM_POLCTRL_OFFSET);
+
+   configure_vc();
+
+   return 0;
+}
+
+arch_initcall(omap3_pm_early_init);
-- 
1.5.4.3

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[PATCH 2/2] Add early init for voltage controller configuration and off mode polarity.

2008-07-31 Thread Peter 'p2' De Schrijver

Signed-off-by: Peter 'p2' De Schrijver [EMAIL PROTECTED]
---
 arch/arm/mach-omap2/pm34xx.c |   71 ++
 1 files changed, 71 insertions(+), 0 deletions(-)

diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c
index 8b6b09e..06eae7e 100644
--- a/arch/arm/mach-omap2/pm34xx.c
+++ b/arch/arm/mach-omap2/pm34xx.c
@@ -46,6 +46,8 @@
 #define OMAP3430_PRM_RSTST  \
OMAP34XX_PRM_REGADDR(OMAP3430_GR_MOD, 0x0058)
 
+#define OFFMODE_POL(1  3)
+
 u32 context_mem[128];
 
 struct power_state {
@@ -707,6 +709,64 @@ static void __init prcm_setup_regs(void)
OCP_MOD, OMAP2_PRM_IRQENABLE_MPU_OFFSET);
 }
 
+static void __init configure_vc(void)
+{
+   prm_write_mod_reg((R_SRI2C_SLAVE_ADDR  OMAP3430_SMPS_SA1_SHIFT) |
+   (R_SRI2C_SLAVE_ADDR  OMAP3430_SMPS_SA0_SHIFT),
+   OMAP3430_GR_MOD, OMAP3_PRM_VC_SMPS_SA_OFFSET);
+
+   prm_write_mod_reg((R_VDD2_SR_CONTROL  OMAP3430_VOLRA1_SHIFT) |
+   (R_VDD1_SR_CONTROL  OMAP3430_VOLRA0_SHIFT),
+   OMAP3430_GR_MOD, OMAP3_PRM_VC_SMPS_VOL_RA_OFFSET);
+
+   prm_write_mod_reg((OMAP3430_VC_CMD_VAL0_ON 
+   OMAP3430_VC_CMD_ON_SHIFT) |
+   (OMAP3430_VC_CMD_VAL0_ONLP  OMAP3430_VC_CMD_ONLP_SHIFT) |
+   (OMAP3430_VC_CMD_VAL0_RET  OMAP3430_VC_CMD_RET_SHIFT) |
+   (OMAP3430_VC_CMD_VAL0_OFF  OMAP3430_VC_CMD_OFF_SHIFT),
+   OMAP3430_GR_MOD, OMAP3_PRM_VC_CMD_VAL_0_OFFSET);
+
+   prm_write_mod_reg((OMAP3430_VC_CMD_VAL1_ON 
+   OMAP3430_VC_CMD_ON_SHIFT) |
+   (OMAP3430_VC_CMD_VAL1_ONLP  OMAP3430_VC_CMD_ONLP_SHIFT) |
+   (OMAP3430_VC_CMD_VAL1_RET  OMAP3430_VC_CMD_RET_SHIFT) |
+   (OMAP3430_VC_CMD_VAL1_OFF  OMAP3430_VC_CMD_OFF_SHIFT),
+   OMAP3430_GR_MOD, OMAP3_PRM_VC_CMD_VAL_1_OFFSET);
+
+   prm_write_mod_reg(OMAP3430_CMD1 | OMAP3430_RAV1,
+   OMAP3430_GR_MOD,
+   OMAP3_PRM_VC_CH_CONF_OFFSET);
+
+   prm_write_mod_reg(OMAP3430_MCODE_SHIFT | OMAP3430_HSEN | OMAP3430_SREN,
+   OMAP3430_GR_MOD,
+   OMAP3_PRM_VC_I2C_CFG_OFFSET);
+
+   /* Setup voltctrl and other setup times */
+
+#ifdef CONFIG_OMAP_SYSOFFMODE
+   prm_write_mod_reg(OMAP3430_AUTO_OFF | OMAP3430_AUTO_RET |
+   OMAP3430_SEL_OFF, OMAP3430_GR_MOD,
+   OMAP3_PRM_VOLTCTRL_OFFSET);
+
+   prm_write_mod_reg(OMAP3430_CLKSETUP_DURATION, OMAP3430_GR_MOD,
+   OMAP3_PRM_CLKSETUP_OFFSET);
+   prm_write_mod_reg((OMAP3430_VOLTSETUP_TIME2 
+   OMAP3430_SETUP_TIME2_SHIFT) |
+   (OMAP3430_VOLTSETUP_TIME1 
+   OMAP3430_SETUP_TIME1_SHIFT),
+   OMAP3430_GR_MOD, OMAP3_PRM_VOLTSETUP1_OFFSET);
+
+   prm_write_mod_reg(OMAP3430_VOLTOFFSET_DURATION, OMAP3430_GR_MOD,
+   OMAP3_PRM_VOLTOFFSET_OFFSET);
+   prm_write_mod_reg(OMAP3430_VOLTSETUP2_DURATION, OMAP3430_GR_MOD,
+   OMAP3_PRM_VOLTSETUP2_OFFSET);
+#else
+   prm_set_mod_reg_bits(OMAP3430_AUTO_RET, OMAP3430_GR_MOD,
+   OMAP3_PRM_VOLTCTRL_OFFSET);
+#endif
+
+}
+
 void omap3_save_per_ctx(void)
 {
omap_gpio_save();
@@ -1009,3 +1069,14 @@ void save_scratchpad_contents(void)
*(scratchpad_address++) = (u32) sdram_context_address;
 }
 
+static int __init omap3_pm_early_init(void)
+{
+   prm_clear_mod_reg_bits(OFFMODE_POL, OMAP3430_GR_MOD,
+   OMAP3_PRM_POLCTRL_OFFSET);
+
+   configure_vc();
+
+   return 0;
+}
+
+arch_initcall(omap3_pm_early_init);
-- 
1.5.6.3

--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html