diff mbox

[v2,06/16] arm64: dts: mt7622: add cpufreq related device nodes

Message ID fc5bdf53b92bd7a96e94b714d8d13deebca95c28.1517910489.git.sean.wang@mediatek.com (mailing list archive)
State New, archived
Headers show

Commit Message

Sean Wang Feb. 6, 2018, 9:52 a.m. UTC
From: Sean Wang <sean.wang@mediatek.com>

Add clocks, regulators and opp information into cpu nodes.
In addition, the power supply for cpu nodes is deployed on
mt7622-rfb1 board.

Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Cc: Viresh Kumar <viresh.kumar@linaro.org>
---
 arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts | 12 +++++++
 arch/arm64/boot/dts/mediatek/mt7622.dtsi     | 49 ++++++++++++++++++++++++++++
 2 files changed, 61 insertions(+)

Comments

Viresh Kumar Feb. 7, 2018, 3:33 a.m. UTC | #1
On 06-02-18, 17:52, sean.wang@mediatek.com wrote:
>  	cpus {
>  		#address-cells = <2>;
>  		#size-cells = <0>;
> @@ -26,6 +70,10 @@
>  			device_type = "cpu";
>  			compatible = "arm,cortex-a53", "arm,armv8";
>  			reg = <0x0 0x0>;
> +			clocks = <&infracfg CLK_INFRA_MUX1_SEL>,
> +				 <&apmixedsys CLK_APMIXED_MAIN_CORE_EN>;
> +			clock-names = "cpu", "intermediate";
> +			operating-points-v2 = <&cpu_opp_table>;
>  			enable-method = "psci";
>  			clock-frequency = <1300000000>;
>  		};
> @@ -34,6 +82,7 @@
>  			device_type = "cpu";
>  			compatible = "arm,cortex-a53", "arm,armv8";
>  			reg = <0x0 0x1>;
> +			operating-points-v2 = <&cpu_opp_table>;
>  			enable-method = "psci";
>  			clock-frequency = <1300000000>;
>  		};

Sorry for not picking this earlier, but you should probably add the same clock
related properties for both cpu nodes here. Things will break if CPU1 is used by
the cpufreq core to bring the cpufreq policy online.

This can happen if cpufreq driver is a module, CPU0 is hotplugged out and then
the cpufreq driver is inserted.
Sean Wang Feb. 7, 2018, 6:16 a.m. UTC | #2
On Wed, 2018-02-07 at 09:03 +0530, Viresh Kumar wrote:
> On 06-02-18, 17:52, sean.wang@mediatek.com wrote:
> >  	cpus {
> >  		#address-cells = <2>;
> >  		#size-cells = <0>;
> > @@ -26,6 +70,10 @@
> >  			device_type = "cpu";
> >  			compatible = "arm,cortex-a53", "arm,armv8";
> >  			reg = <0x0 0x0>;
> > +			clocks = <&infracfg CLK_INFRA_MUX1_SEL>,
> > +				 <&apmixedsys CLK_APMIXED_MAIN_CORE_EN>;
> > +			clock-names = "cpu", "intermediate";
> > +			operating-points-v2 = <&cpu_opp_table>;
> >  			enable-method = "psci";
> >  			clock-frequency = <1300000000>;
> >  		};
> > @@ -34,6 +82,7 @@
> >  			device_type = "cpu";
> >  			compatible = "arm,cortex-a53", "arm,armv8";
> >  			reg = <0x0 0x1>;
> > +			operating-points-v2 = <&cpu_opp_table>;
> >  			enable-method = "psci";
> >  			clock-frequency = <1300000000>;
> >  		};
> 
> Sorry for not picking this earlier, but you should probably add the same clock
> related properties for both cpu nodes here. Things will break if CPU1 is used by
> the cpufreq core to bring the cpufreq policy online.
> 
> This can happen if cpufreq driver is a module, CPU0 is hotplugged out and then
> the cpufreq driver is inserted.
> 

