Thread (40 messages) 40 messages, 10 authors, 2014-09-02
STALE4297d

[PATCH v9 3/6] ARM: dts: Exynos: add CPU OPP and regulator supply property

From: dianders@chromium.org (Doug Anderson)
Date: 2014-07-31 04:08:05
Also in: linux-pm, linux-samsung-soc

Thomas,

On Wed, Jul 30, 2014 at 9:06 PM, Thomas Abraham [off-list ref] wrote:
On Thu, Jul 31, 2014 at 9:23 AM, Doug Anderson [off-list ref] wrote:
quoted
Thomas,

On Wed, Jul 30, 2014 at 8:21 PM, Thomas Abraham [off-list ref] wrote:
quoted
Hi Doug,

On Thu, Jul 31, 2014 at 6:07 AM, Doug Anderson [off-list ref] wrote:
quoted
Thomas,

On Wed, Jul 30, 2014 at 1:07 AM, Thomas Abraham [off-list ref] wrote:
quoted
diff --git a/arch/arm/boot/dts/exynos5250-arndale.dts b/arch/arm/boot/dts/exynos5250-arndale.dts
index d0de1f5..3b12a97 100644
--- a/arch/arm/boot/dts/exynos5250-arndale.dts
+++ b/arch/arm/boot/dts/exynos5250-arndale.dts
@@ -575,3 +575,7 @@
                usb-phy = <&usb2_phy>;
        };
 };
+
+&cpu0 {
+       cpu0-supply = <&buck2_reg>;
+};
diff --git a/arch/arm/boot/dts/exynos5250-smdk5250.dts b/arch/arm/boot/dts/exynos5250-smdk5250.dts
index b4b35ad..f07e834 100644
--- a/arch/arm/boot/dts/exynos5250-smdk5250.dts
+++ b/arch/arm/boot/dts/exynos5250-smdk5250.dts
@@ -414,3 +414,7 @@
                };
        };
 };
+
+&cpu0 {
+       cpu0-supply = <&buck2_reg>;
+};
diff --git a/arch/arm/boot/dts/exynos5250-snow.dts b/arch/arm/boot/dts/exynos5250-snow.dts
index f2b8c41..91acca7 100644
--- a/arch/arm/boot/dts/exynos5250-snow.dts
+++ b/arch/arm/boot/dts/exynos5250-snow.dts
@@ -509,4 +509,8 @@
        };
 };

+&cpu0 {
+       cpu0-supply = <&buck2_reg>;
+};
+
 #include "cros-ec-keyboard.dtsi"
diff --git a/arch/arm/boot/dts/exynos5250.dtsi b/arch/arm/boot/dts/exynos5250.dtsi
index 492e1ef..97b282c 100644
--- a/arch/arm/boot/dts/exynos5250.dtsi
+++ b/arch/arm/boot/dts/exynos5250.dtsi
@@ -58,11 +58,34 @@
                #address-cells = <1>;
                #size-cells = <0>;

