diff --git a/patch/kernel/sun8i-dev/orangepi-zero-add-cpufreqscaling.path b/patch/kernel/sun8i-dev/orangepi-zero-add-cpufreqscaling.path new file mode 100644 index 000000000..1c732f900 --- /dev/null +++ b/patch/kernel/sun8i-dev/orangepi-zero-add-cpufreqscaling.path @@ -0,0 +1,95 @@ +diff --git a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts +index 69b4a35..506c462 100644 +--- a/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts ++++ b/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts +@@ -50,10 +50,11 @@ + #include + #include + #include ++#include + + / { + model = "Xunlong Orange Pi Zero"; +- compatible = "xunlong,orangepi-zero", "allwinner,sun8i-h2-plus"; ++ compatible = "xunlong,orangepi-zero", "allwinner,sun8i-h3"; + + aliases { + serial0 = &uart0; +@@ -94,6 +95,77 @@ + reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; + post-power-on-delay-ms = <200>; + }; ++ ++ vdd_cpux: gpio-regulator { ++ compatible = "regulator-gpio"; ++ regulator-name = "vdd-cpux"; ++ regulator-type = "voltage"; ++ regulator-boot-on; ++ regulator-always-on; ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1300000>; ++ regulator-ramp-delay = <50>; /* 4ms */ ++ gpios = <&r_pio 0 6 GPIO_ACTIVE_HIGH>; ++ gpios-states = <0x1>; ++ states = <1100000 0x0 ++ 1300000 0x1>; ++ }; ++}; ++ ++&cpu0 { ++ operating-points = < ++ 1008000 1300000 ++ 816000 1100000 ++ 624000 1100000 ++ 480000 1100000 ++ 312000 1100000 ++ 240000 1100000 ++ 120000 1100000 ++ >; ++ #cooling-cells = <2>; ++ cooling-min-level = <0>; ++ cooling-max-level = <6>; ++ cpu0-supply = <&vdd_cpux>; ++}; ++ ++&cpu_thermal { ++ trips { ++ cpu_warm: cpu_warm { ++ temperature = <65000>; ++ hysteresis = <2000>; ++ type = "passive"; ++ }; ++ cpu_hot: cpu_hot { ++ temperature = <75000>; ++ hysteresis = <2000>; ++ type = "passive"; ++ }; ++ cpu_very_hot: cpu_very_hot { ++ temperature = <90000>; ++ hysteresis = <2000>; ++ type = "passive"; ++ }; ++ cpu_crit: cpu_crit { ++ temperature = <105000>; ++ hysteresis = <2000>; ++ type = "critical"; ++ }; ++ }; ++ ++ cooling-maps { ++ cpu_warm_limit_cpu { ++ trip = <&cpu_warm>; ++ cooling-device = <&cpu0 THERMAL_NO_LIMIT 1>; ++ }; ++ cpu_hot_limit_cpu { ++ trip = <&cpu_hot>; ++ cooling-device = <&cpu0 2 3>; ++ }; ++ cpu_very_hot_limit_cpu { ++ trip = <&cpu_very_hot>; ++ cooling-device = <&cpu0 5 THERMAL_NO_LIMIT>; ++ }; ++ }; + }; + + &ehci0 {