[03/15] arm64: dts: imx8mp-evk: fix BUCK/LDO voltage

Message ID 20221020095934.1659449-4-peng.fan@oss.nxp.com
State New
Headers
Series arm64: dts: imx8m-evk: misc dts update |

Commit Message

Peng Fan (OSS) Oct. 20, 2022, 9:59 a.m. UTC
  From: Peng Fan <peng.fan@nxp.com>

Per PCA9450C datasheet, the voltage range as below:
BUCK1 0.6 - 2.1875
BUCK2 0.6 - 2.1875
BUCK4 0.6 - 3.4
BUCK5 0.6 - 3.4
BUCK6 0.6 - 3.4

LDO1 1.6-1.9, 3.0-3.3
LDO2 0.8 – 1.15
LDO3 0.8 - 3.3
LDO4 0.8 - 3.3
LDO5 1.8 - 3.3

So correct them, and also add LDO[2,4]

Fixes: 5497bc2a2bff ("arm64: dts: imx8mp-evk: Add PMIC device")
Signed-off-by: Peng Fan <peng.fan@nxp.com>
---
 arch/arm64/boot/dts/freescale/imx8mp-evk.dts | 44 +++++++++++++-------
 1 file changed, 30 insertions(+), 14 deletions(-)
  

Comments

Marco Felsch Oct. 20, 2022, 11:02 a.m. UTC | #1
Hi Peng,

On 22-10-20, Peng Fan (OSS) wrote:
> From: Peng Fan <peng.fan@nxp.com>
> 
> Per PCA9450C datasheet, the voltage range as below:
> BUCK1 0.6 - 2.1875
> BUCK2 0.6 - 2.1875
> BUCK4 0.6 - 3.4
> BUCK5 0.6 - 3.4
> BUCK6 0.6 - 3.4
> 
> LDO1 1.6-1.9, 3.0-3.3
> LDO2 0.8 – 1.15
> LDO3 0.8 - 3.3
> LDO4 0.8 - 3.3
> LDO5 1.8 - 3.3
> 
> So correct them, and also add LDO[2,4]

In the DTS you specify voltage constraints for a specific hardware and
not the one supported by the PMIC. What the PMIC supports (min/max) is
specified within the driver.

Regards,
  Marco