-               cpu at 0 {
+               cpu0: cpu at 0 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a15";
                        reg = <0>;
                        clock-frequency = <1700000000>;
+
+                       clocks = <&clock CLK_ARM_CLK>;
+                       clock-names = "cpu";
+                       clock-latency = <140000>;
Where did the 140000 number come from?  My old calculations show that
with lock time of 270 ad P up to 6 we were at 67.5us lock time.
I measured the time taken by clk_set_rate call in the cpufreq driver
using do_gettimeofday(). The time taken to change the clock speed was
between 87us to 134us for Exynos5420. So I just took the worst case
time of 140us. Also, the time taken to change the CPU clock speed
includes the settling time for changes to dividers and mux clock
blocks.
Interesting.  I wonder why the difference between my earlier
calculations.  It seems just about double.  :-/
In your calculation, only the PLL lock time is being considered. But
the 140us latency is for the whole clk_set_rate() call.
quoted
quoted
quoted
quoted
+                       operating-points = <
+                               1700000 1300000
+                               1600000 1250000
+                               1500000 1225000
+                               1400000 1200000
+                               1300000 1150000
+                               1200000 1125000
+                               1100000 1100000
+                               1000000 1075000
+                                900000 1050000
+                                800000 1025000
+                                700000 1012500
+                                600000 1000000
+                                500000  975000
+                                400000  950000
+                                300000  937500
+                                200000  925000
+                       >;
                };
                cpu at 1 {
                        device_type = "cpu";
diff --git a/arch/arm/boot/dts/exynos5420.dtsi b/arch/arm/boot/dts/exynos5420.dtsi
index cb2b70e..3154b4c 100644
--- a/arch/arm/boot/dts/exynos5420.dtsi
+++ b/arch/arm/boot/dts/exynos5420.dtsi
@@ -59,8 +59,26 @@
                        device_type = "cpu";
                        compatible = "arm,cortex-a15";
                        reg = <0x0>;
+                       clocks = <&clock CLK_ARM_CLK>;
+                       clock-names = "cpu-cluster.0";
                        clock-frequency = <1800000000>;
                        cci-control-port = <&cci_control1>;
+                       clock-latency = <140000>;
+
+                       operating-points = <
+                               1800000 1250000
+                               1700000 1212500
+                               1600000 1175000
+                               1500000 1137500
+                               1400000 1112500
+                               1300000 1062500
+                               1200000 1037500
+                               1100000 1012500
+                               1000000 987500
+                                900000 962500
+                                800000 937500
+                                700000 912500
+                       >;
                };

                cpu1: cpu at 1 {
@@ -69,6 +87,7 @@
                        reg = <0x1>;
                        clock-frequency = <1800000000>;
                        cci-control-port = <&cci_control1>;
+                       clock-latency = <140000>;
                };

                cpu2: cpu at 2 {
@@ -77,6 +96,7 @@
                        reg = <0x2>;
                        clock-frequency = <1800000000>;
                        cci-control-port = <&cci_control1>;
+                       clock-latency = <140000>;
                };

                cpu3: cpu at 3 {
@@ -85,14 +105,29 @@
                        reg = <0x3>;
                        clock-frequency = <1800000000>;
                        cci-control-port = <&cci_control1>;
+                       clock-latency = <140000>;
                };

                cpu4: cpu at 100 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a7";
                        reg = <0x100>;
+                       clocks = <&clock CLK_KFC_CLK>;
+                       clock-names = "cpu-cluster.1";
                        clock-frequency = <1000000000>;
It does't start out at its maximum?
The A7 CPU clock need not start with the maximum. On the SMDK5420
board, the firmware has set the A7 CPU clock to 1GHz. So I used the
same value here.
Does it need to match the firmware?  On exynos5420-peach-pit and
peach-pi I think the firmware starts the kernel at 1.7GHz.
It need not strictly match with the firmware. 1.7GHz for A7 seems too
high since the max A7 speed was 1.3GHz. Probably peach-pit/pi had
600MHz starting frequency for A7 CPU.
Sorry, the ARM was at 1.7, not the KFC.  ...but above the default for
ARM was listed as 1.8
Thanks,
Thomas.
quoted
quoted
quoted
quoted
                        cci-control-port = <&cci_control0>;
+                       clock-latency = <140000>;
+
+                       operating-points = <
+                               1300000 1275000
+                               1200000 1212500
+                               1100000 1162500
+                               1000000 1112500
+                                900000 1062500
+                                800000 1025000
+                                700000 975000
+                                600000 937500
+                       >;
                };

                cpu5: cpu at 101 {
@@ -101,6 +136,7 @@
                        reg = <0x101>;
                        clock-frequency = <1000000000>;
                        cci-control-port = <&cci_control0>;
+                       clock-latency = <140000>;
                };

                cpu6: cpu at 102 {
@@ -109,6 +145,7 @@
                        reg = <0x102>;
                        clock-frequency = <1000000000>;
                        cci-control-port = <&cci_control0>;
+                       clock-latency = <140000>;
                };

                cpu7: cpu at 103 {
@@ -117,6 +154,7 @@
                        reg = <0x103>;
                        clock-frequency = <1000000000>;
                        cci-control-port = <&cci_control0>;
+                       clock-latency = <140000>;
                };
        };
Don't you need to put a reference to the supply in the 5420 board
files?  ...or is that not possible yet since the max77802 hasn't
landed yet?
The arm big.little cpufreq driver does not have voltage scaling
support yet. So the supply was not mentioned.
quoted
If that's not possible, is there any reason to post the 5420.dtsi
patch now?  Also: what about 5800?  It's so similar to 5420 that it
seems a shame not to do them at the same time.
This patch series has support for Exynos5800 as well. But it is A15
clock is restricted to 1.8GHz for now since we do not have a way to
handle the vdd_arm and vdd_int voltage difference with 1.9GHz and
2.0GHZ in upstream yet.
Oh, right!  The 5800 includes the 5420 dtsi...

-Doug
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help