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

Andre Przywara
2022-05-20T15:35:30Z

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>;
> + };
> };
> };