One functionality provided by the SCPI handler is frequency scaling,
which allows to switch the one CPU cluster between several operating
points, each specifying a matching frequency and CPU voltage.
The actual table is specified in firmware and can be queried by Linux
using standardised SCPI calls.

Signed-off-by: Andre Przywara <[email protected]>
---
 arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi 
b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
index ef6f10e..58c3675 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
@@ -61,6 +61,7 @@
                        device_type = "cpu";
                        reg = <0>;
                        enable-method = "psci";
+                       clocks = <&scpi_dvfs 0>;
                };
 
                cpu1: cpu@1 {
@@ -68,6 +69,7 @@
                        device_type = "cpu";
                        reg = <1>;
                        enable-method = "psci";
+                       clocks = <&scpi_dvfs 0>;
                };
 
                cpu2: cpu@2 {
@@ -75,6 +77,7 @@
                        device_type = "cpu";
                        reg = <2>;
                        enable-method = "psci";
+                       clocks = <&scpi_dvfs 0>;
                };
 
                cpu3: cpu@3 {
@@ -82,6 +85,7 @@
                        device_type = "cpu";
                        reg = <3>;
                        enable-method = "psci";
+                       clocks = <&scpi_dvfs 0>;
                };
        };
 
@@ -148,6 +152,17 @@
                compatible = "arm,scpi";
                mboxes = <&mailbox 0>;
                shmem = <&cpu_scp_mem>;
+
+               scpi-clocks {
+                       compatible = "arm,scpi-clocks";
+
+                       scpi_dvfs: scpi_dvfs_clocks {
+                               compatible = "arm,scpi-dvfs-clocks";
+                               #clock-cells = <1>;
+                               clock-indices = <0>;
+                               clock-output-names = "cpu_clk";
+                       };
+               };
        };
 
        soc {
-- 
2.9.0

Reply via email to