風扇控制-Rockchip

From 2ee84c9e622a2f5e90aab245e83177e93a9033bc Mon Sep 17 00:00:00 2001
From: sunrise <[email protected]>
Date: Mon, 1 Mar 2021 14:32:51 +0800
Subject: [PATCH] added pwm fan

Signed-off-by: sunrise <[email protected]>
---
 .../arm64/boot/dts/rockchip/rk3399-cvesa.dtsi | 15 -------
 .../arch/arm64/boot/dts/rockchip/rk3399.dtsi  | 42 ++++++++++++++++++-
 kernel/arch/arm64/configs/rockchip_defconfig  |  3 +-
 3 files changed, 42 insertions(+), 18 deletions(-)

diff --git a/kernel/arch/arm64/boot/dts/rockchip/rk3399-cvesa.dtsi b/kernel/arch/arm64/boot/dts/rockchip/rk3399-cvesa.dtsi
index 8da5e7ab7b..4a3934839b 100644
--- a/kernel/arch/arm64/boot/dts/rockchip/rk3399-cvesa.dtsi
+++ b/kernel/arch/arm64/boot/dts/rockchip/rk3399-cvesa.dtsi
@@ -157,21 +157,6 @@
 		vin-supply = <&vcc_sys>;
 	};
 
-	vdd_log: vdd-log {
-		compatible = "pwm-regulator";
-		pwms = <&pwm2 0 25000 1>;
-		regulator-name = "vdd_log";
-		regulator-min-microvolt = <800000>;
-		regulator-max-microvolt = <1400000>;
-		regulator-always-on;
-		regulator-boot-on;
-
-		/* for rockchip boot on */
-		rockchip,pwm_id= <2>;
-		rockchip,pwm_voltage = <900000>;
-		pwm-supply = <&vcc_sys>;
-	};
-
 	/* switched by pmic_sleep */
 	vcc1v8_s3: vcca1v8_s3: vcc1v8-s3 {
 		compatible = "regulator-fixed";
diff --git a/kernel/arch/arm64/boot/dts/rockchip/rk3399.dtsi b/kernel/arch/arm64/boot/dts/rockchip/rk3399.dtsi
index f1771c5eea..77f68ff62e 100644
--- a/kernel/arch/arm64/boot/dts/rockchip/rk3399.dtsi
+++ b/kernel/arch/arm64/boot/dts/rockchip/rk3399.dtsi
@@ -792,6 +792,16 @@
 		status = "disabled";
 	};
 
+	pwm_fan: pwm-fan {
+                compatible = "pwm-fan";
+                pwms = <&pwm2 0 40000 0>;
+                regulator-name = "pwm_fan";
+                cooling-min-state = <0>;
+                cooling-max-state = <3>;
+                #cooling-cells = <2>;
+                cooling-levels = <0 130 170 230>;
+        };
+
 	thermal_zones: thermal-zones {
 		soc_thermal: soc-thermal {
 			polling-delay-passive = <20>;
@@ -801,6 +811,21 @@
 			thermal-sensors = <&tsadc 0>;
 
 			trips {
+				cpu0_alert0: cpu-alert-0 {
+					temperature = <40000>;
+					hysteresis = <2000>;
+					type = "active";
+				};
+				cpu0_alert1: cpu-alert-1 {
+					temperature = <50000>;
+					hysteresis = <2000>;
+					type = "active";
+				};
+				cpu0_alert2: cpu-alert-2 {
+					temperature = <60000>;
+					hysteresis = <2000>;
+					type = "active";
+				};
 				threshold: trip-point-0 {
 					temperature = <70000>;
 					hysteresis = <2000>;
@@ -820,23 +845,36 @@
 
 			cooling-maps {
 				map0 {
+					trip = <&cpu0_alert0>;
+					cooling-device = <&pwm_fan 0 1>;
+				};
+				map1 {
+					trip = <&cpu0_alert1>;
+					cooling-device = <&pwm_fan 1 2>;
+				};
+				map2 {
+					trip = <&cpu0_alert2>;
+					cooling-device = <&pwm_fan 2 3>;
+				};
+				map3 {
 					trip = <&target>;
 					cooling-device =
 						<&cpu_l0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
 					contribution = <4096>;
 				};
-				map1 {
+				map4 {
 					trip = <&target>;
 					cooling-device =
 						<&cpu_b0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
 					contribution = <1024>;
 				};
-				map2 {
+				map5 {
 					trip = <&target>;
 					cooling-device =
 						<&gpu THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
 					contribution = <4096>;
 				};
+
 			};
 		};
 
diff --git a/kernel/arch/arm64/configs/rockchip_defconfig b/kernel/arch/arm64/configs/rockchip_defconfig
index fa080145e2..7ced897d65 100644
--- a/kernel/arch/arm64/configs/rockchip_defconfig
+++ b/kernel/arch/arm64/configs/rockchip_defconfig
@@ -442,6 +442,7 @@ CONFIG_ROCKCHIP_REMOTECTL=y
 CONFIG_ROCKCHIP_REMOTECTL_PWM=y
 CONFIG_SENSOR_DEVICE=y
 CONFIG_GSENSOR_DEVICE=y
+CONFIG_SENSORS_PWM_FAN=y
 CONFIG_GS_MMA8452=y
 CONFIG_MPU6880_ACC=y
 CONFIG_MPU6500_ACC=y
@@ -512,7 +513,7 @@ CONFIG_BATTERY_RK818=y
 CONFIG_CHARGER_RK818=y
 CONFIG_THERMAL=y
 CONFIG_THERMAL_WRITABLE_TRIPS=y
-CONFIG_THERMAL_DEFAULT_GOV_POWER_ALLOCATOR=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
 CONFIG_THERMAL_GOV_FAIR_SHARE=y
 CONFIG_THERMAL_GOV_STEP_WISE=y
 CONFIG_THERMAL_GOV_USER_SPACE=y
-- 
2.17.1

算法的修改 主要在 drivers/thermal/step_wise.c ,drivers/thermal/thermal_core.c

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章