diff -ur linux-orange-pi-4.13.orig/arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts linux-orange-pi-4.13/arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts
--- linux-orange-pi-4.13.orig/arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts	2017-08-10 15:21:44.000000000 +0200
+++ linux-orange-pi-4.13/arch/arm/boot/dts/sun4i-a10-olinuxino-lime.dts	2018-12-08 20:52:27.358382734 +0100
@@ -82,11 +82,19 @@
 	 */
 	operating-points = <
 		/* kHz    uV */
-		912000  1350000
-		864000  1300000
-		624000  1250000
+		1008000  1400000
+		960000	1350000
+		912000  1300000
+		864000  1275000
+		816000	1250000
+		720000	1225000
+		624000  1200000
+		528000	1175000
+		480000	1150000
+		336000	1125000
+		240000	1100000
 		>;
-	cooling-max-level = <2>;
+	cooling-max-level = <10>;
 };
 
 &ehci0 {
diff -ur linux-orange-pi-4.13.orig/arch/arm/boot/dts/sun4i-a10.dtsi linux-orange-pi-4.13/arch/arm/boot/dts/sun4i-a10.dtsi
--- linux-orange-pi-4.13.orig/arch/arm/boot/dts/sun4i-a10.dtsi	2017-08-10 15:21:44.000000000 +0200
+++ linux-orange-pi-4.13/arch/arm/boot/dts/sun4i-a10.dtsi	2018-12-08 20:47:18.773048912 +0100
@@ -116,13 +116,17 @@
 			operating-points = <
 				/* kHz	  uV */
 				1008000 1400000
-				912000	1350000
-				864000	1300000
-				624000	1250000
+				960000	1360000
+				912000	1300000
+				864000	1250000
+				720000	1200000
+				528000	1100000
+				312000	1050000
+				144000	1000000
 				>;
 			#cooling-cells = <2>;
 			cooling-min-level = <0>;
-			cooling-max-level = <3>;
+			cooling-max-level = <7>;
 		};
 	};
 
@@ -143,14 +147,14 @@
 			trips {
 				cpu_alert0: cpu_alert0 {
 					/* milliCelsius */
-					temperature = <850000>;
+					temperature = <750000>;
 					hysteresis = <2000>;
 					type = "passive";
 				};
 
 				cpu_crit: cpu_crit {
 					/* milliCelsius */
-					temperature = <100000>;
+					temperature = <900000>;
 					hysteresis = <2000>;
 					type = "critical";
 				};
diff -ur linux-orange-pi-4.13.orig/arch/arm/boot/dts/sun7i-a20-bananapi.dts linux-orange-pi-4.13/arch/arm/boot/dts/sun7i-a20-bananapi.dts
--- linux-orange-pi-4.13.orig/arch/arm/boot/dts/sun7i-a20-bananapi.dts	2017-08-10 15:21:44.000000000 +0200
+++ linux-orange-pi-4.13/arch/arm/boot/dts/sun7i-a20-bananapi.dts	2018-12-08 20:49:16.380443117 +0100
@@ -99,13 +99,15 @@
 	cpu-supply = <&reg_dcdc2>;
 	operating-points = <
 		/* kHz	  uV */
-		960000	1400000
-		912000	1400000
-		864000	1350000
-		720000	1250000
-		528000	1150000
-		312000	1100000
-		144000	1050000
+		1104000	1450000
+		1008000	1400000
+ 		960000	1400000
+		912000	1300000
+		816000	1250000
+		720000	1200000
+		528000	1100000
+		336000	1050000
+		240000	1000000
 		>;
 };
 
diff -ur linux-orange-pi-4.13.orig/arch/arm/boot/dts/sun7i-a20-olinuxino-lime2.dts linux-orange-pi-4.13/arch/arm/boot/dts/sun7i-a20-olinuxino-lime2.dts
--- linux-orange-pi-4.13.orig/arch/arm/boot/dts/sun7i-a20-olinuxino-lime2.dts	2017-08-10 15:21:44.000000000 +0200
+++ linux-orange-pi-4.13/arch/arm/boot/dts/sun7i-a20-olinuxino-lime2.dts	2018-12-08 20:36:23.847988246 +0100
@@ -111,6 +111,7 @@
 	status = "okay";
 
 	axp209: pmic@34 {
+		compatible = "x-powers,axp209";
 		reg = <0x34>;
 		interrupt-parent = <&nmi_intc>;
 		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
@@ -192,7 +193,7 @@
 &reg_dcdc2 {
 	regulator-always-on;
 	regulator-min-microvolt = <1000000>;
-	regulator-max-microvolt = <1400000>;
+	regulator-max-microvolt = <1500000>;
 	regulator-name = "vdd-cpu";
 };
 
@@ -229,6 +230,10 @@
 	regulator-name = "vddio-csi1";
 };
 
