[PATCHv5 02/14] arm: omap: voltage: renamed vp_vddmin and vp_vddmax fields
Menon, Nishanth
nm at ti.com
Tue Feb 21 09:40:22 EST 2012
On Tue, Feb 21, 2012 at 08:04, Tero Kristo <t-kristo at ti.com> wrote:
> These are now called vddmin and vddmax, as these fields will be used
> globally for selecting voltage ranges for a pmic channel, and not
> only for voltage processor.
NAK. I think we need to setup voltage for SoC limits as well. the
programmed voltage to the VP register should be:
VP->vlimito->min = MAX(soc->vdd_min, pmic->vdd_min)
VP->vlimito->max = MIN(soc->vdd_max, pmic->vdd_max)
else you could be running the SoC beyond design voltage potentially
damaging the device.
Regards,
Nishanth Menon
>
> Signed-off-by: Tero Kristo <t-kristo at ti.com>
> ---
> arch/arm/mach-omap2/omap_twl.c | 27 ++++++++++-----------------
> arch/arm/mach-omap2/voltage.h | 4 ++--
> arch/arm/mach-omap2/vp.c | 4 ++--
> 3 files changed, 14 insertions(+), 21 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/omap_twl.c b/arch/arm/mach-omap2/omap_twl.c
> index df4e7c3..5224fbd 100644
> --- a/arch/arm/mach-omap2/omap_twl.c
> +++ b/arch/arm/mach-omap2/omap_twl.c
> @@ -149,8 +149,8 @@ static struct omap_voltdm_pmic omap3_mpu_pmic = {
> .vp_erroroffset = OMAP3_VP_CONFIG_ERROROFFSET,
> .vp_vstepmin = OMAP3_VP_VSTEPMIN_VSTEPMIN,
> .vp_vstepmax = OMAP3_VP_VSTEPMAX_VSTEPMAX,
> - .vp_vddmin = OMAP3430_VP1_VLIMITTO_VDDMIN,
> - .vp_vddmax = OMAP3430_VP1_VLIMITTO_VDDMAX,
> + .vddmin = 600000,
> + .vddmax = 1450000,
> .vp_timeout_us = OMAP3_VP_VLIMITTO_TIMEOUT_US,
> .i2c_slave_addr = OMAP3_SRI2C_SLAVE_ADDR,
> .volt_reg_addr = OMAP3_VDD_MPU_SR_CONTROL_REG,
> @@ -170,8 +170,8 @@ static struct omap_voltdm_pmic omap3_core_pmic = {
> .vp_erroroffset = OMAP3_VP_CONFIG_ERROROFFSET,
> .vp_vstepmin = OMAP3_VP_VSTEPMIN_VSTEPMIN,
> .vp_vstepmax = OMAP3_VP_VSTEPMAX_VSTEPMAX,
> - .vp_vddmin = OMAP3430_VP2_VLIMITTO_VDDMIN,
> - .vp_vddmax = OMAP3430_VP2_VLIMITTO_VDDMAX,
> + .vddmin = 600000,
> + .vddmax = 1450000,
> .vp_timeout_us = OMAP3_VP_VLIMITTO_TIMEOUT_US,
> .i2c_slave_addr = OMAP3_SRI2C_SLAVE_ADDR,
> .volt_reg_addr = OMAP3_VDD_CORE_SR_CONTROL_REG,
> @@ -191,8 +191,8 @@ static struct omap_voltdm_pmic omap4_mpu_pmic = {
> .vp_erroroffset = OMAP4_VP_CONFIG_ERROROFFSET,
> .vp_vstepmin = OMAP4_VP_VSTEPMIN_VSTEPMIN,
> .vp_vstepmax = OMAP4_VP_VSTEPMAX_VSTEPMAX,
> - .vp_vddmin = OMAP4_VP_MPU_VLIMITTO_VDDMIN,
> - .vp_vddmax = OMAP4_VP_MPU_VLIMITTO_VDDMAX,
> + .vddmin = 0,
> + .vddmax = 1500000,
> .vp_timeout_us = OMAP4_VP_VLIMITTO_TIMEOUT_US,
> .i2c_slave_addr = OMAP4_SRI2C_SLAVE_ADDR,
> .volt_reg_addr = OMAP4_VDD_MPU_SR_VOLT_REG,
> @@ -213,8 +213,8 @@ static struct omap_voltdm_pmic omap4_iva_pmic = {
> .vp_erroroffset = OMAP4_VP_CONFIG_ERROROFFSET,
> .vp_vstepmin = OMAP4_VP_VSTEPMIN_VSTEPMIN,
> .vp_vstepmax = OMAP4_VP_VSTEPMAX_VSTEPMAX,
> - .vp_vddmin = OMAP4_VP_IVA_VLIMITTO_VDDMIN,
> - .vp_vddmax = OMAP4_VP_IVA_VLIMITTO_VDDMAX,
> + .vddmin = 0,
> + .vddmax = 1500000,
> .vp_timeout_us = OMAP4_VP_VLIMITTO_TIMEOUT_US,
> .i2c_slave_addr = OMAP4_SRI2C_SLAVE_ADDR,
> .volt_reg_addr = OMAP4_VDD_IVA_SR_VOLT_REG,
> @@ -235,8 +235,8 @@ static struct omap_voltdm_pmic omap4_core_pmic = {
> .vp_erroroffset = OMAP4_VP_CONFIG_ERROROFFSET,
> .vp_vstepmin = OMAP4_VP_VSTEPMIN_VSTEPMIN,
> .vp_vstepmax = OMAP4_VP_VSTEPMAX_VSTEPMAX,
> - .vp_vddmin = OMAP4_VP_CORE_VLIMITTO_VDDMIN,
> - .vp_vddmax = OMAP4_VP_CORE_VLIMITTO_VDDMAX,
> + .vddmin = 0,
> + .vddmax = 1500000,
> .vp_timeout_us = OMAP4_VP_VLIMITTO_TIMEOUT_US,
> .i2c_slave_addr = OMAP4_SRI2C_SLAVE_ADDR,
> .volt_reg_addr = OMAP4_VDD_CORE_SR_VOLT_REG,
> @@ -271,13 +271,6 @@ int __init omap3_twl_init(void)
> if (!cpu_is_omap34xx())
> return -ENODEV;
>
> - if (cpu_is_omap3630()) {
> - omap3_mpu_pmic.vp_vddmin = OMAP3630_VP1_VLIMITTO_VDDMIN;
> - omap3_mpu_pmic.vp_vddmax = OMAP3630_VP1_VLIMITTO_VDDMAX;
> - omap3_core_pmic.vp_vddmin = OMAP3630_VP2_VLIMITTO_VDDMIN;
> - omap3_core_pmic.vp_vddmax = OMAP3630_VP2_VLIMITTO_VDDMAX;
> - }
> -
> /*
> * The smartreflex bit on twl4030 specifies if the setting of voltage
> * is done over the I2C_SR path. Since this setting is independent of
> diff --git a/arch/arm/mach-omap2/voltage.h b/arch/arm/mach-omap2/voltage.h
> index fa5b3dc..949938d 100644
> --- a/arch/arm/mach-omap2/voltage.h
> +++ b/arch/arm/mach-omap2/voltage.h
> @@ -162,8 +162,8 @@ struct omap_voltdm_pmic {
> u8 vp_erroroffset;
> u8 vp_vstepmin;
> u8 vp_vstepmax;
> - u32 vp_vddmin;
> - u32 vp_vddmax;
> + u32 vddmin;
> + u32 vddmax;
> u8 vp_timeout_us;
> bool i2c_high_speed;
> u8 i2c_mcode;
> diff --git a/arch/arm/mach-omap2/vp.c b/arch/arm/mach-omap2/vp.c
> index 6ee0b4a..d9e0650 100644
> --- a/arch/arm/mach-omap2/vp.c
> +++ b/arch/arm/mach-omap2/vp.c
> @@ -53,8 +53,8 @@ void __init omap_vp_init(struct voltagedomain *voltdm)
> sys_clk_rate = voltdm->sys_clk.rate / 1000;
>
> timeout = (sys_clk_rate * voltdm->pmic->vp_timeout_us) / 1000;
> - vddmin = voltdm->pmic->uv_to_vsel(voltdm->pmic->vp_vddmin);
> - vddmax = voltdm->pmic->uv_to_vsel(voltdm->pmic->vp_vddmax);
> + vddmin = voltdm->pmic->uv_to_vsel(voltdm->pmic->vddmin);
> + vddmax = voltdm->pmic->uv_to_vsel(voltdm->pmic->vddmax);
>
> waittime = ((voltdm->pmic->step_size / voltdm->pmic->slew_rate) *
> sys_clk_rate) / 1000;
> --
> 1.7.4.1
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
More information about the linux-arm-kernel
mailing list