diff mbox

[1/3] regulator: qcom_smd: Fix voltage ranges for pm8x41

Message ID 20160711215009.4519-2-sboyd@codeaurora.org (mailing list archive)
State New, archived
Headers show

Commit Message

Stephen Boyd July 11, 2016, 9:50 p.m. UTC
The voltage ranges listed here are wrong. The correct ranges can
be seen in the "native" spmi regulator driver
qcom_spmi-regulator.c at pldo_ranges[], ftsmps_ranges[] and
boost_ranges[] for the pldo, ftsmps, and boost type regulators.
Port these ranges over to the RPM SMD regulator driver so that we
list the appropriate set of supported voltages on pldos.

Doing this allows us to specify a voltage like 3075000 for l24,
whereas before that wasn't a supported voltage.

Cc: Andy Gross <andy.gross@linaro.org>
Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
Fixes: da65e367b67e ("regulator: Regulator driver for the Qualcomm RPM")
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
---
 drivers/regulator/qcom_smd-regulator.c | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

Comments

Andy Gross July 11, 2016, 10:48 p.m. UTC | #1
On Mon, Jul 11, 2016 at 02:50:07PM -0700, Stephen Boyd wrote:
> The voltage ranges listed here are wrong. The correct ranges can
> be seen in the "native" spmi regulator driver
> qcom_spmi-regulator.c at pldo_ranges[], ftsmps_ranges[] and
> boost_ranges[] for the pldo, ftsmps, and boost type regulators.
> Port these ranges over to the RPM SMD regulator driver so that we
> list the appropriate set of supported voltages on pldos.
> 
> Doing this allows us to specify a voltage like 3075000 for l24,
> whereas before that wasn't a supported voltage.
> 
> Cc: Andy Gross <andy.gross@linaro.org>
> Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
> Fixes: da65e367b67e ("regulator: Regulator driver for the Qualcomm RPM")
> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
> ---

<snip>

>  static const struct regulator_desc pm8941_pldo = {
>  	.linear_ranges = (struct regulator_linear_range[]) {
> -		REGULATOR_LINEAR_RANGE( 750000,  0,  30, 25000),
> -		REGULATOR_LINEAR_RANGE(1500000, 31, 99, 50000),
> +		REGULATOR_LINEAR_RANGE( 750000,  0,  63, 12500),
> +		REGULATOR_LINEAR_RANGE(1550000, 64, 126, 25000),
> +		REGULATOR_LINEAR_RANGE(3100000, 127, 163, 50000),
>  	},
> -	.n_linear_ranges = 2,
> -	.n_voltages = 100,
> +	.n_linear_ranges = 3,
> +	.n_voltages = 164,
>  	.ops = &rpm_smps_ldo_ops,
>  };

Still a little confused on if the 12.5mV is allowed on pmos ldo.  It seems like the
nmos has 1 range of 5mV steps.  The PMOS has 2 ranges, using 25mV and 50mV


Regards,

Andy
Stephen Boyd Aug. 5, 2016, 12:58 a.m. UTC | #2
On 07/11, Andy Gross wrote:
> On Mon, Jul 11, 2016 at 02:50:07PM -0700, Stephen Boyd wrote:
> 
> >  static const struct regulator_desc pm8941_pldo = {
> >  	.linear_ranges = (struct regulator_linear_range[]) {
> > -		REGULATOR_LINEAR_RANGE( 750000,  0,  30, 25000),
> > -		REGULATOR_LINEAR_RANGE(1500000, 31, 99, 50000),
> > +		REGULATOR_LINEAR_RANGE( 750000,  0,  63, 12500),
> > +		REGULATOR_LINEAR_RANGE(1550000, 64, 126, 25000),
> > +		REGULATOR_LINEAR_RANGE(3100000, 127, 163, 50000),
> >  	},
> > -	.n_linear_ranges = 2,
> > -	.n_voltages = 100,
> > +	.n_linear_ranges = 3,
> > +	.n_voltages = 164,
> >  	.ops = &rpm_smps_ldo_ops,
> >  };
> 
> Still a little confused on if the 12.5mV is allowed on pmos ldo.  It seems like the
> nmos has 1 range of 5mV steps.  The PMOS has 2 ranges, using 25mV and 50mV
> 