+&cpu0 {
+	cpu-supply = <&reg_dcdc2>;
+};
+
 &reg_usb0_vbus {
 	pinctrl-0 = <&usb0_vbus_pin_lime2>;
 	gpio = <&pio 2 17 GPIO_ACTIVE_HIGH>;
diff -ur linux-orange-pi-4.13.orig/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts linux-orange-pi-4.13/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts
--- linux-orange-pi-4.13.orig/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts	2017-08-10 15:21:44.000000000 +0200
+++ linux-orange-pi-4.13/arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts	2018-12-08 20:51:19.254793410 +0100
@@ -118,6 +118,7 @@
 	status = "okay";
 
 	axp209: pmic@34 {
+		compatible = "x-powers,axp209";
 		reg = <0x34>;
 		interrupt-parent = <&nmi_intc>;
 		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
@@ -259,7 +260,7 @@
 &reg_dcdc2 {
 	regulator-always-on;
 	regulator-min-microvolt = <1000000>;
-	regulator-max-microvolt = <1400000>;
+	regulator-max-microvolt = <1500000>;
 	regulator-name = "vdd-cpu";
 };
 
@@ -270,6 +271,10 @@
 	regulator-name = "vdd-int-dll";
 };
 
+&reg_ldo1 {
+	regulator-name = "vdd-rtc";
+};
+
 &reg_ldo2 {
 	regulator-always-on;
 	regulator-min-microvolt = <3000000>;
@@ -277,6 +282,21 @@
 	regulator-name = "avcc";
 };
 
+&cpu0 {
+	cpu-supply = <&reg_dcdc2>;
+	operating-points = <
+		1104000	1450000
+		1008000	1400000
+		960000	1350000
+		912000	1300000
+		816000	1250000
+		720000	1200000
+		528000	1100000
+		336000	1050000
+		240000	1000000
+		>;
+};
+
 &reg_ahci_5v {
 	status = "okay";
 };
diff -ur linux-orange-pi-4.13.orig/arch/arm/boot/dts/sun7i-a20.dtsi linux-orange-pi-4.13/arch/arm/boot/dts/sun7i-a20.dtsi
--- linux-orange-pi-4.13.orig/arch/arm/boot/dts/sun7i-a20.dtsi	2017-08-10 15:21:44.000000000 +0200
+++ linux-orange-pi-4.13/arch/arm/boot/dts/sun7i-a20.dtsi	2018-12-08 20:40:43.218426283 +0100
@@ -106,17 +106,22 @@
 			clock-latency = <244144>; /* 8 32k periods */
 			operating-points = <
 				/* kHz	  uV */
-				960000	1400000
-				912000	1400000
-				864000	1300000
-				720000	1200000
-				528000	1100000
-				312000	1000000
-				144000	1000000
+				1104000	1450000
+				1056000	1425000
+				1008000	1425000
+				960000	1375000
+				912000	1350000
+				816000	1300000
+				720000	1250000
+				624000	1200000
+				528000	1175000
+				432000	1150000
+				336000	1125000
+				240000	1100000
 				>;
 			#cooling-cells = <2>;
 			cooling-min-level = <0>;
-			cooling-max-level = <6>;
+			cooling-max-level = <11>;
 		};
 
 		cpu@1 {
@@ -143,14 +148,14 @@
 			trips {
 				cpu_alert0: cpu_alert0 {
 					/* milliCelsius */
-					temperature = <75000>;
+					temperature = <60000>;
 					hysteresis = <2000>;
 					type = "passive";
 				};
 
 				cpu_crit: cpu_crit {
 					/* milliCelsius */
-					temperature = <100000>;
+					temperature = <90000>;
 					hysteresis = <2000>;
 					type = "critical";
 				};
diff -ur linux-orange-pi-4.13.orig/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts linux-orange-pi-4.13/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts
--- linux-orange-pi-4.13.orig/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts	2017-08-10 15:21:44.000000000 +0200
+++ linux-orange-pi-4.13/arch/arm/boot/dts/sun8i-h2-plus-orangepi-zero.dts	2017-12-28 11:53:35.961045613 +0100
@@ -49,10 +49,12 @@
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
+#include <dt-bindings/thermal/thermal.h>
 
 / {
 	model = "Xunlong Orange Pi Zero";
-	compatible = "xunlong,orangepi-zero", "allwinner,sun8i-h2-plus";
+	//compatible = "xunlong,orangepi-zero", "allwinner,sun8i-h2-plus";
+	compatible = "xunlong,orangepi-zero", "allwinner,sun8i-h3";
 
 	aliases {
 		serial0 = &uart0;
@@ -94,8 +96,101 @@
 		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 = <
+		/*1464000	1300000 
+		1440000	1300000 
+		1416000	1300000 */
+		1392000	1300000
+		1368000	1300000
+		1344000	1300000
+		1320000	1300000
+		1296000	1300000
+		1248000	1300000
+		1200000	1300000
+		1152000	1300000
+		1104000	1300000
+		1056000	1300000
+		1008000	1300000
+		960000	1300000
+		912000	1300000
+		816000	1100000
+		720000	1100000
+		624000	1100000
+		480000	1100000
+		240000	1100000
+		120000	1100000
+		>;
+	#cooling-cells = <2>;
+	cooling-min-level = <0>;
+	cooling-max-level = <18>;
+	cpu0-supply = <&vdd_cpux>;
+};
+
+&cpu_thermal {
+	trips {
+		cpu_warm: cpu_warm {
+			temperature = <75000>;
+			hysteresis = <2000>;
+			type = "passive";
+		};
+		cpu_hot: cpu_hot {
+			temperature = <85000>;
+			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 7>;
+		};
+		cpu_hot_limit_cpu {
+			trip = <&cpu_hot>;
+			cooling-device = <&cpu0 8 THERMAL_NO_LIMIT>;
+		};
+		/*
+		cpu_very_hot_limit_cpu {
+			trip = <&cpu_very_hot>;
+			cooling-device = <&cpu0 5 THERMAL_NO_LIMIT>;
+		};
+		*/
+	};
 };
 
+
 &ehci0 {
 	status = "okay";
 };
diff -ur linux-orange-pi-4.13.orig/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts linux-orange-pi-4.13/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts
--- linux-orange-pi-4.13.orig/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts	2017-08-10 15:21:44.000000000 +0200
+++ linux-orange-pi-4.13/arch/arm/boot/dts/sun8i-h3-orangepi-pc.dts	2017-12-28 15:48:36.430995655 +0100
@@ -108,46 +109,59 @@
 &cpu0 {
 	operating-points = <
 		/* kHz	  uV */
-		1368000	1400000
-		1344000	1400000
-		1296000	1340000
-		1248000	1340000
-		1224000	1340000
-		1200000	1320000
-		1152000	1320000
-		1104000	1320000
-		1056000	1320000
-		1008000	1200000
-		960000	1200000
-		816000	1100000
-		648000	1100000
-		480000	1100000
-		240000	1100000
-		120000	1100000
+		1608000	1500000
+		1584000	1500000
+		1560000	1500000
+		1536000	1500000
+		1512000	1480000
+		1488000	1460000 
+		1464000	1440000 
+		1440000	1420000
+		1416000	1400000
+		1392000	1380000
+		1368000	1360000
+		1344000	1340000
+		1320000	1320000 
+		1296000	1300000
+		1248000	1280000
+		1200000	1260000
+		1152000	1240000
+		1104000	1220000
+		1056000	1200000 
+		1008000	1180000
+		960000	1160000
+		912000	1140000
+		816000	1120000
+		720000	1100000
+		624000	1080000
+		480000	1060000
+		240000	1040000
 		>;
 	#cooling-cells = <2>;
 	cooling-min-level = <0>;
-	cooling-max-level = <15>;
+	cooling-max-level = <26>;
 	cpu0-supply = <&vdd_cpu>;
 };
 
 &cpu_thermal {
 	trips {
 		cpu_warm: cpu_warm {
-			temperature = <65000>;
+			temperature = <75000>;
 			hysteresis = <2000>;
 			type = "passive";
 		};
 		cpu_hot: cpu_hot {
-			temperature = <75000>;
+			temperature = <85000>;
 			hysteresis = <2000>;
 			type = "passive";
 		};
+/*
 		cpu_very_hot: cpu_very_hot {
 			temperature = <90000>;
 			hysteresis = <2000>;
 			type = "passive";
 		};
+*/
 		cpu_crit: cpu_crit {
 			temperature = <105000>;
 			hysteresis = <2000>;
@@ -161,16 +176,18 @@
 	cooling-maps {
 		cpu_warm_limit_cpu {
 			trip = <&cpu_warm>;
-			cooling-device = <&cpu0 THERMAL_NO_LIMIT 10>;
+			cooling-device = <&cpu0 THERMAL_NO_LIMIT 15>;
 		};
 		cpu_hot_limit_cpu {
 			trip = <&cpu_hot>;
-			cooling-device = <&cpu0 12 12>;
+			cooling-device = <&cpu0 16 THERMAL_NO_LIMIT>;
 		};
+/*
 		cpu_very_hot_limit_cpu {
 			trip = <&cpu_very_hot>;
 			cooling-device = <&cpu0 14 THERMAL_NO_LIMIT>;
 		};
+*/
 	};
 };
 
@@ -247,7 +264,7 @@
 		compatible = "silergy,sy8106a";
 		reg = <0x65>;
 		regulator-min-microvolt = <1000000>;
-		regulator-max-microvolt = <1400000>;
+		regulator-max-microvolt = <1500000>;
 		regulator-ramp-delay = <200>;
 		regulator-boot-on;
 		regulator-always-on;
diff -ur linux-orange-pi-4.14.orig/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts linux-orange-pi-4.14-rc8/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts
--- linux-orange-pi-4.14.orig/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts	2017-11-11 22:41:46.000000000 +0100
+++ linux-orange-pi-4.14-rc8/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts	2017-11-18 14:21:22.237701570 +0100
@@ -48,6 +48,8 @@
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/input/input.h>
+#include <dt-bindings/pinctrl/sun4i-a10.h>
+#include <dt-bindings/thermal/thermal.h>
 
 / {
 	model = "Xunlong Orange Pi Prime";
@@ -120,6 +122,88 @@
 	};
 };
 
+&cpu0 {
+	operating-points = <
+		/* kHz	  uV */
+		/*1608000 1500000
+		1584000 1500000
+		1560000 1500000
+		1536000 1500000
+		1512000 1490000
+		1488000 1480000
+		1464000 1460000
+		1440000 1440000
+		1416000 1420000
+		1392000 1400000
+		1368000	1360000
+		1344000	1340000 */
+		1320000 1320000
+		1296000	1300000
+		1248000	1280000
+		1200000	1260000
+		1152000	1240000
+		1104000	1220000
+		1056000	1200000
+		1008000	1180000
+		960000	1160000
+		912000  1140000
+		816000	1120000
+		720000	1100000
+		624000	1080000
+		480000	1060000
+		240000	1040000
+		120000	1020000
+		>;
+	#cooling-cells = <2>;
+	cooling-min-level = <0>;
+	cooling-max-level = <15>;
+	cpu0-supply = <&vdd_cpu>;
+};
+
+&cpu_thermal {
+	trips {
+		cpu_warm: cpu_warm {
+			temperature = <75000>;
+			hysteresis = <2000>;
+			type = "passive";
+		};
+		cpu_hot: cpu_hot {
+			temperature = <85000>;
+			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 4>; // 0==MAX FREQUENCY
+		};
+		cpu_hot_limit_cpu {
+			trip = <&cpu_hot>;
+			cooling-device = <&cpu0 5 THERMAL_NO_LIMIT>;
+		};
+/*
+		cpu_very_hot_limit_cpu {
+			trip = <&cpu_very_hot>;
+			cooling-device = <&cpu0 14 THERMAL_NO_LIMIT>;
+		};
+*/
+	};
+};
+
 &codec {
 	allwinner,audio-routing =
 		"Line Out", "LINEOUT",
@@ -201,6 +285,24 @@
 	status = "okay";
 };
 
+&r_i2c {
+	status = "okay";
+
+	vdd_cpu: regulator@65 {
+		compatible = "silergy,sy8106a";
+		reg = <0x65>;
+		regulator-min-microvolt = <1000000>;
+		regulator-max-microvolt = <1500000>;
+		regulator-ramp-delay = <200>;
+		regulator-boot-on;
+		regulator-always-on;
+	};
+};
+
+&sound_hdmi {
+	status = "okay";
+};
+
 &uart0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_pins_a>;
