diff mbox

[RFC] ARM: dts: imx6sx-sdb: Drop OPP hackery

Message ID 20170425164224.26537-1-marex@denx.de (mailing list archive)
State New, archived
Headers show

Commit Message

Marek Vasut April 25, 2017, 4:42 p.m. UTC
The imx6sx-sdb has one power supply that drives both VDDARM_IN
and VDDSOC_IN, which is the sw1a regulator on the PFUZE PMIC.
Connect both inputs to the sw1a regulator on the PMIC and drop
the OPP hackery which is no longer needed as the power framework
will take care of the regulator configuration as needed.

Signed-off-by: Marek Vasut <marex@denx.de>
Cc: Fabio Estevam <fabio.estevam@nxp.com>
Cc: Shawn Guo <shawnguo@kernel.org>
---
Note: Fabio, if you have a chance, please give this a spin and see
      if this works.
---
 arch/arm/boot/dts/imx6sx-sdb.dts | 25 ++++++++-----------------
 1 file changed, 8 insertions(+), 17 deletions(-)

Comments

Marek Vasut April 25, 2017, 7:30 p.m. UTC | #1
On 04/25/2017 06:42 PM, Marek Vasut wrote:
> The imx6sx-sdb has one power supply that drives both VDDARM_IN
> and VDDSOC_IN, which is the sw1a regulator on the PFUZE PMIC.
> Connect both inputs to the sw1a regulator on the PMIC and drop
> the OPP hackery which is no longer needed as the power framework
> will take care of the regulator configuration as needed.
> 
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Fabio Estevam <fabio.estevam@nxp.com>
> Cc: Shawn Guo <shawnguo@kernel.org>

+CC Leonard

> ---
> Note: Fabio, if you have a chance, please give this a spin and see
>       if this works.
> ---
>  arch/arm/boot/dts/imx6sx-sdb.dts | 25 ++++++++-----------------
>  1 file changed, 8 insertions(+), 17 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/imx6sx-sdb.dts b/arch/arm/boot/dts/imx6sx-sdb.dts
> index 5bb8fd57e7f5..c0139d7e497a 100644
> --- a/arch/arm/boot/dts/imx6sx-sdb.dts
> +++ b/arch/arm/boot/dts/imx6sx-sdb.dts
> @@ -12,23 +12,6 @@
>  	model = "Freescale i.MX6 SoloX SDB RevB Board";
>  };
>  
> -&cpu0 {
> -	operating-points = <
> -		/* kHz    uV */
> -		996000  1250000
> -		792000  1175000
> -		396000  1175000
> -		198000  1175000
> -		>;
> -	fsl,soc-operating-points = <
> -		/* ARM kHz      SOC uV */
> -		996000	1250000
> -		792000	1175000
> -		396000	1175000
> -		198000  1175000
> -	>;
> -};
> -
>  &i2c1 {
>  	clock-frequency = <100000>;
>  	pinctrl-names = "default";
> @@ -145,3 +128,11 @@
>  		reg = <1>;
>  	};
>  };
> +
> +&reg_arm {
> +	vin-supply = <&sw1a_reg>;
> +};
> +
> +&reg_soc {
> +	vin-supply = <&sw1a_reg>;
> +};
>
Leonard Crestez April 25, 2017, 7:39 p.m. UTC | #2
On Tue, 2017-04-25 at 21:30 +0200, Marek Vasut wrote:
> On 04/25/2017 06:42 PM, Marek Vasut wrote:
> > The imx6sx-sdb has one power supply that drives both VDDARM_IN
> > and VDDSOC_IN, which is the sw1a regulator on the PFUZE PMIC.
> > Connect both inputs to the sw1a regulator on the PMIC and drop
> > the OPP hackery which is no longer needed as the power framework
> > will take care of the regulator configuration as needed.
> > 
> > Signed-off-by: Marek Vasut <marex@denx.de>
> > Cc: Fabio Estevam <fabio.estevam@nxp.com>
> > Cc: Shawn Guo <shawnguo@kernel.org>
> 
> +CC Leonard

Tested-by: Leonard Crestez <leonard.crestez@nxp.com>

The OPP hack only applies to LDO bypass mode and that is not in
upstream. When LDOs are enabled the effect is to use higher voltages
than necessary for no good reason.

Setting these higher voltages can make some boards (for example Rev B)
fail to boot with ugly semi-random crashes reminiscent of memory
corruption. These failures happen the first time the lowest idle state
is used. This patch fixes those crashes.

It's not clear exactly why the crashes happen. Perhaps waking up from
idle draws more power than is available? I don't think it matters.

I sent a very similar patch a few minutes after this one:

http://lists.infradead.org/pipermail/linux-arm-kernel/2017-April/503241
.html

> > @@ -145,3 +128,11 @@
> >  		reg = <1>;
> >  	};
> >  };
> > +
> > +&reg_arm {
> > +	vin-supply = <&sw1a_reg>;
> > +};
> > +
> > +&reg_soc {
> > +	vin-supply = <&sw1a_reg>;
> > +};