mt7622 cpu0 does not support hotplug. do I still need to add same clock
related properties for both cpu nodes here?
Viresh Kumar Feb. 7, 2018, 6:18 a.m. UTC | #3
On 07-02-18, 14:16, Sean Wang wrote:
> On Wed, 2018-02-07 at 09:03 +0530, Viresh Kumar wrote:
> > On 06-02-18, 17:52, sean.wang@mediatek.com wrote:
> > >  	cpus {
> > >  		#address-cells = <2>;
> > >  		#size-cells = <0>;
> > > @@ -26,6 +70,10 @@
> > >  			device_type = "cpu";
> > >  			compatible = "arm,cortex-a53", "arm,armv8";
> > >  			reg = <0x0 0x0>;
> > > +			clocks = <&infracfg CLK_INFRA_MUX1_SEL>,
> > > +				 <&apmixedsys CLK_APMIXED_MAIN_CORE_EN>;
> > > +			clock-names = "cpu", "intermediate";
> > > +			operating-points-v2 = <&cpu_opp_table>;
> > >  			enable-method = "psci";
> > >  			clock-frequency = <1300000000>;
> > >  		};
> > > @@ -34,6 +82,7 @@
> > >  			device_type = "cpu";
> > >  			compatible = "arm,cortex-a53", "arm,armv8";
> > >  			reg = <0x0 0x1>;
> > > +			operating-points-v2 = <&cpu_opp_table>;
> > >  			enable-method = "psci";
> > >  			clock-frequency = <1300000000>;
> > >  		};
> > 
> > Sorry for not picking this earlier, but you should probably add the same clock
> > related properties for both cpu nodes here. Things will break if CPU1 is used by
> > the cpufreq core to bring the cpufreq policy online.
> > 
> > This can happen if cpufreq driver is a module, CPU0 is hotplugged out and then
> > the cpufreq driver is inserted.
> > 
> 
> mt7622 cpu0 does not support hotplug. do I still need to add same clock
> related properties for both cpu nodes here?

Normally we should always add these properties to all the CPUs, as that's the
real scenario hardware configuration wise.

But I am not sure if something else will break if you don't provide clocks in
CPU1.

@Rob @Mark: What do you suggest ?
Sean Wang Feb. 7, 2018, 8:34 a.m. UTC | #4
On Wed, 2018-02-07 at 11:48 +0530, Viresh Kumar wrote:
> On 07-02-18, 14:16, Sean Wang wrote:
> > On Wed, 2018-02-07 at 09:03 +0530, Viresh Kumar wrote:
> > > On 06-02-18, 17:52, sean.wang@mediatek.com wrote:
> > > >  	cpus {
> > > >  		#address-cells = <2>;
> > > >  		#size-cells = <0>;
> > > > @@ -26,6 +70,10 @@
> > > >  			device_type = "cpu";
> > > >  			compatible = "arm,cortex-a53", "arm,armv8";
> > > >  			reg = <0x0 0x0>;
> > > > +			clocks = <&infracfg CLK_INFRA_MUX1_SEL>,
> > > > +				 <&apmixedsys CLK_APMIXED_MAIN_CORE_EN>;
> > > > +			clock-names = "cpu", "intermediate";
> > > > +			operating-points-v2 = <&cpu_opp_table>;
> > > >  			enable-method = "psci";
> > > >  			clock-frequency = <1300000000>;
> > > >  		};
> > > > @@ -34,6 +82,7 @@
> > > >  			device_type = "cpu";
> > > >  			compatible = "arm,cortex-a53", "arm,armv8";
> > > >  			reg = <0x0 0x1>;
> > > > +			operating-points-v2 = <&cpu_opp_table>;
> > > >  			enable-method = "psci";
> > > >  			clock-frequency = <1300000000>;
> > > >  		};
> > > 
> > > Sorry for not picking this earlier, but you should probably add the same clock
> > > related properties for both cpu nodes here. Things will break if CPU1 is used by
> > > the cpufreq core to bring the cpufreq policy online.
> > > 
> > > This can happen if cpufreq driver is a module, CPU0 is hotplugged out and then
> > > the cpufreq driver is inserted.
> > > 
> > 
> > mt7622 cpu0 does not support hotplug. do I still need to add same clock
> > related properties for both cpu nodes here?
> 
> Normally we should always add these properties to all the CPUs, as that's the
> real scenario hardware configuration wise.
> 