The values I've put in these patches are the correct ranges.
Andy Gross Aug. 5, 2016, 4:09 a.m. UTC | #3
On Thu, Aug 04, 2016 at 05:58:26PM -0700, Stephen Boyd wrote:
> On 07/11, Andy Gross wrote:
> > On Mon, Jul 11, 2016 at 02:50:07PM -0700, Stephen Boyd wrote:
> > 
> > >  static const struct regulator_desc pm8941_pldo = {
> > >  	.linear_ranges = (struct regulator_linear_range[]) {
> > > -		REGULATOR_LINEAR_RANGE( 750000,  0,  30, 25000),
> > > -		REGULATOR_LINEAR_RANGE(1500000, 31, 99, 50000),
> > > +		REGULATOR_LINEAR_RANGE( 750000,  0,  63, 12500),
> > > +		REGULATOR_LINEAR_RANGE(1550000, 64, 126, 25000),
> > > +		REGULATOR_LINEAR_RANGE(3100000, 127, 163, 50000),
> > >  	},
> > > -	.n_linear_ranges = 2,
> > > -	.n_voltages = 100,
> > > +	.n_linear_ranges = 3,
> > > +	.n_voltages = 164,
> > >  	.ops = &rpm_smps_ldo_ops,
> > >  };
> > 
> > Still a little confused on if the 12.5mV is allowed on pmos ldo.  It seems like the
> > nmos has 1 range of 5mV steps.  The PMOS has 2 ranges, using 25mV and 50mV
> > 
> 
> The values I've put in these patches are the correct ranges.

Ok.  As with the other patch:

Reviewed-by: Andy Gross <andy.gross@linaro.org>
diff mbox

Patch

diff --git a/drivers/regulator/qcom_smd-regulator.c b/drivers/regulator/qcom_smd-regulator.c
index 6c7fe4778793..6aa6435b3922 100644
--- a/drivers/regulator/qcom_smd-regulator.c
+++ b/drivers/regulator/qcom_smd-regulator.c
@@ -221,29 +221,30 @@  static const struct regulator_desc pm8x41_hfsmps = {
 static const struct regulator_desc pm8841_ftsmps = {
 	.linear_ranges = (struct regulator_linear_range[]) {
 		REGULATOR_LINEAR_RANGE(350000,  0, 184, 5000),
-		REGULATOR_LINEAR_RANGE(700000, 185, 339, 10000),
+		REGULATOR_LINEAR_RANGE(1280000, 185, 261, 10000),
 	},
 	.n_linear_ranges = 2,
-	.n_voltages = 340,
+	.n_voltages = 262,
 	.ops = &rpm_smps_ldo_ops,
 };
 
 static const struct regulator_desc pm8941_boost = {
 	.linear_ranges = (struct regulator_linear_range[]) {
-		REGULATOR_LINEAR_RANGE(4000000, 0, 15, 100000),
+		REGULATOR_LINEAR_RANGE(4000000, 0, 30, 50000),
 	},
 	.n_linear_ranges = 1,
-	.n_voltages = 16,
+	.n_voltages = 31,
 	.ops = &rpm_smps_ldo_ops,
 };
 
 static const struct regulator_desc pm8941_pldo = {
 	.linear_ranges = (struct regulator_linear_range[]) {
-		REGULATOR_LINEAR_RANGE( 750000,  0,  30, 25000),
-		REGULATOR_LINEAR_RANGE(1500000, 31, 99, 50000),
+		REGULATOR_LINEAR_RANGE( 750000,  0,  63, 12500),
+		REGULATOR_LINEAR_RANGE(1550000, 64, 126, 25000),
+		REGULATOR_LINEAR_RANGE(3100000, 127, 163, 50000),
 	},
-	.n_linear_ranges = 2,
-	.n_voltages = 100,
+	.n_linear_ranges = 3,
+	.n_voltages = 164,
 	.ops = &rpm_smps_ldo_ops,
 };