diff mbox series

[03/17] ARM: dts: qcom: add missing rpm regulators and cells for ipq8064

Message ID 20220118012051.21691-4-ansuelsmth@gmail.com
State Superseded
Headers show
Series Multiple addition to ipq8064 dtsi | expand

Commit Message

Christian Marangi Jan. 18, 2022, 1:20 a.m. UTC
Add cells definition for rpm node and add missing regulators for the 4
regulator present on ipq8064. There regulators are controlled by rpm and
to correctly works gsbi4_i2c require to be NEVER disabled or rpm will
reject any regulator change request.

Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
---
 arch/arm/boot/dts/qcom-ipq8064.dtsi | 35 +++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

Comments

Bjorn Andersson Jan. 31, 2022, 10:46 p.m. UTC | #1
On Mon 17 Jan 19:20 CST 2022, Ansuel Smith wrote:

> Add cells definition for rpm node and add missing regulators for the 4
> regulator present on ipq8064. There regulators are controlled by rpm and
> to correctly works gsbi4_i2c require to be NEVER disabled or rpm will
> reject any regulator change request.
> 

Is the SMB208 mandatory on all ipq8064 designs, or should this be pushed
out to the device dts?

Regards,
Bjorn

> Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
> ---
>  arch/arm/boot/dts/qcom-ipq8064.dtsi | 35 +++++++++++++++++++++++++++++
>  1 file changed, 35 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/qcom-ipq8064.dtsi b/arch/arm/boot/dts/qcom-ipq8064.dtsi
> index 094125605bea..824cf13dd037 100644
> --- a/arch/arm/boot/dts/qcom-ipq8064.dtsi
> +++ b/arch/arm/boot/dts/qcom-ipq8064.dtsi
> @@ -829,10 +829,45 @@ rpm: rpm@108000 {
>  			clocks = <&gcc RPM_MSG_RAM_H_CLK>;
>  			clock-names = "ram";
>  
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +
>  			rpmcc: clock-controller {
>  				compatible = "qcom,rpmcc-ipq806x", "qcom,rpmcc";
>  				#clock-cells = <1>;
>  			};
> +
> +			regulators {
> +				compatible = "qcom,rpm-smb208-regulators";
> +
> +				smb208_s1a: s1a {
> +					regulator-min-microvolt = <1050000>;
> +					regulator-max-microvolt = <1150000>;
> +
> +					qcom,switch-mode-frequency = <1200000>;
> +				};
> +
> +				smb208_s1b: s1b {
> +					regulator-min-microvolt = <1050000>;
> +					regulator-max-microvolt = <1150000>;
> +
> +					qcom,switch-mode-frequency = <1200000>;
> +				};
> +
> +				smb208_s2a: s2a {
> +					regulator-min-microvolt = < 800000>;
> +					regulator-max-microvolt = <1250000>;
> +
> +					qcom,switch-mode-frequency = <1200000>;
> +				};
> +
> +				smb208_s2b: s2b {
> +					regulator-min-microvolt = < 800000>;
> +					regulator-max-microvolt = <1250000>;
> +
> +					qcom,switch-mode-frequency = <1200000>;
> +				};
> +			};
>  		};
>  
>  		tcsr: syscon@1a400000 {
> -- 
> 2.33.1
>
Jonathan McDowell Feb. 1, 2022, 2:39 p.m. UTC | #2
On Mon, Jan 31, 2022 at 04:46:18PM -0600, Bjorn Andersson wrote:
> On Mon 17 Jan 19:20 CST 2022, Ansuel Smith wrote:
> 
> > Add cells definition for rpm node and add missing regulators for the 4
> > regulator present on ipq8064. There regulators are controlled by rpm and
> > to correctly works gsbi4_i2c require to be NEVER disabled or rpm will
> > reject any regulator change request.
> > 
> 
> Is the SMB208 mandatory on all ipq8064 designs, or should this be pushed
> out to the device dts?

It's not; the RB3011 uses a different regulator (a TPS563900).

> > Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
> > ---
> >  arch/arm/boot/dts/qcom-ipq8064.dtsi | 35 +++++++++++++++++++++++++++++
> >  1 file changed, 35 insertions(+)
> > 
> > diff --git a/arch/arm/boot/dts/qcom-ipq8064.dtsi b/arch/arm/boot/dts/qcom-ipq8064.dtsi
> > index 094125605bea..824cf13dd037 100644
> > --- a/arch/arm/boot/dts/qcom-ipq8064.dtsi
> > +++ b/arch/arm/boot/dts/qcom-ipq8064.dtsi
> > @@ -829,10 +829,45 @@ rpm: rpm@108000 {
> >  			clocks = <&gcc RPM_MSG_RAM_H_CLK>;
> >  			clock-names = "ram";
> >  
> > +			#address-cells = <1>;
> > +			#size-cells = <0>;
> > +
> >  			rpmcc: clock-controller {
> >  				compatible = "qcom,rpmcc-ipq806x", "qcom,rpmcc";
> >  				#clock-cells = <1>;
> >  			};
> > +
> > +			regulators {
> > +				compatible = "qcom,rpm-smb208-regulators";
> > +
> > +				smb208_s1a: s1a {
> > +					regulator-min-microvolt = <1050000>;
> > +					regulator-max-microvolt = <1150000>;
> > +
> > +					qcom,switch-mode-frequency = <1200000>;
> > +				};
> > +
> > +				smb208_s1b: s1b {
> > +					regulator-min-microvolt = <1050000>;
> > +					regulator-max-microvolt = <1150000>;
> > +
> > +					qcom,switch-mode-frequency = <1200000>;
> > +				};
> > +
> > +				smb208_s2a: s2a {
> > +					regulator-min-microvolt = < 800000>;
> > +					regulator-max-microvolt = <1250000>;
> > +
> > +					qcom,switch-mode-frequency = <1200000>;
> > +				};
> > +
> > +				smb208_s2b: s2b {
> > +					regulator-min-microvolt = < 800000>;
> > +					regulator-max-microvolt = <1250000>;
> > +
> > +					qcom,switch-mode-frequency = <1200000>;
> > +				};
> > +			};
> >  		};
> >  
> >  		tcsr: syscon@1a400000 {
> > -- 
> > 2.33.1
> > 

J.
Christian Marangi Feb. 1, 2022, 9:58 p.m. UTC | #3
On Tue, Feb 01, 2022 at 02:39:20PM +0000, Jonathan McDowell wrote:
> On Mon, Jan 31, 2022 at 04:46:18PM -0600, Bjorn Andersson wrote:
> > On Mon 17 Jan 19:20 CST 2022, Ansuel Smith wrote:
> > 
> > > Add cells definition for rpm node and add missing regulators for the 4
> > > regulator present on ipq8064. There regulators are controlled by rpm and
> > > to correctly works gsbi4_i2c require to be NEVER disabled or rpm will
> > > reject any regulator change request.
> > > 
> > 
> > Is the SMB208 mandatory on all ipq8064 designs, or should this be pushed
> > out to the device dts?
> 
> It's not; the RB3011 uses a different regulator (a TPS563900).
>

Fact is that that's a special case. We have 20 devices based on ipq806x
and they all have smb208 regulators.

Is the TPS563900 also controlled by rpm? 

Anyway should we use a dedicated dtsi to declare the correct regulators?

> > > Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
> > > ---
> > >  arch/arm/boot/dts/qcom-ipq8064.dtsi | 35 +++++++++++++++++++++++++++++
> > >  1 file changed, 35 insertions(+)
> > > 
> > > diff --git a/arch/arm/boot/dts/qcom-ipq8064.dtsi b/arch/arm/boot/dts/qcom-ipq8064.dtsi
> > > index 094125605bea..824cf13dd037 100644
> > > --- a/arch/arm/boot/dts/qcom-ipq8064.dtsi
> > > +++ b/arch/arm/boot/dts/qcom-ipq8064.dtsi
> > > @@ -829,10 +829,45 @@ rpm: rpm@108000 {
> > >  			clocks = <&gcc RPM_MSG_RAM_H_CLK>;
> > >  			clock-names = "ram";
> > >  
> > > +			#address-cells = <1>;
> > > +			#size-cells = <0>;
> > > +
> > >  			rpmcc: clock-controller {
> > >  				compatible = "qcom,rpmcc-ipq806x", "qcom,rpmcc";
> > >  				#clock-cells = <1>;
> > >  			};
> > > +
> > > +			regulators {
> > > +				compatible = "qcom,rpm-smb208-regulators";
> > > +
> > > +				smb208_s1a: s1a {
> > > +					regulator-min-microvolt = <1050000>;
> > > +					regulator-max-microvolt = <1150000>;
> > > +
> > > +					qcom,switch-mode-frequency = <1200000>;
> > > +				};
> > > +
> > > +				smb208_s1b: s1b {
> > > +					regulator-min-microvolt = <1050000>;
> > > +					regulator-max-microvolt = <1150000>;
> > > +
> > > +					qcom,switch-mode-frequency = <1200000>;
> > > +				};
> > > +
> > > +				smb208_s2a: s2a {
> > > +					regulator-min-microvolt = < 800000>;
> > > +					regulator-max-microvolt = <1250000>;
> > > +
> > > +					qcom,switch-mode-frequency = <1200000>;
> > > +				};
> > > +
> > > +				smb208_s2b: s2b {
> > > +					regulator-min-microvolt = < 800000>;
> > > +					regulator-max-microvolt = <1250000>;
> > > +
> > > +					qcom,switch-mode-frequency = <1200000>;
> > > +				};
> > > +			};
> > >  		};
> > >  
> > >  		tcsr: syscon@1a400000 {
> > > -- 
> > > 2.33.1
> > > 
> 
> J.
> 
> -- 
> ... "There's no money, there's no weed. It's all been replaced by a fucking
>     big pile of corpses."  -- Lock, Stock and Two Smoking Barrels
Jonathan McDowell Feb. 2, 2022, 8:03 a.m. UTC | #4
On Tue, Feb 01, 2022 at 10:58:52PM +0100, Ansuel Smith wrote:
> On Tue, Feb 01, 2022 at 02:39:20PM +0000, Jonathan McDowell wrote:
> > On Mon, Jan 31, 2022 at 04:46:18PM -0600, Bjorn Andersson wrote:
> > > On Mon 17 Jan 19:20 CST 2022, Ansuel Smith wrote:
> > > 
> > > > Add cells definition for rpm node and add missing regulators for the 4
> > > > regulator present on ipq8064. There regulators are controlled by rpm and
> > > > to correctly works gsbi4_i2c require to be NEVER disabled or rpm will
> > > > reject any regulator change request.
> > > > 
> > > 
> > > Is the SMB208 mandatory on all ipq8064 designs, or should this be pushed
> > > out to the device dts?
> > 
> > It's not; the RB3011 uses a different regulator (a TPS563900).
> >
> 
> Fact is that that's a special case. We have 20 devices based on ipq806x
> and they all have smb208 regulators.

Indeed, it's another Mikrotik special unfortunately (I haven't managed
to get the SMEM driver to work on the platform either).

> Is the TPS563900 also controlled by rpm?

AFAICT it's CPU controlled via I2C. It looks like one output is shared
for the CPU cores etc and the other is for the NSS cores, rather than
the full control the smb208 offers.

> Anyway should we use a dedicated dtsi to declare the correct regulators?

I've got no problem with smb208 being the default, but please add any
appropriate disabling of it to the RB3011 DTS.

> > > > Signed-off-by: Ansuel Smith <ansuelsmth@gmail.com>
> > > > ---
> > > >  arch/arm/boot/dts/qcom-ipq8064.dtsi | 35 +++++++++++++++++++++++++++++
> > > >  1 file changed, 35 insertions(+)
> > > > 
> > > > diff --git a/arch/arm/boot/dts/qcom-ipq8064.dtsi b/arch/arm/boot/dts/qcom-ipq8064.dtsi
> > > > index 094125605bea..824cf13dd037 100644
> > > > --- a/arch/arm/boot/dts/qcom-ipq8064.dtsi
> > > > +++ b/arch/arm/boot/dts/qcom-ipq8064.dtsi
> > > > @@ -829,10 +829,45 @@ rpm: rpm@108000 {
> > > >  			clocks = <&gcc RPM_MSG_RAM_H_CLK>;
> > > >  			clock-names = "ram";
> > > >  
> > > > +			#address-cells = <1>;
> > > > +			#size-cells = <0>;
> > > > +
> > > >  			rpmcc: clock-controller {
> > > >  				compatible = "qcom,rpmcc-ipq806x", "qcom,rpmcc";
> > > >  				#clock-cells = <1>;
> > > >  			};
> > > > +
> > > > +			regulators {
> > > > +				compatible = "qcom,rpm-smb208-regulators";
> > > > +
> > > > +				smb208_s1a: s1a {
> > > > +					regulator-min-microvolt = <1050000>;
> > > > +					regulator-max-microvolt = <1150000>;
> > > > +
> > > > +					qcom,switch-mode-frequency = <1200000>;
> > > > +				};
> > > > +
> > > > +				smb208_s1b: s1b {
> > > > +					regulator-min-microvolt = <1050000>;
> > > > +					regulator-max-microvolt = <1150000>;
> > > > +
> > > > +					qcom,switch-mode-frequency = <1200000>;
> > > > +				};
> > > > +
> > > > +				smb208_s2a: s2a {
> > > > +					regulator-min-microvolt = < 800000>;
> > > > +					regulator-max-microvolt = <1250000>;
> > > > +
> > > > +					qcom,switch-mode-frequency = <1200000>;
> > > > +				};
> > > > +
> > > > +				smb208_s2b: s2b {
> > > > +					regulator-min-microvolt = < 800000>;
> > > > +					regulator-max-microvolt = <1250000>;
> > > > +
> > > > +					qcom,switch-mode-frequency = <1200000>;
> > > > +				};
> > > > +			};
> > > >  		};
> > > >  
> > > >  		tcsr: syscon@1a400000 {
> > > > -- 
> > > > 2.33.1

J.
diff mbox series

Patch

diff --git a/arch/arm/boot/dts/qcom-ipq8064.dtsi b/arch/arm/boot/dts/qcom-ipq8064.dtsi
index 094125605bea..824cf13dd037 100644
--- a/arch/arm/boot/dts/qcom-ipq8064.dtsi
+++ b/arch/arm/boot/dts/qcom-ipq8064.dtsi
@@ -829,10 +829,45 @@  rpm: rpm@108000 {
 			clocks = <&gcc RPM_MSG_RAM_H_CLK>;
 			clock-names = "ram";
 
+			#address-cells = <1>;
+			#size-cells = <0>;
+
 			rpmcc: clock-controller {
 				compatible = "qcom,rpmcc-ipq806x", "qcom,rpmcc";
 				#clock-cells = <1>;
 			};
+
+			regulators {
+				compatible = "qcom,rpm-smb208-regulators";
+
+				smb208_s1a: s1a {
+					regulator-min-microvolt = <1050000>;
+					regulator-max-microvolt = <1150000>;
+
+					qcom,switch-mode-frequency = <1200000>;
+				};
+
+				smb208_s1b: s1b {
+					regulator-min-microvolt = <1050000>;
+					regulator-max-microvolt = <1150000>;
+
+					qcom,switch-mode-frequency = <1200000>;
+				};
+
+				smb208_s2a: s2a {
+					regulator-min-microvolt = < 800000>;
+					regulator-max-microvolt = <1250000>;
+
+					qcom,switch-mode-frequency = <1200000>;
+				};
+
+				smb208_s2b: s2b {
+					regulator-min-microvolt = < 800000>;
+					regulator-max-microvolt = <1250000>;
+
+					qcom,switch-mode-frequency = <1200000>;
+				};
+			};
 		};
 
 		tcsr: syscon@1a400000 {