Agree on, I will add these missing clock properties also into the cpu1
node to reflect the hardware actually should have. 

That also is devicetree wants us to do to describe the device more
closely.

> But I am not sure if something else will break if you don't provide clocks in
> CPU1.
> 
> @Rob @Mark: What do you suggest ?
>
diff mbox

Patch

diff --git a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
index 4615af6..bbf4d03 100644
--- a/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
+++ b/arch/arm64/boot/dts/mediatek/mt7622-rfb1.dts
@@ -20,6 +20,18 @@ 
 		bootargs = "console=ttyS0,115200n1";
 	};
 
+	cpus {
+		cpu@0 {
+			proc-supply = <&mt6380_vcpu_reg>;
+			sram-supply = <&mt6380_vm_reg>;
+		};
+
+		cpu@1 {
+			proc-supply = <&mt6380_vcpu_reg>;
+			sram-supply = <&mt6380_vm_reg>;
+		};
+	};
+
 	gpio-keys {
 		compatible = "gpio-keys-polled";
 		poll-interval = <100>;
diff --git a/arch/arm64/boot/dts/mediatek/mt7622.dtsi b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
index c387c4c..65eb417 100644
--- a/arch/arm64/boot/dts/mediatek/mt7622.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt7622.dtsi
@@ -18,6 +18,50 @@ 
 	#address-cells = <2>;
 	#size-cells = <2>;
 
+	cpu_opp_table: opp-table {
+		compatible = "operating-points-v2";
+		opp-shared;
+		opp-300000000 {
+			opp-hz = /bits/ 64 <30000000>;
+			opp-microvolt = <950000>;
+		};
+
+		opp-437500000 {
+			opp-hz = /bits/ 64 <437500000>;
+			opp-microvolt = <1000000>;
+		};
+
+		opp-600000000 {
+			opp-hz = /bits/ 64 <600000000>;
+			opp-microvolt = <1050000>;
+		};
+
+		opp-812500000 {
+			opp-hz = /bits/ 64 <812500000>;
+			opp-microvolt = <1100000>;
+		};
+
+		opp-1025000000 {
+			opp-hz = /bits/ 64 <1025000000>;
+			opp-microvolt = <1150000>;
+		};
+
+		opp-1137500000 {
+			opp-hz = /bits/ 64 <1137500000>;
+			opp-microvolt = <1200000>;
+		};
+
+		opp-1262500000 {
+			opp-hz = /bits/ 64 <1262500000>;
+			opp-microvolt = <1250000>;
+		};
+
+		opp-1350000000 {
+			opp-hz = /bits/ 64 <1350000000>;
+			opp-microvolt = <1310000>;
+		};
+	};
+
 	cpus {
 		#address-cells = <2>;
 		#size-cells = <0>;
@@ -26,6 +70,10 @@ 
 			device_type = "cpu";
 			compatible = "arm,cortex-a53", "arm,armv8";
 			reg = <0x0 0x0>;
+			clocks = <&infracfg CLK_INFRA_MUX1_SEL>,
+				 <&apmixedsys CLK_APMIXED_MAIN_CORE_EN>;
+			clock-names = "cpu", "intermediate";
+			operating-points-v2 = <&cpu_opp_table>;
 			enable-method = "psci";
 			clock-frequency = <1300000000>;
 		};
@@ -34,6 +82,7 @@ 
 			device_type = "cpu";
 			compatible = "arm,cortex-a53", "arm,armv8";
 			reg = <0x0 0x1>;
+			operating-points-v2 = <&cpu_opp_table>;
 			enable-method = "psci";
 			clock-frequency = <1300000000>;
 		};