mirror of
https://github.com/Fishwaldo/build.git
synced 2025-03-22 23:01:56 +00:00
260 lines
6.8 KiB
Diff
260 lines
6.8 KiB
Diff
From b07dd371b1a1203a013f91da750259f7a2467fce Mon Sep 17 00:00:00 2001
|
|
From: Vasily Khoruzhick <anarsoul@gmail.com>
|
|
Date: Tue, 24 Apr 2018 22:21:27 -0700
|
|
Subject: [PATCH 037/146] a64 dvfs wip
|
|
|
|
Changed: Igor
|
|
|
|
---
|
|
.../boot/dts/allwinner/sun50i-a64-pine64.dts | 4 +
|
|
.../dts/allwinner/sun50i-a64-pinebook.dts | 4 +
|
|
.../allwinner/sun50i-a64-sopine-baseboard.dts | 4 +
|
|
arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi | 111 ++++++++++++++++--
|
|
drivers/clk/sunxi-ng/ccu-sun50i-a64.h | 1 -
|
|
include/dt-bindings/clock/sun50i-a64-ccu.h | 1 +
|
|
6 files changed, 112 insertions(+), 13 deletions(-)
|
|
|
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
|
|
index 8c5dd99cc9ac..cdf5169f2a1a 100644
|
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
|
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts
|
|
@@ -69,6 +69,10 @@
|
|
};
|
|
};
|
|
|
|
+&cpu0 {
|
|
+ cpu-supply = <®_dcdc2>;
|
|
+};
|
|
+
|
|
&ehci0 {
|
|
status = "okay";
|
|
};
|
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts
|
|
index 897e60cbe38d..b3698a8bb1d3 100644
|
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts
|
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pinebook.dts
|
|
@@ -66,6 +66,10 @@
|
|
};
|
|
};
|
|
|
|
+&cpu0 {
|
|
+ cpu-supply = <®_dcdc2>;
|
|
+};
|
|
+
|
|
&ehci0 {
|
|
phys = <&usbphy 0>;
|
|
phy-names = "usb";
|
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
|
|
index 8161895dde52..dc728b3b5556 100644
|
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
|
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts
|
|
@@ -69,6 +69,10 @@
|
|
};
|
|
};
|
|
|
|
+&cpu0 {
|
|
+ cpu-supply = <®_dcdc2>;
|
|
+};
|
|
+
|
|
&ehci0 {
|
|
status = "okay";
|
|
};
|
|
diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
|
|
index 0eb482eb58b7..62b880f68d6a 100644
|
|
--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
|
|
+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi
|
|
@@ -49,6 +49,7 @@
|
|
#include <dt-bindings/reset/sun50i-a64-ccu.h>
|
|
#include <dt-bindings/reset/sun8i-de2.h>
|
|
#include <dt-bindings/reset/sun8i-r-ccu.h>
|
|
+#include <dt-bindings/thermal/thermal.h>
|
|
|
|
/ {
|
|
interrupt-parent = <&gic>;
|
|
@@ -79,6 +80,52 @@
|
|
};
|
|
};
|
|
|
|
+ cpu0_opp_table: opp_table0 {
|
|
+ compatible = "operating-points-v2";
|
|
+ opp-shared;
|
|
+
|
|
+ opp-120000000 {
|
|
+ opp-hz = /bits/ 64 <120000000>;
|
|
+ opp-microvolt = <1040000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+ opp-648000000 {
|
|
+ opp-hz = /bits/ 64 <648000000>;
|
|
+ opp-microvolt = <1040000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+ opp-816000000 {
|
|
+ opp-hz = /bits/ 64 <816000000>;
|
|
+ opp-microvolt = <1100000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+ opp-912000000 {
|
|
+ opp-hz = /bits/ 64 <912000000>;
|
|
+ opp-microvolt = <1120000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+ opp-960000000 {
|
|
+ opp-hz = /bits/ 64 <960000000>;
|
|
+ opp-microvolt = <1160000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+ opp-1008000000 {
|
|
+ opp-hz = /bits/ 64 <1008000000>;
|
|
+ opp-microvolt = <1200000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+ opp-1056000000 {
|
|
+ opp-hz = /bits/ 64 <1056000000>;
|
|
+ opp-microvolt = <1240000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+ opp-1104000000 {
|
|
+ opp-hz = /bits/ 64 <1104000000>;
|
|
+ opp-microvolt = <1300000>;
|
|
+ clock-latency-ns = <244144>; /* 8 32k periods */
|
|
+ };
|
|
+ };
|
|
+
|
|
cpus {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
@@ -88,7 +135,11 @@
|
|
device_type = "cpu";
|
|
reg = <0>;
|
|
enable-method = "psci";
|
|
+ clocks = <&ccu CLK_CPUX>;
|
|
+ clock-names = "cpu";
|
|
+ operating-points-v2 = <&cpu0_opp_table>;
|
|
+ #cooling-cells = <2>;
|
|
next-level-cache = <&L2>;
|
|
};
|
|
|
|
cpu1: cpu@1 {
|
|
@@ -95,7 +146,8 @@
|
|
device_type = "cpu";
|
|
reg = <1>;
|
|
enable-method = "psci";
|
|
+ operating-points-v2 = <&cpu0_opp_table>;
|
|
next-level-cache = <&L2>;
|
|
};
|
|
|
|
cpu2: cpu@2 {
|
|
@@ -102,7 +154,8 @@
|
|
device_type = "cpu";
|
|
reg = <2>;
|
|
enable-method = "psci";
|
|
+ operating-points-v2 = <&cpu0_opp_table>;
|
|
next-level-cache = <&L2>;
|
|
};
|
|
|
|
cpu3: cpu@3 {
|
|
@@ -109,7 +162,8 @@
|
|
device_type = "cpu";
|
|
reg = <3>;
|
|
enable-method = "psci";
|
|
+ operating-points-v2 = <&cpu0_opp_table>;
|
|
next-level-cache = <&L2>;
|
|
};
|
|
};
|
|
|
|
@@ -173,22 +227,55 @@
|
|
|
|
thermal-zones {
|
|
cpu_thermal: cpu0-thermal {
|
|
- /* milliseconds */
|
|
- polling-delay-passive = <250>;
|
|
- polling-delay = <1000>;
|
|
- thermal-sensors = <&ths 0>;
|
|
+ /* milliseconds */
|
|
+ polling-delay-passive = <250>;
|
|
+ polling-delay = <1000>;
|
|
+ thermal-sensors = <&ths 0>;
|
|
+
|
|
+ cooling-maps {
|
|
+ map0 {
|
|
+ trip = <&cpu_alert0>;
|
|
+ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
|
|
+ };
|
|
+ map1 {
|
|
+ trip = <&cpu_alert1>;
|
|
+ cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
|
|
+ };
|
|
+ };
|
|
+ trips {
|
|
+ cpu_alert0: cpu_alert0 {
|
|
+ /* milliCelsius */
|
|
+ temperature = <75000>;
|
|
+ hysteresis = <2000>;
|
|
+ type = "passive";
|
|
+ };
|
|
+
|
|
+ cpu_alert1: cpu_alert1 {
|
|
+ /* milliCelsius */
|
|
+ temperature = <90000>;
|
|
+ hysteresis = <2000>;
|
|
+ type = "hot";
|
|
+ };
|
|
+
|
|
+ cpu_crit: cpu_crit {
|
|
+ /* milliCelsius */
|
|
+ temperature = <110000>;
|
|
+ hysteresis = <2000>;
|
|
+ type = "critical";
|
|
+ };
|
|
+ };
|
|
};
|
|
gpu0_thermal: gpu0-thermal {
|
|
- /* milliseconds */
|
|
- polling-delay-passive = <250>;
|
|
- polling-delay = <1000>;
|
|
- thermal-sensors = <&ths 1>;
|
|
+ /* milliseconds */
|
|
+ polling-delay-passive = <250>;
|
|
+ polling-delay = <1000>;
|
|
+ thermal-sensors = <&ths 1>;
|
|
};
|
|
gpu1_thermal: gpu1-thermal {
|
|
- /* milliseconds */
|
|
- polling-delay-passive = <250>;
|
|
- polling-delay = <1000>;
|
|
- thermal-sensors = <&ths 2>;
|
|
+ /* milliseconds */
|
|
+ polling-delay-passive = <250>;
|
|
+ polling-delay = <1000>;
|
|
+ thermal-sensors = <&ths 2>;
|
|
};
|
|
};
|
|
|
|
diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-a64.h b/drivers/clk/sunxi-ng/ccu-sun50i-a64.h
|
|
index 061b6fbb4f95..91f79512cee4 100644
|
|
--- a/drivers/clk/sunxi-ng/ccu-sun50i-a64.h
|
|
+++ b/drivers/clk/sunxi-ng/ccu-sun50i-a64.h
|
|
@@ -43,7 +43,6 @@
|
|
#define CLK_PLL_HSIC 18
|
|
#define CLK_PLL_DE 19
|
|
#define CLK_PLL_DDR1 20
|
|
-#define CLK_CPUX 21
|
|
#define CLK_AXI 22
|
|
#define CLK_APB 23
|
|
#define CLK_AHB1 24
|
|
diff --git a/include/dt-bindings/clock/sun50i-a64-ccu.h b/include/dt-bindings/clock/sun50i-a64-ccu.h
|
|
index d66432c6e675..d7f42dd22663 100644
|
|
--- a/include/dt-bindings/clock/sun50i-a64-ccu.h
|
|
+++ b/include/dt-bindings/clock/sun50i-a64-ccu.h
|
|
@@ -45,6 +45,7 @@
|
|
|
|
#define CLK_PLL_PERIPH0 11
|
|
|
|
+#define CLK_CPUX 21
|
|
#define CLK_BUS_MIPI_DSI 28
|
|
#define CLK_BUS_CE 29
|
|
#define CLK_BUS_DMA 30
|
|
--
|
|
2.17.1
|
|
|