This is also good, it will result in lower voltages will result in
lower voltages on VDD_ARM_SOC_IN rather than a fixed 1375 mV.
Leonard Crestez May 3, 2017, 1:32 p.m. UTC | #3
On Tue, 2017-04-25 at 22:39 +0300, Leonard Crestez wrote:
> On Tue, 2017-04-25 at 21:30 +0200, Marek Vasut wrote:
> > 
> > On 04/25/2017 06:42 PM, Marek Vasut wrote:
> > > 
> > > The imx6sx-sdb has one power supply that drives both VDDARM_IN
> > > and VDDSOC_IN, which is the sw1a regulator on the PFUZE PMIC.
> > > Connect both inputs to the sw1a regulator on the PMIC and drop
> > > the OPP hackery which is no longer needed as the power framework
> > > will take care of the regulator configuration as needed.
> > > 
> > > Signed-off-by: Marek Vasut <marex@denx.de>
> > > Cc: Fabio Estevam <fabio.estevam@nxp.com>
> > > Cc: Shawn Guo <shawnguo@kernel.org>
> > +CC Leonard
> Tested-by: Leonard Crestez <leonard.crestez@nxp.com>
> 
> The OPP hack only applies to LDO bypass mode and that is not in
> upstream. When LDOs are enabled the effect is to use higher voltages
> than necessary for no good reason.
> 
> Setting these higher voltages can make some boards (for example Rev B)
> fail to boot with ugly semi-random crashes reminiscent of memory
> corruption. These failures happen the first time the lowest idle state
> is used. This patch fixes those crashes.
> 
> It's not clear exactly why the crashes happen. Perhaps waking up from
> idle draws more power than is available? I don't think it matters.
> 
> I sent a very similar patch a few minutes after this one:
> 
> http://lists.infradead.org/pipermail/linux-arm-kernel/2017-April/503241
> .html

Adding Henri Roosen because he reported something very similar.

Henri: Can you please check if this patch fixes your issue?

-- 
Regards,
Leonard
Henri Roosen May 3, 2017, 2:27 p.m. UTC | #4
On 05/03/2017 03:32 PM, Leonard Crestez wrote:
> On Tue, 2017-04-25 at 22:39 +0300, Leonard Crestez wrote:
>> On Tue, 2017-04-25 at 21:30 +0200, Marek Vasut wrote:
>>>
>>> On 04/25/2017 06:42 PM, Marek Vasut wrote:
>>>>
>>>> The imx6sx-sdb has one power supply that drives both VDDARM_IN
>>>> and VDDSOC_IN, which is the sw1a regulator on the PFUZE PMIC.
>>>> Connect both inputs to the sw1a regulator on the PMIC and drop
>>>> the OPP hackery which is no longer needed as the power framework
>>>> will take care of the regulator configuration as needed.
>>>>
>>>> Signed-off-by: Marek Vasut <marex@denx.de>
>>>> Cc: Fabio Estevam <fabio.estevam@nxp.com>
>>>> Cc: Shawn Guo <shawnguo@kernel.org>
>>> +CC Leonard
>> Tested-by: Leonard Crestez <leonard.crestez@nxp.com>
>>
>> The OPP hack only applies to LDO bypass mode and that is not in
>> upstream. When LDOs are enabled the effect is to use higher voltages
>> than necessary for no good reason.
>>
>> Setting these higher voltages can make some boards (for example Rev B)
>> fail to boot with ugly semi-random crashes reminiscent of memory
>> corruption. These failures happen the first time the lowest idle state
>> is used. This patch fixes those crashes.
>>
>> It's not clear exactly why the crashes happen. Perhaps waking up from
>> idle draws more power than is available? I don't think it matters.
>>
>> I sent a very similar patch a few minutes after this one:
>>
>> http://lists.infradead.org/pipermail/linux-arm-kernel/2017-April/503241
>> .html
>
> Adding Henri Roosen because he reported something very similar.
>
> Henri: Can you please check if this patch fixes your issue?

I've been successfully running a similar patch (reverting operating 
points, without reg_arm/reg_soc) as provided by Anson for about a month 
on an iMX6SX-SDB RevC board. I'm sorry for not copying the mailing list 
on this before.

This patch, with the regulators setup as provided by Marek, has been 
tested successfully on the iMX6SX-SDB RevC board as well.

Feel free to add my

Tested-by: Henri Roosen <henri.roosen@ginzinger.com>
Fabio Estevam May 3, 2017, 4:07 p.m. UTC | #5
On Tue, Apr 25, 2017 at 1:42 PM, Marek Vasut <marex@denx.de> wrote:
> The imx6sx-sdb has one power supply that drives both VDDARM_IN
> and VDDSOC_IN, which is the sw1a regulator on the PFUZE PMIC.
> Connect both inputs to the sw1a regulator on the PMIC and drop
> the OPP hackery which is no longer needed as the power framework
> will take care of the regulator configuration as needed.
>
> Signed-off-by: Marek Vasut <marex@denx.de>
> Cc: Fabio Estevam <fabio.estevam@nxp.com>
> Cc: Shawn Guo <shawnguo@kernel.org>

Reviewed-by: Fabio Estevam <fabio.estevam@nxp.com>
diff mbox

Patch

diff --git a/arch/arm/boot/dts/imx6sx-sdb.dts b/arch/arm/boot/dts/imx6sx-sdb.dts
index 5bb8fd57e7f5..c0139d7e497a 100644
--- a/arch/arm/boot/dts/imx6sx-sdb.dts
+++ b/arch/arm/boot/dts/imx6sx-sdb.dts
@@ -12,23 +12,6 @@ 
 	model = "Freescale i.MX6 SoloX SDB RevB Board";
 };
 
-&cpu0 {
-	operating-points = <
-		/* kHz    uV */
-		996000  1250000
-		792000  1175000
-		396000  1175000
-		198000  1175000
-		>;
-	fsl,soc-operating-points = <
-		/* ARM kHz      SOC uV */
-		996000	1250000
-		792000	1175000
-		396000	1175000
-		198000  1175000
-	>;
-};
-
 &i2c1 {
 	clock-frequency = <100000>;
 	pinctrl-names = "default";
@@ -145,3 +128,11 @@ 
 		reg = <1>;
 	};
 };
+
+&reg_arm {
+	vin-supply = <&sw1a_reg>;
+};
+
+&reg_soc {
+	vin-supply = <&sw1a_reg>;
+};