public inbox for linux-omap@vger.kernel.org
 help / color / mirror / Atom feed
From: Kevin Hilman <khilman@ti.com>
To: Nishanth Menon <nm@ti.com>
Cc: linux-omap <linux-omap@vger.kernel.org>
Subject: Re: [pm-wip/voltdm_nm][PATCH 07/10] OMAP3+: PM: VP: use uV for max and min voltage limits
Date: Thu, 16 Jun 2011 13:45:16 -0700	[thread overview]
Message-ID: <87hb7ph5er.fsf@ti.com> (raw)
In-Reply-To: <1307412972-25854-8-git-send-email-nm@ti.com> (Nishanth Menon's message of "Mon, 6 Jun 2011 21:16:10 -0500")

Nishanth Menon <nm@ti.com> writes:

> Every PMIC has it's own eccentricities, For example, one of the
> PMIC has MSB set to 1 for a specific function - voltage enable!
> using an hardcoded value specific for TWL when copied over to
> such an implementation causes the system to crash as the MSB bit
> was 0 and the voltage got disabled!.
>
> Instead we use actual values and depend on the convertion routines
> to abstract out the eccentricities of each PMIC.
>
> With this, we can now move the voltages to a common location in
> voltage.h as they are no longer dependent on PMICs and expect the
> PMIC's conversion routines to set a cap if the voltage is out of
> reach for the PMIC.
>
> The corresponding voltage values are arrived at by using the
> following pre-existing equations:
> TWL4030/5030 for OMAP3430/OMAP3630:(twl4030_vsel_to_uv)
> 	(((vsel * 125) + 6000)) * 100
> TWL6030 (OMAP4430):(twl6030_uv_to_vsel)
> 	((((vsel - 1) * 1266) + 70900)) * 10
>
> Reported-by: Jon Hunter <jon-hunter@ti.com>
> Signed-off-by: Nishanth Menon <nm@ti.com>

Nice!

A reference to where these voltages values came from would be good to
have in the code as well.

Kevin

> ---
>  arch/arm/mach-omap2/omap_twl.c |   17 -----------------
>  arch/arm/mach-omap2/voltage.h  |   22 ++++++++++++++++++++--
>  arch/arm/mach-omap2/vp.c       |    4 ++--
>  3 files changed, 22 insertions(+), 21 deletions(-)
>
> diff --git a/arch/arm/mach-omap2/omap_twl.c b/arch/arm/mach-omap2/omap_twl.c
> index f515a1a..df4e7c3 100644
> --- a/arch/arm/mach-omap2/omap_twl.c
> +++ b/arch/arm/mach-omap2/omap_twl.c
> @@ -30,16 +30,6 @@
>  #define OMAP3_VP_VSTEPMAX_VSTEPMAX	0x04
>  #define OMAP3_VP_VLIMITTO_TIMEOUT_US	200
>  
> -#define OMAP3430_VP1_VLIMITTO_VDDMIN	0x14
> -#define OMAP3430_VP1_VLIMITTO_VDDMAX	0x42
> -#define OMAP3430_VP2_VLIMITTO_VDDMIN	0x18
> -#define OMAP3430_VP2_VLIMITTO_VDDMAX	0x2c
> -
> -#define OMAP3630_VP1_VLIMITTO_VDDMIN	0x18
> -#define OMAP3630_VP1_VLIMITTO_VDDMAX	0x3c
> -#define OMAP3630_VP2_VLIMITTO_VDDMIN	0x18
> -#define OMAP3630_VP2_VLIMITTO_VDDMAX	0x30
> -
>  #define OMAP4_SRI2C_SLAVE_ADDR		0x12
>  #define OMAP4_VDD_MPU_SR_VOLT_REG	0x55
>  #define OMAP4_VDD_MPU_SR_CMD_REG	0x56
> @@ -53,13 +43,6 @@
>  #define OMAP4_VP_VSTEPMAX_VSTEPMAX	0x04
>  #define OMAP4_VP_VLIMITTO_TIMEOUT_US	200
>  
> -#define OMAP4_VP_MPU_VLIMITTO_VDDMIN	0xA
> -#define OMAP4_VP_MPU_VLIMITTO_VDDMAX	0x39
> -#define OMAP4_VP_IVA_VLIMITTO_VDDMIN	0xA
> -#define OMAP4_VP_IVA_VLIMITTO_VDDMAX	0x2D
> -#define OMAP4_VP_CORE_VLIMITTO_VDDMIN	0xA
> -#define OMAP4_VP_CORE_VLIMITTO_VDDMAX	0x28
> -
>  static bool is_offset_valid;
>  static u8 smps_offset;
>  /*
> diff --git a/arch/arm/mach-omap2/voltage.h b/arch/arm/mach-omap2/voltage.h
> index 0a4232f..b3349a0 100644
> --- a/arch/arm/mach-omap2/voltage.h
> +++ b/arch/arm/mach-omap2/voltage.h
> @@ -118,6 +118,24 @@ struct omap_volt_data {
>   */
>  #define USE_DEFAULT_CHANNEL_I2C_PARAM  0x8000
>  
> +/* Min and max voltages from OMAP perspective */
> +#define OMAP3430_VP1_VLIMITTO_VDDMIN	850000
> +#define OMAP3430_VP1_VLIMITTO_VDDMAX	1425000
> +#define OMAP3430_VP2_VLIMITTO_VDDMIN	900000
> +#define OMAP3430_VP2_VLIMITTO_VDDMAX	1150000
> +
> +#define OMAP3630_VP1_VLIMITTO_VDDMIN	900000
> +#define OMAP3630_VP1_VLIMITTO_VDDMAX	1350000
> +#define OMAP3630_VP2_VLIMITTO_VDDMIN	900000
> +#define OMAP3630_VP2_VLIMITTO_VDDMAX	1200000
> +
> +#define OMAP4_VP_MPU_VLIMITTO_VDDMIN	830000
> +#define OMAP4_VP_MPU_VLIMITTO_VDDMAX	1410000
> +#define OMAP4_VP_IVA_VLIMITTO_VDDMIN	830000
> +#define OMAP4_VP_IVA_VLIMITTO_VDDMAX	1260000
> +#define OMAP4_VP_CORE_VLIMITTO_VDDMIN	830000
> +#define OMAP4_VP_CORE_VLIMITTO_VDDMAX	1200000
> +
>  /**
>   * struct omap_voltdm_pmic - PMIC specific data required by voltage driver.
>   * @slew_rate:	PMIC slew rate (in uv/us)
> @@ -138,8 +156,8 @@ struct omap_voltdm_pmic {
>  	u8 vp_erroroffset;
>  	u8 vp_vstepmin;
>  	u8 vp_vstepmax;
> -	u8 vp_vddmin;
> -	u8 vp_vddmax;
> +	u32 vp_vddmin;
> +	u32 vp_vddmax;
>  	u8 vp_timeout_us;
>  	u16 i2c_slave_addr;
>  	u16 volt_reg_addr;
> diff --git a/arch/arm/mach-omap2/vp.c b/arch/arm/mach-omap2/vp.c
> index 3807620..4677921 100644
> --- a/arch/arm/mach-omap2/vp.c
> +++ b/arch/arm/mach-omap2/vp.c
> @@ -64,8 +64,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->vp_vddmin;
> -	vddmax = voltdm->pmic->vp_vddmax;
> +	vddmin = voltdm->pmic->uv_to_vsel(voltdm->pmic->vp_vddmin);
> +	vddmax = voltdm->pmic->uv_to_vsel(voltdm->pmic->vp_vddmax);
>  
>  	waittime = ((voltdm->pmic->step_size / voltdm->pmic->slew_rate) *
>  		    sys_clk_rate) / 1000;

  reply	other threads:[~2011-06-16 20:45 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-06-07  2:16 [pm-wip/voltdm_nm][PATCH 00/10] OMAP2+: voltage: fixes Nishanth Menon
2011-06-07  2:16 ` [pm-wip/voltdm_nm][PATCH 01/10] OMAP3+: VC: fix mutant channel handling Nishanth Menon
2011-06-09 17:21   ` Kevin Hilman
2011-06-07  2:16 ` [pm-wip/voltdm_nm][PATCH 02/10] OMAP4: PM: VC: allow channels use of default channel i2c_slaveaddr Nishanth Menon
2011-06-09 18:07   ` Kevin Hilman
2011-06-09 18:17     ` Kevin Hilman
2011-06-07  2:16 ` [pm-wip/voltdm_nm][PATCH 03/10] OMAP4: PM: VC: allow channels to use cmdra reg Nishanth Menon
2011-06-09 17:48   ` Kevin Hilman
2011-06-07  2:16 ` [pm-wip/voltdm_nm][PATCH 04/10] OMAP4: PM: VC: allow channels use of default channel volt_reg_addr Nishanth Menon
2011-06-09 18:32   ` Kevin Hilman
2011-06-07  2:16 ` [pm-wip/voltdm_nm][PATCH 05/10] OMAP4: PM: VC: allow channels use of default channel cmd_reg_addr Nishanth Menon
2011-06-07  2:16 ` [pm-wip/voltdm_nm][PATCH 06/10] OMAP3+: PM: VC: support configuring PMIC over I2C_SR Nishanth Menon
2011-06-07  2:16 ` [pm-wip/voltdm_nm][PATCH 07/10] OMAP3+: PM: VP: use uV for max and min voltage limits Nishanth Menon
2011-06-16 20:45   ` Kevin Hilman [this message]
2011-06-17  0:28     ` Menon, Nishanth
2011-06-17 15:48       ` Kevin Hilman
2011-06-07  2:16 ` [pm-wip/voltdm_nm][PATCH 08/10] OMAP3+: PM: introduce a central pmic control Nishanth Menon
2011-06-07  2:16 ` [pm-wip/voltdm_nm][PATCH 09/10] OMAP2+: PM: secure OPP access using rcu locks Nishanth Menon
2011-06-16 20:47   ` Kevin Hilman
2011-06-17  0:39     ` Menon, Nishanth

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87hb7ph5er.fsf@ti.com \
    --to=khilman@ti.com \
    --cc=linux-omap@vger.kernel.org \
    --cc=nm@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox