Skip to content

Commit 71065d3

Browse files
committed
ARM: OMAP2+: Configure voltage controller for retention
Similar to existing omap3_vc_set_pmic_signaling(), let's add omap4 specific omap4_vc_set_pmic_signaling(). This allows the configured devices to enable voltage controller for retention later on during init. Cc: Merlijn Wajer <merlijn@wizzup.org> Cc: Pavel Machek <pavel@ucw.cz> Cc: Sebastian Reichel <sre@kernel.org> Signed-off-by: Tony Lindgren <tony@atomide.com>
1 parent 821093e commit 71065d3

File tree

2 files changed

+30
-4
lines changed

2 files changed

+30
-4
lines changed

arch/arm/mach-omap2/vc.c

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,21 @@
3636
#define OMAP4430_AUTO_CTRL_VDD_CORE(x) ((x) << 0)
3737
#define OMAP4430_AUTO_CTRL_VDD_RET 2
3838

39-
#define OMAP4_VDD_DEFAULT_VAL \
39+
#define OMAP4430_VDD_I2C_DISABLE_MASK \
4040
(OMAP4430_VDD_IVA_I2C_DISABLE | \
41-
OMAP4430_VDD_MPU_I2C_DISABLE | \
42-
OMAP4430_VDD_CORE_I2C_DISABLE | \
41+
OMAP4430_VDD_MPU_I2C_DISABLE | \
42+
OMAP4430_VDD_CORE_I2C_DISABLE)
43+
44+
#define OMAP4_VDD_DEFAULT_VAL \
45+
(OMAP4430_VDD_I2C_DISABLE_MASK | \
4346
OMAP4430_VDD_IVA_PRESENCE | OMAP4430_VDD_MPU_PRESENCE | \
4447
OMAP4430_AUTO_CTRL_VDD_IVA(OMAP4430_AUTO_CTRL_VDD_RET) | \
4548
OMAP4430_AUTO_CTRL_VDD_MPU(OMAP4430_AUTO_CTRL_VDD_RET) | \
4649
OMAP4430_AUTO_CTRL_VDD_CORE(OMAP4430_AUTO_CTRL_VDD_RET))
4750

51+
#define OMAP4_VDD_RET_VAL \
52+
(OMAP4_VDD_DEFAULT_VAL & ~OMAP4430_VDD_I2C_DISABLE_MASK)
53+
4854
/**
4955
* struct omap_vc_channel_cfg - describe the cfg_channel bitfield
5056
* @sa: bit for slave address
@@ -299,6 +305,26 @@ void omap3_vc_set_pmic_signaling(int core_next_state)
299305
}
300306
}
301307

308+
void omap4_vc_set_pmic_signaling(int core_next_state)
309+
{
310+
struct voltagedomain *vd = vc.vd;
311+
u32 val;
312+
313+
if (!vd)
314+
return;
315+
316+
switch (core_next_state) {
317+
case PWRDM_POWER_RET:
318+
val = OMAP4_VDD_RET_VAL;
319+
break;
320+
default:
321+
val = OMAP4_VDD_DEFAULT_VAL;
322+
break;
323+
}
324+
325+
vd->write(val, OMAP4_PRM_VOLTCTRL_OFFSET);
326+
}
327+
302328
/*
303329
* Configure signal polarity for sys_clkreq and sys_off_mode pins
304330
* as the default values are wrong and can cause the system to hang

arch/arm/mach-omap2/vc.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ extern struct omap_vc_param omap4_iva_vc_data;
117117
extern struct omap_vc_param omap4_core_vc_data;
118118

119119
void omap3_vc_set_pmic_signaling(int core_next_state);
120-
120+
void omap4_vc_set_pmic_signaling(int core_next_state);
121121

122122
void omap_vc_init_channel(struct voltagedomain *voltdm);
123123
int omap_vc_pre_scale(struct voltagedomain *voltdm,

0 commit comments

Comments
 (0)