diff mbox

[2/3] regulator: qcom_smd: Fix voltage ranges for pma8084 ftsmps and pldo

Message ID 20160711215009.4519-3-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 pma8084 pldo
supports three different overlapping voltage ranges with
differing step sizes and the pma8084 ftsmps supports two. These
ranges can be seen in the "native" spmi regulator driver
(qcom_spmi-regulator.c) at pldo_ranges[] and ftsmps_ranges[]
respectively. Port these ranges over to the RPM SMD regulator
driver so that we list the appropriate set of supported voltages
on these types of regulators.

Cc: Andy Gross <andy.gross@linaro.org>
Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
Fixes: ee01d0c91ef1 ("regulator: qcom-smd: Add support for PMA8084")
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
---
 drivers/regulator/qcom_smd-regulator.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

Comments

Andy Gross July 11, 2016, 10:38 p.m. UTC | #1
On Mon, Jul 11, 2016 at 02:50:08PM -0700, Stephen Boyd wrote:
> The voltage ranges listed here are wrong. The pma8084 pldo
> supports three different overlapping voltage ranges with
> differing step sizes and the pma8084 ftsmps supports two. These
> ranges can be seen in the "native" spmi regulator driver
> (qcom_spmi-regulator.c) at pldo_ranges[] and ftsmps_ranges[]
> respectively. Port these ranges over to the RPM SMD regulator
> driver so that we list the appropriate set of supported voltages
> on these types of regulators.
> 
> Cc: Andy Gross <andy.gross@linaro.org>
> Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
> Fixes: ee01d0c91ef1 ("regulator: qcom-smd: Add support for PMA8084")
> Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>

<snip>

>  static const struct regulator_desc pma8084_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),

It was my understanding that the PMOS ldos only support 25mV and 50mV
incremements.

> +		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,

Regards,

Andy
Stephen Boyd Aug. 5, 2016, 12:57 a.m. UTC | #2
On 07/11, Andy Gross wrote:
> On Mon, Jul 11, 2016 at 02:50:08PM -0700, Stephen Boyd wrote:
> > The voltage ranges listed here are wrong. The pma8084 pldo
> > supports three different overlapping voltage ranges with
> > differing step sizes and the pma8084 ftsmps supports two. These
> > ranges can be seen in the "native" spmi regulator driver
> > (qcom_spmi-regulator.c) at pldo_ranges[] and ftsmps_ranges[]
> > respectively. Port these ranges over to the RPM SMD regulator
> > driver so that we list the appropriate set of supported voltages
> > on these types of regulators.
> > 
> > Cc: Andy Gross <andy.gross@linaro.org>
> > Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
> > Fixes: ee01d0c91ef1 ("regulator: qcom-smd: Add support for PMA8084")
> > Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
> 
> <snip>
> 
> >  static const struct regulator_desc pma8084_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),
> 
> It was my understanding that the PMOS ldos only support 25mV and 50mV
> incremements.
> 

Unfortunately that isn't true. It also supports 12.5mV steps for
the lower voltage ranges.
Andy Gross Aug. 5, 2016, 4:09 a.m. UTC | #3
On Thu, Aug 04, 2016 at 05:57:48PM -0700, Stephen Boyd wrote:
> On 07/11, Andy Gross wrote:
> > On Mon, Jul 11, 2016 at 02:50:08PM -0700, Stephen Boyd wrote:
> > > The voltage ranges listed here are wrong. The pma8084 pldo
> > > supports three different overlapping voltage ranges with
> > > differing step sizes and the pma8084 ftsmps supports two. These
> > > ranges can be seen in the "native" spmi regulator driver
> > > (qcom_spmi-regulator.c) at pldo_ranges[] and ftsmps_ranges[]
> > > respectively. Port these ranges over to the RPM SMD regulator
> > > driver so that we list the appropriate set of supported voltages
> > > on these types of regulators.
> > > 
> > > Cc: Andy Gross <andy.gross@linaro.org>
> > > Cc: Bjorn Andersson <bjorn.andersson@linaro.org>
> > > Fixes: ee01d0c91ef1 ("regulator: qcom-smd: Add support for PMA8084")
> > > Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
> > 
> > <snip>
> > 
> > >  static const struct regulator_desc pma8084_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),
> > 
> > It was my understanding that the PMOS ldos only support 25mV and 50mV
> > incremements.
> > 
> 
> Unfortunately that isn't true. It also supports 12.5mV steps for
> the lower voltage ranges.

Ok. with that resolved:

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 6aa6435b3922..891ae44a49c2 100644
--- a/drivers/regulator/qcom_smd-regulator.c
+++ b/drivers/regulator/qcom_smd-regulator.c
@@ -178,20 +178,21 @@  static const struct regulator_desc pma8084_hfsmps = {
 static const struct regulator_desc pma8084_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 pma8084_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,
 };