diff mbox series

[07/12] ARM: dts: sun8i: A83T: Sync from Linux v5.18-rc1

Message ID 20220427203132.47271-8-samuel@sholland.org
State Accepted
Commit 2d648e6982e970755e78f9644bbfbe0efef43703
Delegated to: Andre Przywara
Headers show
Series sunxi: Devicetree sync from Linux v5.18-rc1 | expand

Commit Message

Samuel Holland April 27, 2022, 8:31 p.m. UTC
Copy the devicetree source for the A83T SoC and all existing boards
from the Linux v5.18-rc1 tag.

To maintain ABI compatibility with existing LTS kernels, one change
moving some IP blocks to the r_intc interrupt controller is excluded.
This effectively reverts Linux commits 994e5818392c and 9fdef3c3d8c2.

As with the other SoCs, updates of note include adding detection GPIO
properties in the USB PHY nodes.

Signed-off-by: Samuel Holland <samuel@sholland.org>
---

 arch/arm/dts/axp81x.dtsi                      |  15 +-
 .../dts/sun8i-a83t-allwinner-h8homlet-v2.dts  |  12 +
 arch/arm/dts/sun8i-a83t-bananapi-m3.dts       |  55 +++-
 arch/arm/dts/sun8i-a83t-cubietruck-plus.dts   |  77 ++++-
 arch/arm/dts/sun8i-a83t-tbs-a711.dts          | 101 +++++-
 arch/arm/dts/sun8i-a83t.dtsi                  | 311 ++++++++++++++++--
 6 files changed, 515 insertions(+), 56 deletions(-)

Comments

Andre Przywara May 20, 2022, 1:48 p.m. UTC | #1
On Wed, 27 Apr 2022 15:31:26 -0500
Samuel Holland <samuel@sholland.org> wrote:

Hi,

> Copy the devicetree source for the A83T SoC and all existing boards
> from the Linux v5.18-rc1 tag.
> 
> To maintain ABI compatibility with existing LTS kernels, one change
> moving some IP blocks to the r_intc interrupt controller is excluded.
> This effectively reverts Linux commits 994e5818392c and 9fdef3c3d8c2.
> 
> As with the other SoCs, updates of note include adding detection GPIO
> properties in the USB PHY nodes.
> 
> Signed-off-by: Samuel Holland <samuel@sholland.org>

Compared the files against the kernel tree, apart from the r_intc change
they are identical.
Change-wise there is a different timer compatible string, requiring Linux
v5.4 at least. This should not be fatal, since we have the arch timer, though.

Reviewed-by: Andre Przywara <andre.przywara@arm.com>

Cheers,
Andre