> 
> Fixes: 5497bc2a2bff ("arm64: dts: imx8mp-evk: Add PMIC device")
> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> ---
>  arch/arm64/boot/dts/freescale/imx8mp-evk.dts | 44 +++++++++++++-------
>  1 file changed, 30 insertions(+), 14 deletions(-)
> 
> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> index b4c1ef2559f2..a4cddc5a8620 100644
> --- a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> +++ b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> @@ -248,8 +248,8 @@ pmic@25 {
>  		regulators {
>  			BUCK1 {
>  				regulator-name = "BUCK1";
> -				regulator-min-microvolt = <720000>;
> -				regulator-max-microvolt = <1000000>;
> +				regulator-min-microvolt = <600000>;
> +				regulator-max-microvolt = <2187500>;
>  				regulator-boot-on;
>  				regulator-always-on;
>  				regulator-ramp-delay = <3125>;
> @@ -257,8 +257,8 @@ BUCK1 {
>  
>  			reg_arm: BUCK2 {
>  				regulator-name = "BUCK2";
> -				regulator-min-microvolt = <720000>;
> -				regulator-max-microvolt = <1025000>;
> +				regulator-min-microvolt = <600000>;
> +				regulator-max-microvolt = <2187500>;
>  				regulator-boot-on;
>  				regulator-always-on;
>  				regulator-ramp-delay = <3125>;
> @@ -268,40 +268,56 @@ reg_arm: BUCK2 {
>  
>  			BUCK4 {
>  				regulator-name = "BUCK4";
> -				regulator-min-microvolt = <3000000>;
> -				regulator-max-microvolt = <3600000>;
> +				regulator-min-microvolt = <600000>;
> +				regulator-max-microvolt = <3400000>;
>  				regulator-boot-on;
>  				regulator-always-on;
>  			};
>  
>  			BUCK5 {
>  				regulator-name = "BUCK5";
> -				regulator-min-microvolt = <1650000>;
> -				regulator-max-microvolt = <1950000>;
> +				regulator-min-microvolt = <600000>;
> +				regulator-max-microvolt = <3400000>;
>  				regulator-boot-on;
>  				regulator-always-on;
>  			};
>  
>  			BUCK6 {
>  				regulator-name = "BUCK6";
> -				regulator-min-microvolt = <1045000>;
> -				regulator-max-microvolt = <1155000>;
> +				regulator-min-microvolt = <600000>;
> +				regulator-max-microvolt = <3400000>;
>  				regulator-boot-on;
>  				regulator-always-on;
>  			};
>  
>  			LDO1 {
>  				regulator-name = "LDO1";
> -				regulator-min-microvolt = <1650000>;
> -				regulator-max-microvolt = <1950000>;
> +				regulator-min-microvolt = <1600000>;
> +				regulator-max-microvolt = <3300000>;
> +				regulator-boot-on;
> +				regulator-always-on;
> +			};
> +
> +			LDO2 {
> +				regulator-name = "LDO2";
> +				regulator-min-microvolt = <800000>;
> +				regulator-max-microvolt = <1150000>;
>  				regulator-boot-on;
>  				regulator-always-on;
>  			};
>  
>  			LDO3 {
>  				regulator-name = "LDO3";
> -				regulator-min-microvolt = <1710000>;
> -				regulator-max-microvolt = <1890000>;
> +				regulator-min-microvolt = <800000>;
> +				regulator-max-microvolt = <3300000>;
> +				regulator-boot-on;
> +				regulator-always-on;
> +			};
> +
> +			ldo4: LDO4 {
> +				regulator-name = "LDO4";
> +				regulator-min-microvolt = <800000>;
> +				regulator-max-microvolt = <3300000>;
>  				regulator-boot-on;
>  				regulator-always-on;
>  			};
> -- 
> 2.37.1
> 
> 
>
  
Peng Fan (OSS) Oct. 21, 2022, 9:13 a.m. UTC | #2
Hi Marco

On 10/20/2022 7:02 PM, Marco Felsch wrote:
> Hi Peng,
> 
> On 22-10-20, Peng Fan (OSS) wrote:
>> From: Peng Fan <peng.fan@nxp.com>
>>
>> Per PCA9450C datasheet, the voltage range as below:
>> BUCK1 0.6 - 2.1875
>> BUCK2 0.6 - 2.1875
>> BUCK4 0.6 - 3.4
>> BUCK5 0.6 - 3.4
>> BUCK6 0.6 - 3.4
>>
>> LDO1 1.6-1.9, 3.0-3.3
>> LDO2 0.8 – 1.15
>> LDO3 0.8 - 3.3
>> LDO4 0.8 - 3.3
>> LDO5 1.8 - 3.3
>>
>> So correct them, and also add LDO[2,4]
> 
> In the DTS you specify voltage constraints for a specific hardware and
> not the one supported by the PMIC. What the PMIC supports (min/max) is
> specified within the driver.

Technically we could set board voltage to PMIC voltage range, it not
damage the board from hardware level.
but I am not sure whether Linux could work proper.
Saying set VDD_SOC/DDR to pmic min voltage, system will crash,
because it could not support higher freq.

I am not sure how to proceed on this, just update commit log
to say that the board voltage range could be set to pmic voltage range?

Thanks,
Peng.

> 
> Regards,
>    Marco
> 
>>
>> Fixes: 5497bc2a2bff ("arm64: dts: imx8mp-evk: Add PMIC device")
>> Signed-off-by: Peng Fan <peng.fan@nxp.com>
>> ---
>>   arch/arm64/boot/dts/freescale/imx8mp-evk.dts | 44 +++++++++++++-------
>>   1 file changed, 30 insertions(+), 14 deletions(-)
>>
>> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
>> index b4c1ef2559f2..a4cddc5a8620 100644
>> --- a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
>> +++ b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
>> @@ -248,8 +248,8 @@ pmic@25 {
>>   		regulators {
>>   			BUCK1 {
>>   				regulator-name = "BUCK1";
>> -				regulator-min-microvolt = <720000>;
>> -				regulator-max-microvolt = <1000000>;
>> +				regulator-min-microvolt = <600000>;
>> +				regulator-max-microvolt = <2187500>;
>>   				regulator-boot-on;
>>   				regulator-always-on;
>>   				regulator-ramp-delay = <3125>;
>> @@ -257,8 +257,8 @@ BUCK1 {
>>   
>>   			reg_arm: BUCK2 {
>>   				regulator-name = "BUCK2";
>> -				regulator-min-microvolt = <720000>;
>> -				regulator-max-microvolt = <1025000>;
>> +				regulator-min-microvolt = <600000>;
>> +				regulator-max-microvolt = <2187500>;
>>   				regulator-boot-on;
>>   				regulator-always-on;
>>   				regulator-ramp-delay = <3125>;
>> @@ -268,40 +268,56 @@ reg_arm: BUCK2 {
>>   
>>   			BUCK4 {
>>   				regulator-name = "BUCK4";
>> -				regulator-min-microvolt = <3000000>;
>> -				regulator-max-microvolt = <3600000>;
>> +				regulator-min-microvolt = <600000>;
>> +				regulator-max-microvolt = <3400000>;
>>   				regulator-boot-on;
>>   				regulator-always-on;
>>   			};
>>   
>>   			BUCK5 {
>>   				regulator-name = "BUCK5";
>> -				regulator-min-microvolt = <1650000>;
>> -				regulator-max-microvolt = <1950000>;
>> +				regulator-min-microvolt = <600000>;
>> +				regulator-max-microvolt = <3400000>;
>>   				regulator-boot-on;
>>   				regulator-always-on;
>>   			};
>>   
>>   			BUCK6 {
>>   				regulator-name = "BUCK6";
>> -				regulator-min-microvolt = <1045000>;
>> -				regulator-max-microvolt = <1155000>;
>> +				regulator-min-microvolt = <600000>;
>> +				regulator-max-microvolt = <3400000>;
>>   				regulator-boot-on;
>>   				regulator-always-on;
>>   			};
>>   
>>   			LDO1 {
>>   				regulator-name = "LDO1";
>> -				regulator-min-microvolt = <1650000>;
>> -				regulator-max-microvolt = <1950000>;
>> +				regulator-min-microvolt = <1600000>;
>> +				regulator-max-microvolt = <3300000>;
>> +				regulator-boot-on;
>> +				regulator-always-on;
>> +			};
>> +
>> +			LDO2 {
>> +				regulator-name = "LDO2";
>> +				regulator-min-microvolt = <800000>;
>> +				regulator-max-microvolt = <1150000>;
>>   				regulator-boot-on;
>>   				regulator-always-on;
>>   			};
>>   
>>   			LDO3 {
>>   				regulator-name = "LDO3";
>> -				regulator-min-microvolt = <1710000>;
>> -				regulator-max-microvolt = <1890000>;
>> +				regulator-min-microvolt = <800000>;
>> +				regulator-max-microvolt = <3300000>;
>> +				regulator-boot-on;
>> +				regulator-always-on;
>> +			};
>> +
>> +			ldo4: LDO4 {
>> +				regulator-name = "LDO4";
>> +				regulator-min-microvolt = <800000>;
>> +				regulator-max-microvolt = <3300000>;
>>   				regulator-boot-on;
>>   				regulator-always-on;
>>   			};
>> -- 
>> 2.37.1
>>
>>
>>
  
Jacky Bai Oct. 21, 2022, 9:44 a.m. UTC | #3
> Subject: Re: [PATCH 03/15] arm64: dts: imx8mp-evk: fix BUCK/LDO voltage
> 
> Hi Marco
> 
> On 10/20/2022 7:02 PM, Marco Felsch wrote:
> > Hi Peng,
> >
> > On 22-10-20, Peng Fan (OSS) wrote:
> >> From: Peng Fan <peng.fan@nxp.com>
> >>
> >> Per PCA9450C datasheet, the voltage range as below:
> >> BUCK1 0.6 - 2.1875
> >> BUCK2 0.6 - 2.1875
> >> BUCK4 0.6 - 3.4
> >> BUCK5 0.6 - 3.4
> >> BUCK6 0.6 - 3.4
> >>
> >> LDO1 1.6-1.9, 3.0-3.3
> >> LDO2 0.8 – 1.15
> >> LDO3 0.8 - 3.3
> >> LDO4 0.8 - 3.3
> >> LDO5 1.8 - 3.3
> >>
> >> So correct them, and also add LDO[2,4]
> >
> > In the DTS you specify voltage constraints for a specific hardware and
> > not the one supported by the PMIC. What the PMIC supports (min/max) is
> > specified within the driver.
> 

IMO, the dts properties regulator-min/max-microvolt in the regulator node should be properties
to list the ability of each regulator of PMIC. If these properties is not for PMIC itself,
how to define the board range using these properties? ^_^

And in the PMIC driver, no each PMIC's min/max range define.

BR
> Technically we could set board voltage to PMIC voltage range, it not damage
> the board from hardware level.
> but I am not sure whether Linux could work proper.
> Saying set VDD_SOC/DDR to pmic min voltage, system will crash, because it
> could not support higher freq.
> 
> I am not sure how to proceed on this, just update commit log to say that the
> board voltage range could be set to pmic voltage range?
> 
> Thanks,
> Peng.
> 
> >
> > Regards,
> >    Marco
> >
> >>
> >> Fixes: 5497bc2a2bff ("arm64: dts: imx8mp-evk: Add PMIC device")
> >> Signed-off-by: Peng Fan <peng.fan@nxp.com>
> >> ---
> >>   arch/arm64/boot/dts/freescale/imx8mp-evk.dts | 44
> +++++++++++++-------
> >>   1 file changed, 30 insertions(+), 14 deletions(-)
> >>
> >> diff --git a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> >> b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> >> index b4c1ef2559f2..a4cddc5a8620 100644
> >> --- a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> >> +++ b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
> >> @@ -248,8 +248,8 @@ pmic@25 {
> >>   		regulators {
> >>   			BUCK1 {
> >>   				regulator-name = "BUCK1";
> >> -				regulator-min-microvolt = <720000>;
> >> -				regulator-max-microvolt = <1000000>;
> >> +				regulator-min-microvolt = <600000>;
> >> +				regulator-max-microvolt = <2187500>;
> >>   				regulator-boot-on;
> >>   				regulator-always-on;
> >>   				regulator-ramp-delay = <3125>;
> >> @@ -257,8 +257,8 @@ BUCK1 {
> >>
> >>   			reg_arm: BUCK2 {
> >>   				regulator-name = "BUCK2";
> >> -				regulator-min-microvolt = <720000>;
> >> -				regulator-max-microvolt = <1025000>;
> >> +				regulator-min-microvolt = <600000>;
> >> +				regulator-max-microvolt = <2187500>;
> >>   				regulator-boot-on;
> >>   				regulator-always-on;
> >>   				regulator-ramp-delay = <3125>;
> >> @@ -268,40 +268,56 @@ reg_arm: BUCK2 {
> >>
> >>   			BUCK4 {
> >>   				regulator-name = "BUCK4";
> >> -				regulator-min-microvolt = <3000000>;
> >> -				regulator-max-microvolt = <3600000>;
> >> +				regulator-min-microvolt = <600000>;
> >> +				regulator-max-microvolt = <3400000>;
> >>   				regulator-boot-on;
> >>   				regulator-always-on;
> >>   			};
> >>
> >>   			BUCK5 {
> >>   				regulator-name = "BUCK5";
> >> -				regulator-min-microvolt = <1650000>;
> >> -				regulator-max-microvolt = <1950000>;
> >> +				regulator-min-microvolt = <600000>;
> >> +				regulator-max-microvolt = <3400000>;
> >>   				regulator-boot-on;
> >>   				regulator-always-on;
> >>   			};
> >>
> >>   			BUCK6 {
> >>   				regulator-name = "BUCK6";
> >> -				regulator-min-microvolt = <1045000>;
> >> -				regulator-max-microvolt = <1155000>;
> >> +				regulator-min-microvolt = <600000>;
> >> +				regulator-max-microvolt = <3400000>;
> >>   				regulator-boot-on;
> >>   				regulator-always-on;
> >>   			};
> >>
> >>   			LDO1 {
> >>   				regulator-name = "LDO1";
> >> -				regulator-min-microvolt = <1650000>;
> >> -				regulator-max-microvolt = <1950000>;
> >> +				regulator-min-microvolt = <1600000>;
> >> +				regulator-max-microvolt = <3300000>;
> >> +				regulator-boot-on;
> >> +				regulator-always-on;
> >> +			};
> >> +
> >> +			LDO2 {
> >> +				regulator-name = "LDO2";
> >> +				regulator-min-microvolt = <800000>;
> >> +				regulator-max-microvolt = <1150000>;
> >>   				regulator-boot-on;
> >>   				regulator-always-on;
> >>   			};
> >>
> >>   			LDO3 {
> >>   				regulator-name = "LDO3";
> >> -				regulator-min-microvolt = <1710000>;
> >> -				regulator-max-microvolt = <1890000>;
> >> +				regulator-min-microvolt = <800000>;
> >> +				regulator-max-microvolt = <3300000>;
> >> +				regulator-boot-on;
> >> +				regulator-always-on;
> >> +			};
> >> +
> >> +			ldo4: LDO4 {
> >> +				regulator-name = "LDO4";
> >> +				regulator-min-microvolt = <800000>;
> >> +				regulator-max-microvolt = <3300000>;
> >>   				regulator-boot-on;
> >>   				regulator-always-on;
> >>   			};
> >> --
> >> 2.37.1
> >>
> >>
> >>
  

Patch

diff --git a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
index b4c1ef2559f2..a4cddc5a8620 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mp-evk.dts
@@ -248,8 +248,8 @@  pmic@25 {
 		regulators {
 			BUCK1 {
 				regulator-name = "BUCK1";
-				regulator-min-microvolt = <720000>;
-				regulator-max-microvolt = <1000000>;
+				regulator-min-microvolt = <600000>;
+				regulator-max-microvolt = <2187500>;
 				regulator-boot-on;
 				regulator-always-on;
 				regulator-ramp-delay = <3125>;
@@ -257,8 +257,8 @@  BUCK1 {
 
 			reg_arm: BUCK2 {
 				regulator-name = "BUCK2";
-				regulator-min-microvolt = <720000>;
-				regulator-max-microvolt = <1025000>;
+				regulator-min-microvolt = <600000>;
+				regulator-max-microvolt = <2187500>;
 				regulator-boot-on;
 				regulator-always-on;
 				regulator-ramp-delay = <3125>;
@@ -268,40 +268,56 @@  reg_arm: BUCK2 {
 
 			BUCK4 {
 				regulator-name = "BUCK4";
-				regulator-min-microvolt = <3000000>;
-				regulator-max-microvolt = <3600000>;
+				regulator-min-microvolt = <600000>;
+				regulator-max-microvolt = <3400000>;
 				regulator-boot-on;
 				regulator-always-on;
 			};
 
 			BUCK5 {
 				regulator-name = "BUCK5";
-				regulator-min-microvolt = <1650000>;
-				regulator-max-microvolt = <1950000>;
+				regulator-min-microvolt = <600000>;
+				regulator-max-microvolt = <3400000>;
 				regulator-boot-on;
 				regulator-always-on;
 			};
 
 			BUCK6 {
 				regulator-name = "BUCK6";
-				regulator-min-microvolt = <1045000>;
-				regulator-max-microvolt = <1155000>;
+				regulator-min-microvolt = <600000>;
+				regulator-max-microvolt = <3400000>;
 				regulator-boot-on;
 				regulator-always-on;
 			};
 
 			LDO1 {
 				regulator-name = "LDO1";
-				regulator-min-microvolt = <1650000>;
-				regulator-max-microvolt = <1950000>;
+				regulator-min-microvolt = <1600000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-boot-on;
+				regulator-always-on;
+			};
+
+			LDO2 {
+				regulator-name = "LDO2";
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <1150000>;
 				regulator-boot-on;
 				regulator-always-on;
 			};
 
 			LDO3 {
 				regulator-name = "LDO3";
-				regulator-min-microvolt = <1710000>;
-				regulator-max-microvolt = <1890000>;
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <3300000>;
+				regulator-boot-on;
+				regulator-always-on;
+			};
+
+			ldo4: LDO4 {
+				regulator-name = "LDO4";
+				regulator-min-microvolt = <800000>;
+				regulator-max-microvolt = <3300000>;
 				regulator-boot-on;
 				regulator-always-on;
 			};