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;
next prev parent 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