> ---
> 
>  arch/arm/dts/axp81x.dtsi                      |  15 +-
>  .../dts/sun8i-a83t-allwinner-h8homlet-v2.dts  |  12 +
>  arch/arm/dts/sun8i-a83t-bananapi-m3.dts       |  55 +++-
>  arch/arm/dts/sun8i-a83t-cubietruck-plus.dts   |  77 ++++-
>  arch/arm/dts/sun8i-a83t-tbs-a711.dts          | 101 +++++-
>  arch/arm/dts/sun8i-a83t.dtsi                  | 311 ++++++++++++++++--
>  6 files changed, 515 insertions(+), 56 deletions(-)
> 
> diff --git a/arch/arm/dts/axp81x.dtsi b/arch/arm/dts/axp81x.dtsi
> index 043c717dce..b93387b0c1 100644
> --- a/arch/arm/dts/axp81x.dtsi
> +++ b/arch/arm/dts/axp81x.dtsi
> @@ -48,6 +48,11 @@
>  	interrupt-controller;
>  	#interrupt-cells = <1>;
>  
> +	ac_power_supply: ac-power {
> +		compatible = "x-powers,axp813-ac-power-supply";
> +		status = "disabled";
> +	};
> +
>  	axp_adc: adc {
>  		compatible = "x-powers,axp813-adc";
>  		#io-channel-cells = <1>;
> @@ -58,18 +63,18 @@
>  		gpio-controller;
>  		#gpio-cells = <2>;
>  
> -		gpio0_ldo: gpio0-ldo {
> +		gpio0_ldo: gpio0-ldo-pin {
>  			pins = "GPIO0";
>  			function = "ldo";
>  		};
>  
> -		gpio1_ldo: gpio1-ldo {
> +		gpio1_ldo: gpio1-ldo-pin {
>  			pins = "GPIO1";
>  			function = "ldo";
>  		};
>  	};
>  
> -	battery_power_supply: battery-power-supply {
> +	battery_power_supply: battery-power {
>  		compatible = "x-powers,axp813-battery-power-supply";
>  		status = "disabled";
>  	};
> @@ -166,4 +171,8 @@
>  			status = "disabled";
>  		};
>  	};
> +
> +	usb_power_supply: usb-power {
> +		compatible = "x-powers,axp813-usb-power-supply";
> +	};
>  };
> diff --git a/arch/arm/dts/sun8i-a83t-allwinner-h8homlet-v2.dts b/arch/arm/dts/sun8i-a83t-allwinner-h8homlet-v2.dts
> index 36ecebaff3..9c006fc188 100644
> --- a/arch/arm/dts/sun8i-a83t-allwinner-h8homlet-v2.dts
> +++ b/arch/arm/dts/sun8i-a83t-allwinner-h8homlet-v2.dts
> @@ -79,6 +79,14 @@
>  	};
>  };
>  
> +&cpu0 {
> +	cpu-supply = <&reg_dcdc2>;
> +};
> +
> +&cpu100 {
> +	cpu-supply = <&reg_dcdc3>;
> +};
> +
>  &ehci0 {
>  	status = "okay";
>  };
> @@ -146,6 +154,10 @@
>  
>  #include "axp81x.dtsi"
>  
> +&ac_power_supply {
> +	status = "okay";
> +};
> +
>  &reg_aldo1 {
>  	regulator-always-on;
>  	regulator-min-microvolt = <1800000>;
> diff --git a/arch/arm/dts/sun8i-a83t-bananapi-m3.dts b/arch/arm/dts/sun8i-a83t-bananapi-m3.dts
> index 2beafe3a31..b60016a442 100644
> --- a/arch/arm/dts/sun8i-a83t-bananapi-m3.dts
> +++ b/arch/arm/dts/sun8i-a83t-bananapi-m3.dts
> @@ -74,12 +74,12 @@
>  	leds {
>  		compatible = "gpio-leds";
>  
> -		blue {
> +		led-0 {
>  			label = "bananapi-m3:blue:usr";
>  			gpios = <&axp_gpio 1 GPIO_ACTIVE_HIGH>;
>  		};
>  
> -		green {
> +		led-1 {
>  			label = "bananapi-m3:green:usr";
>  			gpios = <&axp_gpio 0 GPIO_ACTIVE_HIGH>;
>  		};
> @@ -107,6 +107,14 @@
>  	};
>  };
>  
> +&cpu0 {
> +	cpu-supply = <&reg_dcdc2>;
> +};
> +
> +&cpu100 {
> +	cpu-supply = <&reg_dcdc3>;
> +};
> +
>  &de {
>  	status = "okay";
>  };
> @@ -183,6 +191,11 @@
>  	status = "okay";
>  };
>  
> +&r_cir {
> +	clock-frequency = <3000000>;
> +	status = "okay";
> +};
> +
>  &r_rsb {
>  	status = "okay";
>  
> @@ -224,6 +237,14 @@
>  
>  #include "axp81x.dtsi"
>  
> +&ac_power_supply {
> +	status = "okay";
> +};
> +
> +&battery_power_supply {
> +	status = "okay";
> +};
> +
>  &reg_aldo1 {
>  	regulator-always-on;
>  	regulator-min-microvolt = <1800000>;
> @@ -301,8 +322,8 @@
>  
>  &reg_dldo3 {
>  	regulator-always-on;
> -	regulator-min-microvolt = <2500000>;
> -	regulator-max-microvolt = <2500000>;
> +	regulator-min-microvolt = <3300000>;
> +	regulator-max-microvolt = <3300000>;
>  	regulator-name = "vcc-pd";
>  };
>  
> @@ -350,11 +371,37 @@
>  	status = "okay";
>  };
>  
> +&uart1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
> +	uart-has-rtscts;
> +	status = "okay";
> +
> +	bluetooth {
> +		compatible = "brcm,bcm43438-bt";
> +		clocks = <&ac100_rtc 1>;
> +		clock-names = "lpo";
> +		vbat-supply = <&reg_dldo1>;
> +		vddio-supply = <&reg_dldo1>;
> +		device-wakeup-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */
> +		host-wakeup-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* PL5 */
> +		shutdown-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
> +	};
> +};
> +
>  &usb_otg {
> +	dr_mode = "otg";
> +	status = "okay";
> +};
> +
> +&usb_power_supply {
>  	status = "okay";
>  };
>  
>  &usbphy {
> +	usb0_id_det-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */
> +	usb0_vbus_power-supply = <&usb_power_supply>;
> +	usb0_vbus-supply = <&reg_drivevbus>;
>  	usb1_vbus-supply = <&reg_usb1_vbus>;
>  	status = "okay";
>  };
> diff --git a/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts b/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts
> index ecd9ff38a8..e26af7cf10 100644
> --- a/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts
> +++ b/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts
> @@ -60,25 +60,36 @@
>  		stdout-path = "serial0:115200n8";
>  	};
>  
> +	hdmi-connector {
> +		compatible = "hdmi-connector";
> +		type = "a";
> +
> +		port {
> +			hdmi_con_in: endpoint {
> +				remote-endpoint = <&hdmi_out_con>;
> +			};
> +		};
> +	};
> +
>  	leds {
>  		compatible = "gpio-leds";
>  
> -		blue {
> +		led-0 {
>  			label = "cubietruck-plus:blue:usr";
>  			gpios = <&pio 3 25 GPIO_ACTIVE_HIGH>; /* PD25 */
>  		};
>  
> -		orange {
> +		led-1 {
>  			label = "cubietruck-plus:orange:usr";
>  			gpios = <&pio 3 26 GPIO_ACTIVE_HIGH>; /* PD26 */
>  		};
>  
> -		white {
> +		led-2 {
>  			label = "cubietruck-plus:white:usr";
>  			gpios = <&pio 3 27 GPIO_ACTIVE_HIGH>; /* PD27 */
>  		};
>  
> -		green {
> +		led-3 {
>  			label = "cubietruck-plus:green:usr";
>  			gpios = <&pio 4 4 GPIO_ACTIVE_HIGH>; /* PE4 */
>  		};
> @@ -90,7 +101,7 @@
>  		initial-mode = <1>; /* initialize in HUB mode */
>  		disabled-ports = <1>;
>  		intn-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
> -		reset-gpios = <&pio 4 16 GPIO_ACTIVE_HIGH>; /* PE16 */
> +		reset-gpios = <&pio 4 16 GPIO_ACTIVE_LOW>; /* PE16 */
>  		connect-gpios = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */
>  		refclk-frequency = <19200000>;
>  	};
> @@ -145,6 +156,18 @@
>  	};
>  };
>  
> +&cpu0 {
> +	cpu-supply = <&reg_dcdc2>;
> +};
> +
> +&cpu100 {
> +	cpu-supply = <&reg_dcdc3>;
> +};
> +
> +&de {
> +	status = "okay";
> +};
> +
>  &ehci0 {
>  	/* GL830 USB-to-SATA bridge here */
>  	status = "okay";
> @@ -164,6 +187,16 @@
>  	status = "okay";
>  };
>  
> +&hdmi {
> +	status = "okay";
> +};
> +
> +&hdmi_out {
> +	hdmi_out_con: endpoint {
> +		remote-endpoint = <&hdmi_con_in>;
> +	};
> +};
> +
>  &mdio {
>  	rgmii_phy: ethernet-phy@1 {
>  		compatible = "ethernet-phy-ieee802.3-c22";
> @@ -239,6 +272,14 @@
>  
>  #include "axp81x.dtsi"
>  
> +&ac_power_supply {
> +	status = "okay";
> +};
> +
> +&battery_power_supply {
> +	status = "okay";
> +};
> +
>  &reg_aldo1 {
>  	regulator-always-on;
>  	regulator-min-microvolt = <1800000>;
> @@ -386,11 +427,37 @@
>  	status = "okay";
>  };
>  
> +&uart1 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
> +	uart-has-rtscts;
> +	status = "okay";
> +
> +	bluetooth {
> +		compatible = "brcm,bcm4330-bt";
> +		clocks = <&ac100_rtc 1>;
> +		clock-names = "lpo";
> +		vbat-supply = <&reg_dcdc1>;
> +		vddio-supply = <&reg_sw>;
> +		device-wakeup-gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */
> +		host-wakeup-gpios = <&r_pio 0 8 GPIO_ACTIVE_HIGH>; /* PL8 */
> +		shutdown-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
> +	};
> +};
> +
>  &usb_otg {
> +	dr_mode = "otg";
> +	status = "okay";
> +};
> +
> +&usb_power_supply {
>  	status = "okay";
>  };
>  
>  &usbphy {
> +	usb0_id_det-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */
> +	usb0_vbus_power-supply = <&usb_power_supply>;
> +	usb0_vbus-supply = <&reg_drivevbus>;
>  	usb1_vbus-supply = <&reg_usb1_vbus>;
>  	usb2_vbus-supply = <&reg_usb2_vbus>;
>  	status = "okay";
> diff --git a/arch/arm/dts/sun8i-a83t-tbs-a711.dts b/arch/arm/dts/sun8i-a83t-tbs-a711.dts
> index 1537ce148c..13ae10f60d 100644
> --- a/arch/arm/dts/sun8i-a83t-tbs-a711.dts
> +++ b/arch/arm/dts/sun8i-a83t-tbs-a711.dts
> @@ -46,6 +46,7 @@
>  
>  #include <dt-bindings/gpio/gpio.h>
>  #include <dt-bindings/pwm/pwm.h>
> +#include <dt-bindings/input/input.h>
>  
>  / {
>  	model = "TBS A711 Tablet";
> @@ -64,7 +65,7 @@
>  		compatible = "pwm-backlight";
>  		pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>;
>  		enable-gpios = <&pio 3 29 GPIO_ACTIVE_HIGH>;
> -
> +		power-supply = <&reg_sw>;
>  		brightness-levels = <0 1 2 4 8 16 32 64 128 255>;
>  		default-brightness-level = <9>;
>  	};
> @@ -98,6 +99,13 @@
>  		};
>  	};
>  
> +	reg_gps: reg-gps {
> +		compatible = "regulator-fixed";
> +		regulator-name = "gps";
> +		regulator-min-microvolt = <3000000>;
> +		regulator-max-microvolt = <3000000>;
> +	};
> +
>  	reg_vbat: reg-vbat {
>  		compatible = "regulator-fixed";
>  		regulator-name = "vbat";
> @@ -156,10 +164,39 @@
>  	status = "okay";
>  };
>  
> +&i2c0 {
> +	clock-frequency = <400000>;
> +	status = "okay";
> +
> +	touchscreen@38 {
> +		compatible = "edt,edt-ft5206";
> +		reg = <0x38>;
> +		interrupt-parent = <&r_pio>;
> +		interrupts = <0 7 IRQ_TYPE_EDGE_FALLING>; /* PL7 */
> +		reset-gpios = <&pio 3 5 GPIO_ACTIVE_LOW>; /* PD5 */
> +		vcc-supply = <&reg_ldo_io0>;
> +		touchscreen-size-x = <1024>;
> +		touchscreen-size-y = <600>;
> +	};
> +};
> +
> +&i2c1 {
> +	clock-frequency = <400000>;
> +	status = "okay";
> +
> +	accelerometer@18 {
> +		compatible = "bosch,bma250";
> +		reg = <0x18>;
> +		interrupt-parent = <&pio>;
> +		interrupts = <7 10 IRQ_TYPE_EDGE_RISING>; /* PH10 / EINT10 */
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_dcdc1>;
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&mmc0_pins>;
> +	bus-width = <4>;
>  	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
>  	status = "okay";
>  };
> @@ -171,6 +208,7 @@
>  	vqmmc-supply = <&reg_dldo1>;
>  	non-removable;
>  	wakeup-source;
> +	keep-power-in-suspend;
>  	status = "okay";
>  
>  	brcmf: wifi@1 {
> @@ -199,6 +237,25 @@
>  	status = "okay";
>  };
>  
> +&r_lradc {
> +	vref-supply = <&reg_aldo2>;
> +	status = "okay";
> +
> +	button-210 {
> +		label = "Volume Up";
> +		linux,code = <KEY_VOLUMEUP>;
> +		channel = <0>;
> +		voltage = <210000>;
> +	};
> +
> +	button-410 {
> +		label = "Volume Down";
> +		linux,code = <KEY_VOLUMEDOWN>;
> +		channel = <0>;
> +		voltage = <410000>;
> +	};
> +};
> +
>  &r_rsb {
>  	status = "okay";
>  
> @@ -317,8 +374,8 @@
>  };
>  
>  &reg_dldo3 {
> -	regulator-min-microvolt = <2800000>;
> -	regulator-max-microvolt = <2800000>;
> +	regulator-min-microvolt = <1800000>;
> +	regulator-max-microvolt = <1800000>;
>  	regulator-name = "vdd-csi";
>  };
>  
> @@ -390,8 +447,7 @@
>  };
>  
>  &tcon0_out {
> -	tcon0_out_lcd: endpoint@0 {
> -		reg = <0>;
> +	tcon0_out_lcd: endpoint {
>  		remote-endpoint = <&panel_input>;
>  	};
>  };
> @@ -406,18 +462,45 @@
>  &uart1 {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
> +	uart-has-rtscts;
>  	status = "okay";
> +
> +	bluetooth {
> +		compatible = "brcm,bcm20702a1";
> +		clocks = <&ac100_rtc 1>;
> +		clock-names = "lpo";
> +		vbat-supply = <&reg_vbat>;
> +		vddio-supply = <&reg_dldo1>;
> +		device-wakeup-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
> +		host-wakeup-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* PL5 */
> +		shutdown-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
> +		max-speed = <1500000>;
> +	};
> +};
> +
> +&uart2 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&uart2_pb_pins>;
> +	status = "okay";
> +
> +	gnss {
> +		compatible = "u-blox,neo-6m";
> +
> +		v-bckp-supply = <&reg_rtc_ldo>;
> +		vcc-supply = <&reg_gps>;
> +		current-speed = <9600>;
> +	};
>  };
>  
>  &usb_otg {
> -	dr_mode = "otg";
>  	status = "okay";
>  };
>  
>  &usbphy {
> -	usb0_id_det-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */
> +	usb0_id_det-gpios = <&pio 7 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH11 */
> +	usb0_vbus_power-supply = <&usb_power_supply>;
>  	usb0_vbus-supply = <&reg_drivevbus>;
> -	usb1_vbus_supply = <&reg_vmain>;
> -	usb2_vbus_supply = <&reg_vmain>;
> +	usb1_vbus-supply = <&reg_vmain>;
> +	usb2_vbus-supply = <&reg_vmain>;
>  	status = "okay";
>  };
> diff --git a/arch/arm/dts/sun8i-a83t.dtsi b/arch/arm/dts/sun8i-a83t.dtsi
> index 2be23d6009..9c07660080 100644
> --- a/arch/arm/dts/sun8i-a83t.dtsi
> +++ b/arch/arm/dts/sun8i-a83t.dtsi
> @@ -50,6 +50,7 @@
>  #include <dt-bindings/reset/sun8i-a83t-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>;
> @@ -61,79 +62,91 @@
>  		#size-cells = <0>;
>  
>  		cpu0: cpu@0 {
> -			clocks = <&ccu CLK_C0CPUX>;
> -			clock-names = "cpu";
>  			compatible = "arm,cortex-a7";
>  			device_type = "cpu";
> +			clocks = <&ccu CLK_C0CPUX>;
>  			operating-points-v2 = <&cpu0_opp_table>;
>  			cci-control-port = <&cci_control0>;
>  			enable-method = "allwinner,sun8i-a83t-smp";
>  			reg = <0>;
> +			#cooling-cells = <2>;
>  		};
>  
> -		cpu@1 {
> +		cpu1: cpu@1 {
>  			compatible = "arm,cortex-a7";
>  			device_type = "cpu";
> +			clocks = <&ccu CLK_C0CPUX>;
>  			operating-points-v2 = <&cpu0_opp_table>;
>  			cci-control-port = <&cci_control0>;
>  			enable-method = "allwinner,sun8i-a83t-smp";
>  			reg = <1>;
> +			#cooling-cells = <2>;
>  		};
>  
> -		cpu@2 {
> +		cpu2: cpu@2 {
>  			compatible = "arm,cortex-a7";
>  			device_type = "cpu";
> +			clocks = <&ccu CLK_C0CPUX>;
>  			operating-points-v2 = <&cpu0_opp_table>;
>  			cci-control-port = <&cci_control0>;
>  			enable-method = "allwinner,sun8i-a83t-smp";
>  			reg = <2>;
> +			#cooling-cells = <2>;
>  		};
>  
> -		cpu@3 {
> +		cpu3: cpu@3 {
>  			compatible = "arm,cortex-a7";
>  			device_type = "cpu";
> +			clocks = <&ccu CLK_C0CPUX>;
>  			operating-points-v2 = <&cpu0_opp_table>;
>  			cci-control-port = <&cci_control0>;
>  			enable-method = "allwinner,sun8i-a83t-smp";
>  			reg = <3>;
> +			#cooling-cells = <2>;
>  		};
>  
>  		cpu100: cpu@100 {
> -			clocks = <&ccu CLK_C1CPUX>;
> -			clock-names = "cpu";
>  			compatible = "arm,cortex-a7";
>  			device_type = "cpu";
> +			clocks = <&ccu CLK_C1CPUX>;
>  			operating-points-v2 = <&cpu1_opp_table>;
>  			cci-control-port = <&cci_control1>;
>  			enable-method = "allwinner,sun8i-a83t-smp";
>  			reg = <0x100>;
> +			#cooling-cells = <2>;
>  		};
>  
> -		cpu@101 {
> +		cpu101: cpu@101 {
>  			compatible = "arm,cortex-a7";
>  			device_type = "cpu";
> +			clocks = <&ccu CLK_C1CPUX>;
>  			operating-points-v2 = <&cpu1_opp_table>;
>  			cci-control-port = <&cci_control1>;
>  			enable-method = "allwinner,sun8i-a83t-smp";
>  			reg = <0x101>;
> +			#cooling-cells = <2>;
>  		};
>  
> -		cpu@102 {
> +		cpu102: cpu@102 {
>  			compatible = "arm,cortex-a7";
>  			device_type = "cpu";
> +			clocks = <&ccu CLK_C1CPUX>;
>  			operating-points-v2 = <&cpu1_opp_table>;
>  			cci-control-port = <&cci_control1>;
>  			enable-method = "allwinner,sun8i-a83t-smp";
>  			reg = <0x102>;
> +			#cooling-cells = <2>;
>  		};
>  
> -		cpu@103 {
> +		cpu103: cpu@103 {
>  			compatible = "arm,cortex-a7";
>  			device_type = "cpu";
> +			clocks = <&ccu CLK_C1CPUX>;
>  			operating-points-v2 = <&cpu1_opp_table>;
>  			cci-control-port = <&cci_control1>;
>  			enable-method = "allwinner,sun8i-a83t-smp";
>  			reg = <0x103>;
> +			#cooling-cells = <2>;
>  		};
>  	};
>  
> @@ -187,12 +200,7 @@
>  		status = "disabled";
>  	};
>  
> -	memory {
> -		reg = <0x40000000 0x80000000>;
> -		device_type = "memory";
> -	};
> -
> -	cpu0_opp_table: opp_table0 {
> +	cpu0_opp_table: opp-table-cluster0 {
>  		compatible = "operating-points-v2";
>  		opp-shared;
>  
> @@ -245,7 +253,7 @@
>  		};
>  	};
>  
> -	cpu1_opp_table: opp_table1 {
> +	cpu1_opp_table: opp-table-cluster1 {
>  		compatible = "operating-points-v2";
>  		opp-shared;
>  
> @@ -306,16 +314,27 @@
>  
>  		display_clocks: clock@1000000 {
>  			compatible = "allwinner,sun8i-a83t-de2-clk";
> -			reg = <0x01000000 0x100000>;
> -			clocks = <&ccu CLK_PLL_DE>,
> -				 <&ccu CLK_BUS_DE>;
> -			clock-names = "mod",
> -				      "bus";
> +			reg = <0x01000000 0x10000>;
> +			clocks = <&ccu CLK_BUS_DE>,
> +				 <&ccu CLK_PLL_DE>;
> +			clock-names = "bus",
> +				      "mod";
>  			resets = <&ccu RST_BUS_DE>;
>  			#clock-cells = <1>;
>  			#reset-cells = <1>;
>  		};
>  
> +		rotate: rotate@1020000 {
> +			compatible = "allwinner,sun8i-a83t-de2-rotate";
> +			reg = <0x1020000 0x10000>;
> +			interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&display_clocks CLK_BUS_ROT>,
> +				 <&display_clocks CLK_ROT>;
> +			clock-names = "bus",
> +				      "mod";
> +			resets = <&display_clocks RST_ROT>;
> +		};
> +
>  		mixer0: mixer@1100000 {
>  			compatible = "allwinner,sun8i-a83t-de2-mixer-0";
>  			reg = <0x01100000 0x100000>;
> @@ -338,6 +357,11 @@
>  						reg = <0>;
>  						remote-endpoint = <&tcon0_in_mixer0>;
>  					};
> +
> +					mixer0_out_tcon1: endpoint@1 {
> +						reg = <1>;
> +						remote-endpoint = <&tcon1_in_mixer0>;
> +					};
>  				};
>  			};
>  		};
> @@ -356,9 +380,17 @@
>  				#size-cells = <0>;
>  
>  				mixer1_out: port@1 {
> +					#address-cells = <1>;
> +					#size-cells = <0>;
>  					reg = <1>;
>  
> -					mixer1_out_tcon1: endpoint {
> +					mixer1_out_tcon0: endpoint@0 {
> +						reg = <0>;
> +						remote-endpoint = <&tcon0_in_mixer1>;
> +					};
> +
> +					mixer1_out_tcon1: endpoint@1 {
> +						reg = <1>;
>  						remote-endpoint = <&tcon1_in_mixer1>;
>  					};
>  				};
> @@ -425,6 +457,7 @@
>  			clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>;
>  			clock-names = "ahb", "tcon-ch0";
>  			clock-output-names = "tcon-pixel-clock";
> +			#clock-cells = <0>;
>  			resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>;
>  			reset-names = "lcd", "lvds";
>  
> @@ -441,11 +474,14 @@
>  						reg = <0>;
>  						remote-endpoint = <&mixer0_out_tcon0>;
>  					};
> +
> +					tcon0_in_mixer1: endpoint@1 {
> +						reg = <1>;
> +						remote-endpoint = <&mixer1_out_tcon0>;
> +					};
>  				};
>  
>  				tcon0_out: port@1 {
> -					#address-cells = <1>;
> -					#size-cells = <0>;
>  					reg = <1>;
>  				};
>  			};
> @@ -465,9 +501,17 @@
>  				#size-cells = <0>;
>  
>  				tcon1_in: port@0 {
> +					#address-cells = <1>;
> +					#size-cells = <0>;
>  					reg = <0>;
>  
> -					tcon1_in_mixer1: endpoint {
> +					tcon1_in_mixer0: endpoint@0 {
> +						reg = <0>;
> +						remote-endpoint = <&mixer0_out_tcon1>;
> +					};
> +
> +					tcon1_in_mixer1: endpoint@1 {
> +						reg = <1>;
>  						remote-endpoint = <&mixer1_out_tcon1>;
>  					};
>  				};
> @@ -549,6 +593,31 @@
>  		sid: eeprom@1c14000 {
>  			compatible = "allwinner,sun8i-a83t-sid";
>  			reg = <0x1c14000 0x400>;
> +			#address-cells = <1>;
> +			#size-cells = <1>;
> +
> +			ths_calibration: thermal-sensor-calibration@34 {
> +				reg = <0x34 8>;
> +			};
> +		};
> +
> +		crypto: crypto@1c15000 {
> +			compatible = "allwinner,sun8i-a83t-crypto";
> +			reg = <0x01c15000 0x1000>;
> +			interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
> +			resets = <&ccu RST_BUS_SS>;
> +			clocks = <&ccu CLK_BUS_SS>, <&ccu CLK_SS>;
> +			clock-names = "bus", "mod";
> +		};
> +
> +		msgbox: mailbox@1c17000 {
> +			compatible = "allwinner,sun8i-a83t-msgbox",
> +				     "allwinner,sun6i-a31-msgbox";
> +			reg = <0x01c17000 0x1000>;
> +			clocks = <&ccu CLK_BUS_MSGBOX>;
> +			resets = <&ccu RST_BUS_MSGBOX>;
> +			interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
> +			#mbox-cells = <1>;
>  		};
>  
>  		usb_otg: usb@1c19000 {
> @@ -562,6 +631,7 @@
>  			phys = <&usbphy 0>;
>  			phy-names = "usb";
>  			extcon = <&usbphy 0>;
> +			dr_mode = "otg";
>  			status = "disabled";
>  		};
>  
> @@ -649,6 +719,20 @@
>  			#interrupt-cells = <3>;
>  			#gpio-cells = <3>;
>  
> +			/omit-if-no-ref/
> +			csi_8bit_parallel_pins: csi-8bit-parallel-pins {
> +				pins = "PE0", "PE2", "PE3", "PE6", "PE7",
> +				       "PE8", "PE9", "PE10", "PE11",
> +				       "PE12", "PE13";
> +				function = "csi";
> +			};
> +
> +			/omit-if-no-ref/
> +			csi_mclk_pin: csi-mclk-pin {
> +				pins = "PE1";
> +				function = "csi";
> +			};
> +
>  			emac_rgmii_pins: emac-rgmii-pins {
>  				pins = "PD2", "PD3", "PD4", "PD5", "PD6", "PD7",
>  				       "PD11", "PD12", "PD13", "PD14", "PD18",
> @@ -676,6 +760,12 @@
>  				function = "i2c1";
>  			};
>  
> +			/omit-if-no-ref/
> +			i2c2_pe_pins: i2c2-pe-pins {
> +				pins = "PE14", "PE15";
> +				function = "i2c2";
> +			};
> +
>  			i2c2_ph_pins: i2c2-ph-pins {
>  				pins = "PH4", "PH5";
>  				function = "i2c2";
> @@ -747,10 +837,16 @@
>  				pins = "PG8", "PG9";
>  				function = "uart1";
>  			};
> +
> +			/omit-if-no-ref/
> +			uart2_pb_pins: uart2-pb-pins {
> +				pins = "PB0", "PB1";
> +				function = "uart2";
> +			};
>  		};
>  
>  		timer@1c20c00 {
> -			compatible = "allwinner,sun4i-a10-timer";
> +			compatible = "allwinner,sun8i-a23-timer";
>  			reg = <0x01c20c00 0xa0>;
>  			interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
>  				     <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
> @@ -852,6 +948,39 @@
>  			status = "disabled";
>  		};
>  
> +		uart2: serial@1c28800 {
> +			compatible = "snps,dw-apb-uart";
> +			reg = <0x01c28800 0x400>;
> +			interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
> +			reg-shift = <2>;
> +			reg-io-width = <4>;
> +			clocks = <&ccu CLK_BUS_UART2>;
> +			resets = <&ccu RST_BUS_UART2>;
> +			status = "disabled";
> +		};
> +
> +		uart3: serial@1c28c00 {
> +			compatible = "snps,dw-apb-uart";
> +			reg = <0x01c28c00 0x400>;
> +			interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
> +			reg-shift = <2>;
> +			reg-io-width = <4>;
> +			clocks = <&ccu CLK_BUS_UART3>;
> +			resets = <&ccu RST_BUS_UART3>;
> +			status = "disabled";
> +		};
> +
> +		uart4: serial@1c29000 {
> +			compatible = "snps,dw-apb-uart";
> +			reg = <0x01c29000 0x400>;
> +			interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
> +			reg-shift = <2>;
> +			reg-io-width = <4>;
> +			clocks = <&ccu CLK_BUS_UART4>;
> +			resets = <&ccu RST_BUS_UART4>;
> +			status = "disabled";
> +		};
> +
>  		i2c0: i2c@1c2ac00 {
>  			compatible = "allwinner,sun8i-a83t-i2c",
>  				     "allwinner,sun6i-a31-i2c";
> @@ -898,12 +1027,10 @@
>  			reg = <0x01c30000 0x104>;
>  			interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
>  			interrupt-names = "macirq";
> -			resets = <&ccu 13>;
> -			reset-names = "stmmaceth";
> -			clocks = <&ccu 27>;
> +			clocks = <&ccu CLK_BUS_EMAC>;
>  			clock-names = "stmmaceth";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> +			resets = <&ccu RST_BUS_EMAC>;
> +			reset-names = "stmmaceth";
>  			status = "disabled";
>  
>  			mdio: mdio {
> @@ -914,7 +1041,7 @@
>  		};
>  
>  		gic: interrupt-controller@1c81000 {
> -			compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic";
> +			compatible = "arm,gic-400";
>  			reg = <0x01c81000 0x1000>,
>  			      <0x01c82000 0x2000>,
>  			      <0x01c84000 0x2000>,
> @@ -924,6 +1051,18 @@
>  			interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
>  		};
>  
> +		csi: camera@1cb0000 {
> +			compatible = "allwinner,sun8i-a83t-csi";
> +			reg = <0x01cb0000 0x1000>;
> +			interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&ccu CLK_BUS_CSI>,
> +				 <&ccu CLK_CSI_SCLK>,
> +				 <&ccu CLK_DRAM_CSI>;
> +			clock-names = "bus", "mod", "ram";
> +			resets = <&ccu RST_BUS_CSI>;
> +			status = "disabled";
> +		};
> +
>  		hdmi: hdmi@1ee0000 {
>  			compatible = "allwinner,sun8i-a83t-dw-hdmi";
>  			reg = <0x01ee0000 0x10000>;
> @@ -935,7 +1074,7 @@
>  			resets = <&ccu RST_BUS_HDMI1>;
>  			reset-names = "ctrl";
>  			phys = <&hdmi_phy>;
> -			phy-names = "hdmi-phy";
> +			phy-names = "phy";
>  			pinctrl-names = "default";
>  			pinctrl-0 = <&hdmi_pins>;
>  			status = "disabled";
> @@ -981,7 +1120,7 @@
>  			compatible = "allwinner,sun8i-a83t-r-ccu";
>  			reg = <0x01f01400 0x400>;
>  			clocks = <&osc24M>, <&osc16Md512>, <&osc16M>,
> -				 <&ccu 6>;
> +				 <&ccu CLK_PLL_PERIPH>;
>  			clock-names = "hosc", "losc", "iosc", "pll-periph";
>  			#clock-cells = <1>;
>  			#reset-cells = <1>;
> @@ -992,6 +1131,26 @@
>  			reg = <0x1f01c00 0x400>;
>  		};
>  
> +		r_cir: ir@1f02000 {
> +			compatible = "allwinner,sun8i-a83t-ir",
> +				"allwinner,sun6i-a31-ir";
> +			clocks = <&r_ccu CLK_APB0_IR>, <&r_ccu CLK_IR>;
> +			clock-names = "apb", "ir";
> +			resets = <&r_ccu RST_APB0_IR>;
> +			interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
> +			reg = <0x01f02000 0x400>;
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&r_cir_pin>;
> +			status = "disabled";
> +		};
> +
> +		r_lradc: lradc@1f03c00 {
> +			compatible = "allwinner,sun8i-a83t-r-lradc";
> +			reg = <0x01f03c00 0x100>;
> +			interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
> +			status = "disabled";
> +		};
> +
>  		r_pio: pinctrl@1f02c00 {
>  			compatible = "allwinner,sun8i-a83t-r-pinctrl";
>  			reg = <0x01f02c00 0x400>;
> @@ -1004,6 +1163,11 @@
>  			interrupt-controller;
>  			#interrupt-cells = <3>;
>  
> +			r_cir_pin: r-cir-pin {
> +				pins = "PL12";
> +				function = "s_cir_rx";
> +			};
> +
>  			r_rsb_pins: r-rsb-pins {
>  				pins = "PL0", "PL1";
>  				function = "s_rsb";
> @@ -1026,5 +1190,82 @@
>  			#address-cells = <1>;
>  			#size-cells = <0>;
>  		};
> +
> +		ths: thermal-sensor@1f04000 {
> +			compatible = "allwinner,sun8i-a83t-ths";
> +			reg = <0x01f04000 0x100>;
> +			interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
> +			nvmem-cells = <&ths_calibration>;
> +			nvmem-cell-names = "calibration";
> +			#thermal-sensor-cells = <1>;
> +		};
> +	};
> +
> +	thermal-zones {
> +		cpu0_thermal: cpu0-thermal {
> +			polling-delay-passive = <0>;
> +			polling-delay = <0>;
> +			thermal-sensors = <&ths 0>;
> +
> +			trips {
> +				cpu0_hot: cpu-hot {
> +					temperature = <80000>;
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};
> +
> +				cpu0_very_hot: cpu-very-hot {
> +					temperature = <100000>;
> +					hysteresis = <0>;
> +					type = "critical";
> +				};
> +			};
> +
> +			cooling-maps {
> +				cpu-hot-limit {
> +					trip = <&cpu0_hot>;
> +					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +				};
> +			};
> +		};
> +
> +		cpu1_thermal: cpu1-thermal {
> +			polling-delay-passive = <0>;
> +			polling-delay = <0>;
> +			thermal-sensors = <&ths 1>;
> +
> +			trips {
> +				cpu1_hot: cpu-hot {
> +					temperature = <80000>;
> +					hysteresis = <2000>;
> +					type = "passive";
> +				};
> +
> +				cpu1_very_hot: cpu-very-hot {
> +					temperature = <100000>;
> +					hysteresis = <0>;
> +					type = "critical";
> +				};
> +			};
> +
> +			cooling-maps {
> +				cpu-hot-limit {
> +					trip = <&cpu1_hot>;
> +					cooling-device = <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
> +							 <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
> +				};
> +			};
> +		};
> +
> +		gpu_thermal: gpu-thermal {
> +			polling-delay-passive = <0>;
> +			polling-delay = <0>;
> +			thermal-sensors = <&ths 2>;
> +		};
>  	};
>  };
diff mbox series

Patch

diff --git a/arch/arm/dts/axp81x.dtsi b/arch/arm/dts/axp81x.dtsi
index 043c717dce..b93387b0c1 100644
--- a/arch/arm/dts/axp81x.dtsi
+++ b/arch/arm/dts/axp81x.dtsi
@@ -48,6 +48,11 @@ 
 	interrupt-controller;
 	#interrupt-cells = <1>;
 
+	ac_power_supply: ac-power {
+		compatible = "x-powers,axp813-ac-power-supply";
+		status = "disabled";
+	};
+
 	axp_adc: adc {
 		compatible = "x-powers,axp813-adc";
 		#io-channel-cells = <1>;
@@ -58,18 +63,18 @@ 
 		gpio-controller;
 		#gpio-cells = <2>;
 
-		gpio0_ldo: gpio0-ldo {
+		gpio0_ldo: gpio0-ldo-pin {
 			pins = "GPIO0";
 			function = "ldo";
 		};
 
-		gpio1_ldo: gpio1-ldo {
+		gpio1_ldo: gpio1-ldo-pin {
 			pins = "GPIO1";
 			function = "ldo";
 		};
 	};
 
-	battery_power_supply: battery-power-supply {
+	battery_power_supply: battery-power {
 		compatible = "x-powers,axp813-battery-power-supply";
 		status = "disabled";
 	};
@@ -166,4 +171,8 @@ 
 			status = "disabled";
 		};
 	};
+
+	usb_power_supply: usb-power {
+		compatible = "x-powers,axp813-usb-power-supply";
+	};
 };
diff --git a/arch/arm/dts/sun8i-a83t-allwinner-h8homlet-v2.dts b/arch/arm/dts/sun8i-a83t-allwinner-h8homlet-v2.dts
index 36ecebaff3..9c006fc188 100644
--- a/arch/arm/dts/sun8i-a83t-allwinner-h8homlet-v2.dts
+++ b/arch/arm/dts/sun8i-a83t-allwinner-h8homlet-v2.dts
@@ -79,6 +79,14 @@ 
 	};
 };
 
+&cpu0 {
+	cpu-supply = <&reg_dcdc2>;
+};
+
+&cpu100 {
+	cpu-supply = <&reg_dcdc3>;
+};
+
 &ehci0 {
 	status = "okay";
 };
@@ -146,6 +154,10 @@ 
 
 #include "axp81x.dtsi"
 
+&ac_power_supply {
+	status = "okay";
+};
+
 &reg_aldo1 {
 	regulator-always-on;
 	regulator-min-microvolt = <1800000>;
diff --git a/arch/arm/dts/sun8i-a83t-bananapi-m3.dts b/arch/arm/dts/sun8i-a83t-bananapi-m3.dts
index 2beafe3a31..b60016a442 100644
--- a/arch/arm/dts/sun8i-a83t-bananapi-m3.dts
+++ b/arch/arm/dts/sun8i-a83t-bananapi-m3.dts
@@ -74,12 +74,12 @@ 
 	leds {
 		compatible = "gpio-leds";
 
-		blue {
+		led-0 {
 			label = "bananapi-m3:blue:usr";
 			gpios = <&axp_gpio 1 GPIO_ACTIVE_HIGH>;
 		};
 
-		green {
+		led-1 {
 			label = "bananapi-m3:green:usr";
 			gpios = <&axp_gpio 0 GPIO_ACTIVE_HIGH>;
 		};
@@ -107,6 +107,14 @@ 
 	};
 };
 
+&cpu0 {
+	cpu-supply = <&reg_dcdc2>;
+};
+
+&cpu100 {
+	cpu-supply = <&reg_dcdc3>;
+};
+
 &de {
 	status = "okay";
 };
@@ -183,6 +191,11 @@ 
 	status = "okay";
 };
 
+&r_cir {
+	clock-frequency = <3000000>;
+	status = "okay";
+};
+
 &r_rsb {
 	status = "okay";
 
@@ -224,6 +237,14 @@ 
 
 #include "axp81x.dtsi"
 
+&ac_power_supply {
+	status = "okay";
+};
+
+&battery_power_supply {
+	status = "okay";
+};
+
 &reg_aldo1 {
 	regulator-always-on;
 	regulator-min-microvolt = <1800000>;
@@ -301,8 +322,8 @@ 
 
 &reg_dldo3 {
 	regulator-always-on;
-	regulator-min-microvolt = <2500000>;
-	regulator-max-microvolt = <2500000>;
+	regulator-min-microvolt = <3300000>;
+	regulator-max-microvolt = <3300000>;
 	regulator-name = "vcc-pd";
 };
 
@@ -350,11 +371,37 @@ 
 	status = "okay";
 };
 
+&uart1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
+	uart-has-rtscts;
+	status = "okay";
+
+	bluetooth {
+		compatible = "brcm,bcm43438-bt";
+		clocks = <&ac100_rtc 1>;
+		clock-names = "lpo";
+		vbat-supply = <&reg_dldo1>;
+		vddio-supply = <&reg_dldo1>;
+		device-wakeup-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */
+		host-wakeup-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* PL5 */
+		shutdown-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
+	};
+};
+
 &usb_otg {
+	dr_mode = "otg";
+	status = "okay";
+};
+
+&usb_power_supply {
 	status = "okay";
 };
 
 &usbphy {
+	usb0_id_det-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */
+	usb0_vbus_power-supply = <&usb_power_supply>;
+	usb0_vbus-supply = <&reg_drivevbus>;
 	usb1_vbus-supply = <&reg_usb1_vbus>;
 	status = "okay";
 };
diff --git a/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts b/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts
index ecd9ff38a8..e26af7cf10 100644
--- a/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts
+++ b/arch/arm/dts/sun8i-a83t-cubietruck-plus.dts
@@ -60,25 +60,36 @@ 
 		stdout-path = "serial0:115200n8";
 	};
 
+	hdmi-connector {
+		compatible = "hdmi-connector";
+		type = "a";
+
+		port {
+			hdmi_con_in: endpoint {
+				remote-endpoint = <&hdmi_out_con>;
+			};
+		};
+	};
+
 	leds {
 		compatible = "gpio-leds";
 
-		blue {
+		led-0 {
 			label = "cubietruck-plus:blue:usr";
 			gpios = <&pio 3 25 GPIO_ACTIVE_HIGH>; /* PD25 */
 		};
 
-		orange {
+		led-1 {
 			label = "cubietruck-plus:orange:usr";
 			gpios = <&pio 3 26 GPIO_ACTIVE_HIGH>; /* PD26 */
 		};
 
-		white {
+		led-2 {
 			label = "cubietruck-plus:white:usr";
 			gpios = <&pio 3 27 GPIO_ACTIVE_HIGH>; /* PD27 */
 		};
 
-		green {
+		led-3 {
 			label = "cubietruck-plus:green:usr";
 			gpios = <&pio 4 4 GPIO_ACTIVE_HIGH>; /* PE4 */
 		};
@@ -90,7 +101,7 @@ 
 		initial-mode = <1>; /* initialize in HUB mode */
 		disabled-ports = <1>;
 		intn-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
-		reset-gpios = <&pio 4 16 GPIO_ACTIVE_HIGH>; /* PE16 */
+		reset-gpios = <&pio 4 16 GPIO_ACTIVE_LOW>; /* PE16 */
 		connect-gpios = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */
 		refclk-frequency = <19200000>;
 	};
@@ -145,6 +156,18 @@ 
 	};
 };
 
+&cpu0 {
+	cpu-supply = <&reg_dcdc2>;
+};
+
+&cpu100 {
+	cpu-supply = <&reg_dcdc3>;
+};
+
+&de {
+	status = "okay";
+};
+
 &ehci0 {
 	/* GL830 USB-to-SATA bridge here */
 	status = "okay";
@@ -164,6 +187,16 @@ 
 	status = "okay";
 };
 
+&hdmi {
+	status = "okay";
+};
+
+&hdmi_out {
+	hdmi_out_con: endpoint {
+		remote-endpoint = <&hdmi_con_in>;
+	};
+};
+
 &mdio {
 	rgmii_phy: ethernet-phy@1 {
 		compatible = "ethernet-phy-ieee802.3-c22";
@@ -239,6 +272,14 @@ 
 
 #include "axp81x.dtsi"
 
+&ac_power_supply {
+	status = "okay";
+};
+
+&battery_power_supply {
+	status = "okay";
+};
+
 &reg_aldo1 {
 	regulator-always-on;
 	regulator-min-microvolt = <1800000>;
@@ -386,11 +427,37 @@ 
 	status = "okay";
 };
 
+&uart1 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
+	uart-has-rtscts;
+	status = "okay";
+
+	bluetooth {
+		compatible = "brcm,bcm4330-bt";
+		clocks = <&ac100_rtc 1>;
+		clock-names = "lpo";
+		vbat-supply = <&reg_dcdc1>;
+		vddio-supply = <&reg_sw>;
+		device-wakeup-gpios = <&r_pio 0 10 GPIO_ACTIVE_HIGH>; /* PL10 */
+		host-wakeup-gpios = <&r_pio 0 8 GPIO_ACTIVE_HIGH>; /* PL8 */
+		shutdown-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
+	};
+};
+
 &usb_otg {
+	dr_mode = "otg";
+	status = "okay";
+};
+
+&usb_power_supply {
 	status = "okay";
 };
 
 &usbphy {
+	usb0_id_det-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */
+	usb0_vbus_power-supply = <&usb_power_supply>;
+	usb0_vbus-supply = <&reg_drivevbus>;
 	usb1_vbus-supply = <&reg_usb1_vbus>;
 	usb2_vbus-supply = <&reg_usb2_vbus>;
 	status = "okay";
diff --git a/arch/arm/dts/sun8i-a83t-tbs-a711.dts b/arch/arm/dts/sun8i-a83t-tbs-a711.dts
index 1537ce148c..13ae10f60d 100644
--- a/arch/arm/dts/sun8i-a83t-tbs-a711.dts
+++ b/arch/arm/dts/sun8i-a83t-tbs-a711.dts
@@ -46,6 +46,7 @@ 
 
 #include <dt-bindings/gpio/gpio.h>
 #include <dt-bindings/pwm/pwm.h>
+#include <dt-bindings/input/input.h>
 
 / {
 	model = "TBS A711 Tablet";
@@ -64,7 +65,7 @@ 
 		compatible = "pwm-backlight";
 		pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>;
 		enable-gpios = <&pio 3 29 GPIO_ACTIVE_HIGH>;
-
+		power-supply = <&reg_sw>;
 		brightness-levels = <0 1 2 4 8 16 32 64 128 255>;
 		default-brightness-level = <9>;
 	};
@@ -98,6 +99,13 @@ 
 		};
 	};
 
+	reg_gps: reg-gps {
+		compatible = "regulator-fixed";
+		regulator-name = "gps";
+		regulator-min-microvolt = <3000000>;
+		regulator-max-microvolt = <3000000>;
+	};
+
 	reg_vbat: reg-vbat {
 		compatible = "regulator-fixed";
 		regulator-name = "vbat";
@@ -156,10 +164,39 @@ 
 	status = "okay";
 };
 
+&i2c0 {
+	clock-frequency = <400000>;
+	status = "okay";
+
+	touchscreen@38 {
+		compatible = "edt,edt-ft5206";
+		reg = <0x38>;
+		interrupt-parent = <&r_pio>;
+		interrupts = <0 7 IRQ_TYPE_EDGE_FALLING>; /* PL7 */
+		reset-gpios = <&pio 3 5 GPIO_ACTIVE_LOW>; /* PD5 */
+		vcc-supply = <&reg_ldo_io0>;
+		touchscreen-size-x = <1024>;
+		touchscreen-size-y = <600>;
+	};
+};
+
+&i2c1 {
+	clock-frequency = <400000>;
+	status = "okay";
+
+	accelerometer@18 {
+		compatible = "bosch,bma250";
+		reg = <0x18>;
+		interrupt-parent = <&pio>;
+		interrupts = <7 10 IRQ_TYPE_EDGE_RISING>; /* PH10 / EINT10 */
+	};
+};
+
 &mmc0 {
 	vmmc-supply = <&reg_dcdc1>;
 	pinctrl-names = "default";
 	pinctrl-0 = <&mmc0_pins>;
+	bus-width = <4>;
 	cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
 	status = "okay";
 };
@@ -171,6 +208,7 @@ 
 	vqmmc-supply = <&reg_dldo1>;
 	non-removable;
 	wakeup-source;
+	keep-power-in-suspend;
 	status = "okay";
 
 	brcmf: wifi@1 {
@@ -199,6 +237,25 @@ 
 	status = "okay";
 };
 
+&r_lradc {
+	vref-supply = <&reg_aldo2>;
+	status = "okay";
+
+	button-210 {
+		label = "Volume Up";
+		linux,code = <KEY_VOLUMEUP>;
+		channel = <0>;
+		voltage = <210000>;
+	};
+
+	button-410 {
+		label = "Volume Down";
+		linux,code = <KEY_VOLUMEDOWN>;
+		channel = <0>;
+		voltage = <410000>;
+	};
+};
+
 &r_rsb {
 	status = "okay";
 
@@ -317,8 +374,8 @@ 
 };
 
 &reg_dldo3 {
-	regulator-min-microvolt = <2800000>;
-	regulator-max-microvolt = <2800000>;
+	regulator-min-microvolt = <1800000>;
+	regulator-max-microvolt = <1800000>;
 	regulator-name = "vdd-csi";
 };
 
@@ -390,8 +447,7 @@ 
 };
 
 &tcon0_out {
-	tcon0_out_lcd: endpoint@0 {
-		reg = <0>;
+	tcon0_out_lcd: endpoint {
 		remote-endpoint = <&panel_input>;
 	};
 };
@@ -406,18 +462,45 @@ 
 &uart1 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
+	uart-has-rtscts;
 	status = "okay";
+
+	bluetooth {
+		compatible = "brcm,bcm20702a1";
+		clocks = <&ac100_rtc 1>;
+		clock-names = "lpo";
+		vbat-supply = <&reg_vbat>;
+		vddio-supply = <&reg_dldo1>;
+		device-wakeup-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
+		host-wakeup-gpios = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; /* PL5 */
+		shutdown-gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */
+		max-speed = <1500000>;
+	};
+};
+
+&uart2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&uart2_pb_pins>;
+	status = "okay";
+
+	gnss {
+		compatible = "u-blox,neo-6m";
+
+		v-bckp-supply = <&reg_rtc_ldo>;
+		vcc-supply = <&reg_gps>;
+		current-speed = <9600>;
+	};
 };
 
 &usb_otg {
-	dr_mode = "otg";
 	status = "okay";
 };
 
 &usbphy {
-	usb0_id_det-gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */
+	usb0_id_det-gpios = <&pio 7 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH11 */
+	usb0_vbus_power-supply = <&usb_power_supply>;
 	usb0_vbus-supply = <&reg_drivevbus>;
-	usb1_vbus_supply = <&reg_vmain>;
-	usb2_vbus_supply = <&reg_vmain>;
+	usb1_vbus-supply = <&reg_vmain>;
+	usb2_vbus-supply = <&reg_vmain>;
 	status = "okay";
 };
diff --git a/arch/arm/dts/sun8i-a83t.dtsi b/arch/arm/dts/sun8i-a83t.dtsi
index 2be23d6009..9c07660080 100644
--- a/arch/arm/dts/sun8i-a83t.dtsi
+++ b/arch/arm/dts/sun8i-a83t.dtsi
@@ -50,6 +50,7 @@ 
 #include <dt-bindings/reset/sun8i-a83t-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>;
@@ -61,79 +62,91 @@ 
 		#size-cells = <0>;
 
 		cpu0: cpu@0 {
-			clocks = <&ccu CLK_C0CPUX>;
-			clock-names = "cpu";
 			compatible = "arm,cortex-a7";
 			device_type = "cpu";
+			clocks = <&ccu CLK_C0CPUX>;
 			operating-points-v2 = <&cpu0_opp_table>;
 			cci-control-port = <&cci_control0>;
 			enable-method = "allwinner,sun8i-a83t-smp";
 			reg = <0>;
+			#cooling-cells = <2>;
 		};
 
-		cpu@1 {
+		cpu1: cpu@1 {
 			compatible = "arm,cortex-a7";
 			device_type = "cpu";
+			clocks = <&ccu CLK_C0CPUX>;
 			operating-points-v2 = <&cpu0_opp_table>;
 			cci-control-port = <&cci_control0>;
 			enable-method = "allwinner,sun8i-a83t-smp";
 			reg = <1>;
+			#cooling-cells = <2>;
 		};
 
-		cpu@2 {
+		cpu2: cpu@2 {
 			compatible = "arm,cortex-a7";
 			device_type = "cpu";
+			clocks = <&ccu CLK_C0CPUX>;
 			operating-points-v2 = <&cpu0_opp_table>;
 			cci-control-port = <&cci_control0>;
 			enable-method = "allwinner,sun8i-a83t-smp";
 			reg = <2>;
+			#cooling-cells = <2>;
 		};
 
-		cpu@3 {
+		cpu3: cpu@3 {
 			compatible = "arm,cortex-a7";
 			device_type = "cpu";
+			clocks = <&ccu CLK_C0CPUX>;
 			operating-points-v2 = <&cpu0_opp_table>;
 			cci-control-port = <&cci_control0>;
 			enable-method = "allwinner,sun8i-a83t-smp";
 			reg = <3>;
+			#cooling-cells = <2>;
 		};
 
 		cpu100: cpu@100 {
-			clocks = <&ccu CLK_C1CPUX>;
-			clock-names = "cpu";
 			compatible = "arm,cortex-a7";
 			device_type = "cpu";
+			clocks = <&ccu CLK_C1CPUX>;
 			operating-points-v2 = <&cpu1_opp_table>;
 			cci-control-port = <&cci_control1>;
 			enable-method = "allwinner,sun8i-a83t-smp";
 			reg = <0x100>;
+			#cooling-cells = <2>;
 		};
 
-		cpu@101 {
+		cpu101: cpu@101 {
 			compatible = "arm,cortex-a7";
 			device_type = "cpu";
+			clocks = <&ccu CLK_C1CPUX>;
 			operating-points-v2 = <&cpu1_opp_table>;
 			cci-control-port = <&cci_control1>;
 			enable-method = "allwinner,sun8i-a83t-smp";
 			reg = <0x101>;
+			#cooling-cells = <2>;
 		};
 
-		cpu@102 {
+		cpu102: cpu@102 {
 			compatible = "arm,cortex-a7";
 			device_type = "cpu";
+			clocks = <&ccu CLK_C1CPUX>;
 			operating-points-v2 = <&cpu1_opp_table>;
 			cci-control-port = <&cci_control1>;
 			enable-method = "allwinner,sun8i-a83t-smp";
 			reg = <0x102>;
+			#cooling-cells = <2>;
 		};
 
-		cpu@103 {
+		cpu103: cpu@103 {
 			compatible = "arm,cortex-a7";
 			device_type = "cpu";
+			clocks = <&ccu CLK_C1CPUX>;
 			operating-points-v2 = <&cpu1_opp_table>;
 			cci-control-port = <&cci_control1>;
 			enable-method = "allwinner,sun8i-a83t-smp";
 			reg = <0x103>;
+			#cooling-cells = <2>;
 		};
 	};
 
@@ -187,12 +200,7 @@ 
 		status = "disabled";
 	};
 
-	memory {
-		reg = <0x40000000 0x80000000>;
-		device_type = "memory";
-	};
-
-	cpu0_opp_table: opp_table0 {
+	cpu0_opp_table: opp-table-cluster0 {
 		compatible = "operating-points-v2";
 		opp-shared;
 
@@ -245,7 +253,7 @@ 
 		};
 	};
 
-	cpu1_opp_table: opp_table1 {
+	cpu1_opp_table: opp-table-cluster1 {
 		compatible = "operating-points-v2";
 		opp-shared;
 
@@ -306,16 +314,27 @@ 
 
 		display_clocks: clock@1000000 {
 			compatible = "allwinner,sun8i-a83t-de2-clk";
-			reg = <0x01000000 0x100000>;
-			clocks = <&ccu CLK_PLL_DE>,
-				 <&ccu CLK_BUS_DE>;
-			clock-names = "mod",
-				      "bus";
+			reg = <0x01000000 0x10000>;
+			clocks = <&ccu CLK_BUS_DE>,
+				 <&ccu CLK_PLL_DE>;
+			clock-names = "bus",
+				      "mod";
 			resets = <&ccu RST_BUS_DE>;
 			#clock-cells = <1>;
 			#reset-cells = <1>;
 		};
 
+		rotate: rotate@1020000 {
+			compatible = "allwinner,sun8i-a83t-de2-rotate";
+			reg = <0x1020000 0x10000>;
+			interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&display_clocks CLK_BUS_ROT>,
+				 <&display_clocks CLK_ROT>;
+			clock-names = "bus",
+				      "mod";
+			resets = <&display_clocks RST_ROT>;
+		};
+
 		mixer0: mixer@1100000 {
 			compatible = "allwinner,sun8i-a83t-de2-mixer-0";
 			reg = <0x01100000 0x100000>;
@@ -338,6 +357,11 @@ 
 						reg = <0>;
 						remote-endpoint = <&tcon0_in_mixer0>;
 					};
+
+					mixer0_out_tcon1: endpoint@1 {
+						reg = <1>;
+						remote-endpoint = <&tcon1_in_mixer0>;
+					};
 				};
 			};
 		};
@@ -356,9 +380,17 @@ 
 				#size-cells = <0>;
 
 				mixer1_out: port@1 {
+					#address-cells = <1>;
+					#size-cells = <0>;
 					reg = <1>;
 
-					mixer1_out_tcon1: endpoint {
+					mixer1_out_tcon0: endpoint@0 {
+						reg = <0>;
+						remote-endpoint = <&tcon0_in_mixer1>;
+					};
+
+					mixer1_out_tcon1: endpoint@1 {
+						reg = <1>;
 						remote-endpoint = <&tcon1_in_mixer1>;
 					};
 				};
@@ -425,6 +457,7 @@ 
 			clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>;
 			clock-names = "ahb", "tcon-ch0";
 			clock-output-names = "tcon-pixel-clock";
+			#clock-cells = <0>;
 			resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>;
 			reset-names = "lcd", "lvds";
 
@@ -441,11 +474,14 @@ 
 						reg = <0>;
 						remote-endpoint = <&mixer0_out_tcon0>;
 					};
+
+					tcon0_in_mixer1: endpoint@1 {
+						reg = <1>;
+						remote-endpoint = <&mixer1_out_tcon0>;
+					};
 				};
 
 				tcon0_out: port@1 {
-					#address-cells = <1>;
-					#size-cells = <0>;
 					reg = <1>;
 				};
 			};
@@ -465,9 +501,17 @@ 
 				#size-cells = <0>;
 
 				tcon1_in: port@0 {
+					#address-cells = <1>;
+					#size-cells = <0>;
 					reg = <0>;
 
-					tcon1_in_mixer1: endpoint {
+					tcon1_in_mixer0: endpoint@0 {
+						reg = <0>;
+						remote-endpoint = <&mixer0_out_tcon1>;
+					};
+
+					tcon1_in_mixer1: endpoint@1 {
+						reg = <1>;
 						remote-endpoint = <&mixer1_out_tcon1>;
 					};
 				};
@@ -549,6 +593,31 @@ 
 		sid: eeprom@1c14000 {
 			compatible = "allwinner,sun8i-a83t-sid";
 			reg = <0x1c14000 0x400>;
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			ths_calibration: thermal-sensor-calibration@34 {
+				reg = <0x34 8>;
+			};
+		};
+
+		crypto: crypto@1c15000 {
+			compatible = "allwinner,sun8i-a83t-crypto";
+			reg = <0x01c15000 0x1000>;
+			interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
+			resets = <&ccu RST_BUS_SS>;
+			clocks = <&ccu CLK_BUS_SS>, <&ccu CLK_SS>;
+			clock-names = "bus", "mod";
+		};
+
+		msgbox: mailbox@1c17000 {
+			compatible = "allwinner,sun8i-a83t-msgbox",
+				     "allwinner,sun6i-a31-msgbox";
+			reg = <0x01c17000 0x1000>;
+			clocks = <&ccu CLK_BUS_MSGBOX>;
+			resets = <&ccu RST_BUS_MSGBOX>;
+			interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
+			#mbox-cells = <1>;
 		};
 
 		usb_otg: usb@1c19000 {
@@ -562,6 +631,7 @@ 
 			phys = <&usbphy 0>;
 			phy-names = "usb";
 			extcon = <&usbphy 0>;
+			dr_mode = "otg";
 			status = "disabled";
 		};
 
@@ -649,6 +719,20 @@ 
 			#interrupt-cells = <3>;
 			#gpio-cells = <3>;
 
+			/omit-if-no-ref/
+			csi_8bit_parallel_pins: csi-8bit-parallel-pins {
+				pins = "PE0", "PE2", "PE3", "PE6", "PE7",
+				       "PE8", "PE9", "PE10", "PE11",
+				       "PE12", "PE13";
+				function = "csi";
+			};
+
+			/omit-if-no-ref/
+			csi_mclk_pin: csi-mclk-pin {
+				pins = "PE1";
+				function = "csi";
+			};
+
 			emac_rgmii_pins: emac-rgmii-pins {
 				pins = "PD2", "PD3", "PD4", "PD5", "PD6", "PD7",
 				       "PD11", "PD12", "PD13", "PD14", "PD18",
@@ -676,6 +760,12 @@ 
 				function = "i2c1";
 			};
 
+			/omit-if-no-ref/
+			i2c2_pe_pins: i2c2-pe-pins {
+				pins = "PE14", "PE15";
+				function = "i2c2";
+			};
+
 			i2c2_ph_pins: i2c2-ph-pins {
 				pins = "PH4", "PH5";
 				function = "i2c2";
@@ -747,10 +837,16 @@ 
 				pins = "PG8", "PG9";
 				function = "uart1";
 			};
+
+			/omit-if-no-ref/
+			uart2_pb_pins: uart2-pb-pins {
+				pins = "PB0", "PB1";
+				function = "uart2";
+			};
 		};
 
 		timer@1c20c00 {
-			compatible = "allwinner,sun4i-a10-timer";
+			compatible = "allwinner,sun8i-a23-timer";
 			reg = <0x01c20c00 0xa0>;
 			interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
 				     <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
@@ -852,6 +948,39 @@ 
 			status = "disabled";
 		};
 
+		uart2: serial@1c28800 {
+			compatible = "snps,dw-apb-uart";
+			reg = <0x01c28800 0x400>;
+			interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
+			reg-shift = <2>;
+			reg-io-width = <4>;
+			clocks = <&ccu CLK_BUS_UART2>;
+			resets = <&ccu RST_BUS_UART2>;
+			status = "disabled";
+		};
+
+		uart3: serial@1c28c00 {
+			compatible = "snps,dw-apb-uart";
+			reg = <0x01c28c00 0x400>;
+			interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
+			reg-shift = <2>;
+			reg-io-width = <4>;
+			clocks = <&ccu CLK_BUS_UART3>;
+			resets = <&ccu RST_BUS_UART3>;
+			status = "disabled";
+		};
+
+		uart4: serial@1c29000 {
+			compatible = "snps,dw-apb-uart";
+			reg = <0x01c29000 0x400>;
+			interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
+			reg-shift = <2>;
+			reg-io-width = <4>;
+			clocks = <&ccu CLK_BUS_UART4>;
+			resets = <&ccu RST_BUS_UART4>;
+			status = "disabled";
+		};
+
 		i2c0: i2c@1c2ac00 {
 			compatible = "allwinner,sun8i-a83t-i2c",
 				     "allwinner,sun6i-a31-i2c";
@@ -898,12 +1027,10 @@ 
 			reg = <0x01c30000 0x104>;
 			interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
 			interrupt-names = "macirq";
-			resets = <&ccu 13>;
-			reset-names = "stmmaceth";
-			clocks = <&ccu 27>;
+			clocks = <&ccu CLK_BUS_EMAC>;
 			clock-names = "stmmaceth";
-			#address-cells = <1>;
-			#size-cells = <0>;
+			resets = <&ccu RST_BUS_EMAC>;
+			reset-names = "stmmaceth";
 			status = "disabled";
 
 			mdio: mdio {
@@ -914,7 +1041,7 @@ 
 		};
 
 		gic: interrupt-controller@1c81000 {
-			compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic";
+			compatible = "arm,gic-400";
 			reg = <0x01c81000 0x1000>,
 			      <0x01c82000 0x2000>,
 			      <0x01c84000 0x2000>,
@@ -924,6 +1051,18 @@ 
 			interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(8) | IRQ_TYPE_LEVEL_HIGH)>;
 		};
 
+		csi: camera@1cb0000 {
+			compatible = "allwinner,sun8i-a83t-csi";
+			reg = <0x01cb0000 0x1000>;
+			interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&ccu CLK_BUS_CSI>,
+				 <&ccu CLK_CSI_SCLK>,
+				 <&ccu CLK_DRAM_CSI>;
+			clock-names = "bus", "mod", "ram";
+			resets = <&ccu RST_BUS_CSI>;
+			status = "disabled";
+		};
+
 		hdmi: hdmi@1ee0000 {
 			compatible = "allwinner,sun8i-a83t-dw-hdmi";
 			reg = <0x01ee0000 0x10000>;
@@ -935,7 +1074,7 @@ 
 			resets = <&ccu RST_BUS_HDMI1>;
 			reset-names = "ctrl";
 			phys = <&hdmi_phy>;
-			phy-names = "hdmi-phy";
+			phy-names = "phy";
 			pinctrl-names = "default";
 			pinctrl-0 = <&hdmi_pins>;
 			status = "disabled";
@@ -981,7 +1120,7 @@ 
 			compatible = "allwinner,sun8i-a83t-r-ccu";
 			reg = <0x01f01400 0x400>;
 			clocks = <&osc24M>, <&osc16Md512>, <&osc16M>,
-				 <&ccu 6>;
+				 <&ccu CLK_PLL_PERIPH>;
 			clock-names = "hosc", "losc", "iosc", "pll-periph";
 			#clock-cells = <1>;
 			#reset-cells = <1>;
@@ -992,6 +1131,26 @@ 
 			reg = <0x1f01c00 0x400>;
 		};
 
+		r_cir: ir@1f02000 {
+			compatible = "allwinner,sun8i-a83t-ir",
+				"allwinner,sun6i-a31-ir";
+			clocks = <&r_ccu CLK_APB0_IR>, <&r_ccu CLK_IR>;
+			clock-names = "apb", "ir";
+			resets = <&r_ccu RST_APB0_IR>;
+			interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
+			reg = <0x01f02000 0x400>;
+			pinctrl-names = "default";
+			pinctrl-0 = <&r_cir_pin>;
+			status = "disabled";
+		};
+
+		r_lradc: lradc@1f03c00 {
+			compatible = "allwinner,sun8i-a83t-r-lradc";
+			reg = <0x01f03c00 0x100>;
+			interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
+			status = "disabled";
+		};
+
 		r_pio: pinctrl@1f02c00 {
 			compatible = "allwinner,sun8i-a83t-r-pinctrl";
 			reg = <0x01f02c00 0x400>;
@@ -1004,6 +1163,11 @@ 
 			interrupt-controller;
 			#interrupt-cells = <3>;
 
+			r_cir_pin: r-cir-pin {
+				pins = "PL12";
+				function = "s_cir_rx";
+			};
+
 			r_rsb_pins: r-rsb-pins {
 				pins = "PL0", "PL1";
 				function = "s_rsb";
@@ -1026,5 +1190,82 @@ 
 			#address-cells = <1>;
 			#size-cells = <0>;
 		};
+
+		ths: thermal-sensor@1f04000 {
+			compatible = "allwinner,sun8i-a83t-ths";
+			reg = <0x01f04000 0x100>;
+			interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
+			nvmem-cells = <&ths_calibration>;
+			nvmem-cell-names = "calibration";
+			#thermal-sensor-cells = <1>;
+		};
+	};
+
+	thermal-zones {
+		cpu0_thermal: cpu0-thermal {
+			polling-delay-passive = <0>;
+			polling-delay = <0>;
+			thermal-sensors = <&ths 0>;
+
+			trips {
+				cpu0_hot: cpu-hot {
+					temperature = <80000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+
+				cpu0_very_hot: cpu-very-hot {
+					temperature = <100000>;
+					hysteresis = <0>;
+					type = "critical";
+				};
+			};
+
+			cooling-maps {
+				cpu-hot-limit {
+					trip = <&cpu0_hot>;
+					cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+
+		cpu1_thermal: cpu1-thermal {
+			polling-delay-passive = <0>;
+			polling-delay = <0>;
+			thermal-sensors = <&ths 1>;
+
+			trips {
+				cpu1_hot: cpu-hot {
+					temperature = <80000>;
+					hysteresis = <2000>;
+					type = "passive";
+				};
+
+				cpu1_very_hot: cpu-very-hot {
+					temperature = <100000>;
+					hysteresis = <0>;
+					type = "critical";
+				};
+			};
+
+			cooling-maps {
+				cpu-hot-limit {
+					trip = <&cpu1_hot>;
+					cooling-device = <&cpu100 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu101 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu102 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
+							 <&cpu103 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+				};
+			};
+		};
+
+		gpu_thermal: gpu-thermal {
+			polling-delay-passive = <0>;
+			polling-delay = <0>;
+			thermal-sensors = <&ths 2>;
+		};
 	};
 };