On Wed, 27 Apr 2022 15:31:31 -0500
Samuel Holland <sam...@sholland.org> wrote:

> Copy the devicetree source for the H6 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 189bef235dd3 and 73088dfee635.
> 
> This commit also adds the following new board devicetrees:
>  - sun50i-h6-pine-h64-model-b.dts
>  - sun50i-h6-tanix-tx6-mini.dts
> 
> This update should not impact any existing U-Boot functionality.
> 
> Signed-off-by: Samuel Holland <sam...@sholland.org>

Compared against the Linux kernel, apart from the r_intc changes they are
the same.
The changes look innocent, and shouldn't affect U-Boot or Linux kernel
compatibility.

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

Cheers,
Andre


> ---
> 
>  arch/arm/dts/Makefile                       |   4 +-
>  arch/arm/dts/sun50i-h6-beelink-gs1.dts      |  38 ++--
>  arch/arm/dts/sun50i-h6-cpu-opp.dtsi         |   2 +-
>  arch/arm/dts/sun50i-h6-orangepi-3.dts       |  14 +-
>  arch/arm/dts/sun50i-h6-orangepi.dtsi        |  22 +--
>  arch/arm/dts/sun50i-h6-pine-h64-model-b.dts |  51 ++++++
>  arch/arm/dts/sun50i-h6-tanix-tx6-mini.dts   |  15 ++
>  arch/arm/dts/sun50i-h6-tanix-tx6.dts        | 115 ++----------
>  arch/arm/dts/sun50i-h6-tanix.dtsi           | 189 ++++++++++++++++++++
>  arch/arm/dts/sun50i-h6.dtsi                 |  26 ++-
>  10 files changed, 328 insertions(+), 148 deletions(-)
>  create mode 100644 arch/arm/dts/sun50i-h6-pine-h64-model-b.dts
>  create mode 100644 arch/arm/dts/sun50i-h6-tanix-tx6-mini.dts
>  create mode 100644 arch/arm/dts/sun50i-h6-tanix.dtsi
> 
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> index 95909ef037..85e731aec9 100644
> --- a/arch/arm/dts/Makefile
> +++ b/arch/arm/dts/Makefile
> @@ -695,7 +695,9 @@ dtb-$(CONFIG_MACH_SUN50I_H6) += \
>       sun50i-h6-orangepi-lite2.dtb \
>       sun50i-h6-orangepi-one-plus.dtb \
>       sun50i-h6-pine-h64.dtb \
> -     sun50i-h6-tanix-tx6.dtb
> +     sun50i-h6-pine-h64-model-b.dtb \
> +     sun50i-h6-tanix-tx6.dtb \
> +     sun50i-h6-tanix-tx6-mini.dtb
>  dtb-$(CONFIG_MACH_SUN50I_H616) += \
>       sun50i-h616-orangepi-zero2.dtb
>  dtb-$(CONFIG_MACH_SUN50I) += \
> diff --git a/arch/arm/dts/sun50i-h6-beelink-gs1.dts 
> b/arch/arm/dts/sun50i-h6-beelink-gs1.dts
> index b5808047d6..649b146dff 100644
> --- a/arch/arm/dts/sun50i-h6-beelink-gs1.dts
> +++ b/arch/arm/dts/sun50i-h6-beelink-gs1.dts
> @@ -150,12 +150,28 @@
>       vcc-pg-supply = <&reg_aldo1>;
>  };
>  
> -&r_i2c {
> +&r_ir {
> +     linux,rc-map-name = "rc-beelink-gs1";
> +     status = "okay";
> +};
> +
> +&r_pio {
> +     /*
> +      * FIXME: We can't add that supply for now since it would
> +      * create a circular dependency between pinctrl, the regulator
> +      * and the RSB Bus.
> +      *
> +      * vcc-pl-supply = <&reg_aldo1>;
> +      */
> +     vcc-pm-supply = <&reg_aldo1>;
> +};
> +
> +&r_rsb {
>       status = "okay";
>  
> -     axp805: pmic@36 {
> +     axp805: pmic@745 {
>               compatible = "x-powers,axp805", "x-powers,axp806";
> -             reg = <0x36>;
> +             reg = <0x745>;
>               interrupt-parent = <&r_intc>;
>               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
>               interrupt-controller;
> @@ -273,22 +289,6 @@
>       };
>  };
>  
> -&r_ir {
> -     linux,rc-map-name = "rc-beelink-gs1";
> -     status = "okay";
> -};
> -
> -&r_pio {
> -     /*
> -      * PL0 and PL1 are used for PMIC I2C
> -      * don't enable the pl-supply else
> -      * it will fail at boot
> -      *
> -      * vcc-pl-supply = <&reg_aldo1>;
> -      */
> -     vcc-pm-supply = <&reg_aldo1>;
> -};
> -
>  &spdif {
>       status = "okay";
>  };
> diff --git a/arch/arm/dts/sun50i-h6-cpu-opp.dtsi 
> b/arch/arm/dts/sun50i-h6-cpu-opp.dtsi
> index 8c6e8536b6..0baf0f8e4d 100644
> --- a/arch/arm/dts/sun50i-h6-cpu-opp.dtsi
> +++ b/arch/arm/dts/sun50i-h6-cpu-opp.dtsi
> @@ -3,7 +3,7 @@
>  // Copyright (C) 2020 Clément Péron <peron.c...@gmail.com>
>  
>  / {
> -     cpu_opp_table: cpu-opp-table {
> +     cpu_opp_table: opp-table-cpu {
>               compatible = "allwinner,sun50i-h6-operating-points";
>               nvmem-cells = <&cpu_speed_grade>;
>               opp-shared;
> diff --git a/arch/arm/dts/sun50i-h6-orangepi-3.dts 
> b/arch/arm/dts/sun50i-h6-orangepi-3.dts
> index 7e83f6146f..9f12c05e21 100644
> --- a/arch/arm/dts/sun50i-h6-orangepi-3.dts
> +++ b/arch/arm/dts/sun50i-h6-orangepi-3.dts
> @@ -175,12 +175,16 @@
>       vcc-pg-supply = <&reg_vcc_wifi_io>;
>  };
>  
> -&r_i2c {
> +&r_ir {
> +     status = "okay";
> +};
> +
> +&r_rsb {
>       status = "okay";
>  
> -     axp805: pmic@36 {
> +     axp805: pmic@745 {
>               compatible = "x-powers,axp805", "x-powers,axp806";
> -             reg = <0x36>;
> +             reg = <0x745>;
>               interrupt-parent = <&r_intc>;
>               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
>               interrupt-controller;
> @@ -291,10 +295,6 @@
>       };
>  };
>  
> -&r_ir {
> -     status = "okay";
> -};
> -
>  &rtc {
>       clocks = <&ext_osc32k>;
>  };
> diff --git a/arch/arm/dts/sun50i-h6-orangepi.dtsi 
> b/arch/arm/dts/sun50i-h6-orangepi.dtsi
> index da0875bd38..a5811d55bb 100644
> --- a/arch/arm/dts/sun50i-h6-orangepi.dtsi
> +++ b/arch/arm/dts/sun50i-h6-orangepi.dtsi
> @@ -112,12 +112,20 @@
>       vcc-pg-supply = <&reg_aldo1>;
>  };
>  
> -&r_i2c {
> +&r_ir {
> +     status = "okay";
> +};
> +
> +&r_pio {
> +     vcc-pm-supply = <&reg_bldo3>;
> +};
> +
> +&r_rsb {
>       status = "okay";
>  
> -     axp805: pmic@36 {
> +     axp805: pmic@745 {
>               compatible = "x-powers,axp805", "x-powers,axp806";
> -             reg = <0x36>;
> +             reg = <0x745>;
>               interrupt-parent = <&r_intc>;
>               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
>               interrupt-controller;
> @@ -232,14 +240,6 @@
>       };
>  };
>  
> -&r_ir {
> -     status = "okay";
> -};
> -
> -&r_pio {
> -     vcc-pm-supply = <&reg_bldo3>;
> -};
> -
>  &rtc {
>       clocks = <&ext_osc32k>;
>  };
> diff --git a/arch/arm/dts/sun50i-h6-pine-h64-model-b.dts 
> b/arch/arm/dts/sun50i-h6-pine-h64-model-b.dts
> new file mode 100644
> index 0000000000..686f58e770
> --- /dev/null
> +++ b/arch/arm/dts/sun50i-h6-pine-h64-model-b.dts
> @@ -0,0 +1,51 @@
> +// SPDX-License-Identifier: (GPL-2.0+ or MIT)
> +/*
> + * Copyright (C) 2019 Corentin LABBE <cla...@baylibre.com>
> + */
> +
> +#include "sun50i-h6-pine-h64.dts"
> +
> +/ {
> +     model = "Pine H64 model B";
> +     compatible = "pine64,pine-h64-model-b", "allwinner,sun50i-h6";
> +
> +     /delete-node/ reg_gmac_3v3;
> +
> +     wifi_pwrseq: wifi_pwrseq {
> +             compatible = "mmc-pwrseq-simple";
> +             reset-gpios = <&r_pio 1 3 GPIO_ACTIVE_LOW>; /* PM3 */
> +             post-power-on-delay-ms = <200>;
> +     };
> +};
> +
> +&hdmi_connector {
> +     /delete-property/ ddc-en-gpios;
> +};
> +
> +&emac {
> +     phy-supply = <&reg_aldo2>;
> +};
> +
> +&mmc1 {
> +     vmmc-supply = <&reg_cldo3>;
> +     vqmmc-supply = <&reg_aldo1>;
> +     mmc-pwrseq = <&wifi_pwrseq>;
> +     bus-width = <4>;
> +     non-removable;
> +     status = "okay";
> +};
> +
> +&uart1 {
> +     pinctrl-names = "default";
> +     pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
> +     uart-has-rtscts;
> +     status = "okay";
> +
> +     bluetooth {
> +             compatible = "realtek,rtl8723bs-bt";
> +             device-wake-gpios = <&r_pio 1 2 GPIO_ACTIVE_HIGH>; /* PM2 */
> +             host-wake-gpios = <&r_pio 1 1 GPIO_ACTIVE_HIGH>; /* PM1 */
> +             enable-gpios = <&r_pio 1 4 GPIO_ACTIVE_HIGH>; /* PM4 */
> +             max-speed = <1500000>;
> +     };
> +};
> diff --git a/arch/arm/dts/sun50i-h6-tanix-tx6-mini.dts 
> b/arch/arm/dts/sun50i-h6-tanix-tx6-mini.dts
> new file mode 100644
> index 0000000000..08d84160d8
> --- /dev/null
> +++ b/arch/arm/dts/sun50i-h6-tanix-tx6-mini.dts
> @@ -0,0 +1,15 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +// Copyright (c) 2021 Jernej Skrabec <jernej.skra...@gmail.com>
> +
> +/dts-v1/;
> +
> +#include "sun50i-h6-tanix.dtsi"
> +
> +/ {
> +     model = "Tanix TX6 mini";
> +     compatible = "oranth,tanix-tx6-mini", "allwinner,sun50i-h6";
> +};
> +
> +&r_ir {
> +     linux,rc-map-name = "rc-tanix-tx3mini";
> +};
> diff --git a/arch/arm/dts/sun50i-h6-tanix-tx6.dts 
> b/arch/arm/dts/sun50i-h6-tanix-tx6.dts
> index be81330db1..9a38ff9b3f 100644
> --- a/arch/arm/dts/sun50i-h6-tanix-tx6.dts
> +++ b/arch/arm/dts/sun50i-h6-tanix-tx6.dts
> @@ -3,122 +3,27 @@
>  
>  /dts-v1/;
>  
> -#include "sun50i-h6.dtsi"
> -#include "sun50i-h6-cpu-opp.dtsi"
> -
> -#include <dt-bindings/gpio/gpio.h>
> +#include "sun50i-h6-tanix.dtsi"
>  
>  / {
>       model = "Tanix TX6";
>       compatible = "oranth,tanix-tx6", "allwinner,sun50i-h6";
> -
> -     aliases {
> -             serial0 = &uart0;
> -     };
> -
> -     chosen {
> -             stdout-path = "serial0:115200n8";
> -     };
> -
> -     connector {
> -             compatible = "hdmi-connector";
> -             ddc-en-gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */
> -             type = "a";
> -
> -             port {
> -                     hdmi_con_in: endpoint {
> -                             remote-endpoint = <&hdmi_out_con>;
> -                     };
> -             };
> -     };
> -
> -     reg_vcc3v3: vcc3v3 {
> -             compatible = "regulator-fixed";
> -             regulator-name = "vcc3v3";
> -             regulator-min-microvolt = <3300000>;
> -             regulator-max-microvolt = <3300000>;
> -     };
> -
> -     reg_vdd_cpu_gpu: vdd-cpu-gpu {
> -             compatible = "regulator-fixed";
> -             regulator-name = "vdd-cpu-gpu";
> -             regulator-min-microvolt = <1135000>;
> -             regulator-max-microvolt = <1135000>;
> -     };
> -};
> -
> -&cpu0 {
> -     cpu-supply = <&reg_vdd_cpu_gpu>;
> -};
> -
> -&de {
> -     status = "okay";
> -};
> -
> -&dwc3 {
> -     status = "okay";
> -};
> -
> -&ehci0 {
> -     status = "okay";
> -};
> -
> -&ehci3 {
> -     status = "okay";
> -};
> -
> -&gpu {
> -     mali-supply = <&reg_vdd_cpu_gpu>;
> -     status = "okay";
> -};
> -
> -&hdmi {
> -     status = "okay";
> -};
> -
> -&hdmi_out {
> -     hdmi_out_con: endpoint {
> -             remote-endpoint = <&hdmi_con_in>;
> -     };
> -};
> -
> -&mmc0 {
> -     pinctrl-names = "default";
> -     pinctrl-0 = <&mmc0_pins>;
> -     vmmc-supply = <&reg_vcc3v3>;
> -     cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
> -     bus-width = <4>;
> -     status = "okay";
> -};
> -
> -&ohci0 {
> -     status = "okay";
> -};
> -
> -&ohci3 {
> -     status = "okay";
>  };
>  
>  &r_ir {
>       linux,rc-map-name = "rc-tanix-tx5max";
> -     status = "okay";
>  };
>  
> -&uart0 {
> +&uart1 {
>       pinctrl-names = "default";
> -     pinctrl-0 = <&uart0_ph_pins>;
> +     pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
> +     uart-has-rtscts;
>       status = "okay";
> -};
>  
> -&usb2otg {
> -     dr_mode = "host";
> -     status = "okay";
> -};
> -
> -&usb2phy {
> -     status = "okay";
> -};
> -
> -&usb3phy {
> -     status = "okay";
> +     bluetooth {
> +             compatible = "realtek,rtl8822cs-bt";
> +             device-wake-gpios = <&r_pio 1 2 GPIO_ACTIVE_HIGH>; /* PM2 */
> +             host-wake-gpios = <&r_pio 1 1 GPIO_ACTIVE_HIGH>; /* PM1 */
> +             enable-gpios = <&r_pio 1 4 GPIO_ACTIVE_HIGH>; /* PM4 */
> +     };
>  };
> diff --git a/arch/arm/dts/sun50i-h6-tanix.dtsi 
> b/arch/arm/dts/sun50i-h6-tanix.dtsi
> new file mode 100644
> index 0000000000..edb71e4a03
> --- /dev/null
> +++ b/arch/arm/dts/sun50i-h6-tanix.dtsi
> @@ -0,0 +1,189 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +// Copyright (c) 2019 Jernej Skrabec <jernej.skra...@siol.net>
> +
> +/dts-v1/;
> +
> +#include "sun50i-h6.dtsi"
> +#include "sun50i-h6-cpu-opp.dtsi"
> +
> +#include <dt-bindings/gpio/gpio.h>
> +
> +/ {
> +     aliases {
> +             serial0 = &uart0;
> +     };
> +
> +     chosen {
> +             stdout-path = "serial0:115200n8";
> +     };
> +
> +     connector {
> +             compatible = "hdmi-connector";
> +             ddc-en-gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */
> +             type = "a";
> +
> +             port {
> +                     hdmi_con_in: endpoint {
> +                             remote-endpoint = <&hdmi_out_con>;
> +                     };
> +             };
> +     };
> +
> +     /* used for FD650 LED display driver */
> +     i2c {
> +             compatible = "i2c-gpio";
> +             sda-gpios = <&pio 7 6 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; /* 
> PH6 */
> +             scl-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; /* 
> PH5 */
> +             i2c-gpio,delay-us = <5>;
> +     };
> +
> +     reg_vcc1v8: regulator-vcc1v8 {
> +             compatible = "regulator-fixed";
> +             regulator-name = "vcc1v8";
> +             regulator-min-microvolt = <1800000>;
> +             regulator-max-microvolt = <1800000>;
> +     };
> +
> +     reg_vcc3v3: regulator-vcc3v3 {
> +             compatible = "regulator-fixed";
> +             regulator-name = "vcc3v3";
> +             regulator-min-microvolt = <3300000>;
> +             regulator-max-microvolt = <3300000>;
> +     };
> +
> +     reg_vdd_cpu_gpu: regulator-vdd-cpu-gpu {
> +             compatible = "regulator-fixed";
> +             regulator-name = "vdd-cpu-gpu";
> +             regulator-min-microvolt = <1135000>;
> +             regulator-max-microvolt = <1135000>;
> +     };
> +
> +     sound-spdif {
> +             compatible = "simple-audio-card";
> +             simple-audio-card,name = "sun50i-h6-spdif";
> +
> +             simple-audio-card,cpu {
> +                     sound-dai = <&spdif>;
> +             };
> +
> +             simple-audio-card,codec {
> +                     sound-dai = <&spdif_out>;
> +             };
> +     };
> +
> +     spdif_out: spdif-out {
> +             #sound-dai-cells = <0>;
> +             compatible = "linux,spdif-dit";
> +     };
> +
> +     wifi_pwrseq: wifi-pwrseq {
> +             compatible = "mmc-pwrseq-simple";
> +             clocks = <&rtc 1>;
> +             clock-names = "ext_clock";
> +             reset-gpios = <&r_pio 1 3 GPIO_ACTIVE_LOW>; /* PM3 */
> +     };
> +};
> +
> +&cpu0 {
> +     cpu-supply = <&reg_vdd_cpu_gpu>;
> +};
> +
> +&de {
> +     status = "okay";
> +};
> +
> +&dwc3 {
> +     status = "okay";
> +};
> +
> +&ehci0 {
> +     status = "okay";
> +};
> +
> +&ehci3 {
> +     status = "okay";
> +};
> +
> +&gpu {
> +     mali-supply = <&reg_vdd_cpu_gpu>;
> +     status = "okay";
> +};
> +
> +&hdmi {
> +     status = "okay";
> +};
> +
> +&hdmi_out {
> +     hdmi_out_con: endpoint {
> +             remote-endpoint = <&hdmi_con_in>;
> +     };
> +};
> +
> +&mmc0 {
> +     pinctrl-names = "default";
> +     pinctrl-0 = <&mmc0_pins>;
> +     vmmc-supply = <&reg_vcc3v3>;
> +     cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
> +     bus-width = <4>;
> +     status = "okay";
> +};
> +
> +&mmc1 {
> +     vmmc-supply = <&reg_vcc3v3>;
> +     vqmmc-supply = <&reg_vcc1v8>;
> +     mmc-pwrseq = <&wifi_pwrseq>;
> +     bus-width = <4>;
> +     non-removable;
> +     status = "okay";
> +};
> +
> +&mmc2 {
> +     vmmc-supply = <&reg_vcc3v3>;
> +     vqmmc-supply = <&reg_vcc1v8>;
> +     bus-width = <8>;
> +     non-removable;
> +     cap-mmc-hw-reset;
> +     mmc-hs200-1_8v;
> +     status = "okay";
> +};
> +
> +&ohci0 {
> +     status = "okay";
> +};
> +
> +&ohci3 {
> +     status = "okay";
> +};
> +
> +&pio {
> +     vcc-pc-supply = <&reg_vcc1v8>;
> +     vcc-pd-supply = <&reg_vcc3v3>;
> +     vcc-pg-supply = <&reg_vcc1v8>;
> +};
> +
> +&r_ir {
> +     status = "okay";
> +};
> +
> +&spdif {
> +     status = "okay";
> +};
> +
> +&uart0 {
> +     pinctrl-names = "default";
> +     pinctrl-0 = <&uart0_ph_pins>;
> +     status = "okay";
> +};
> +
> +&usb2otg {
> +     dr_mode = "host";
> +     status = "okay";
> +};
> +
> +&usb2phy {
> +     status = "okay";
> +};
> +
> +&usb3phy {
> +     status = "okay";
> +};
> diff --git a/arch/arm/dts/sun50i-h6.dtsi b/arch/arm/dts/sun50i-h6.dtsi
> index af8b7d0ef7..71a45a624d 100644
> --- a/arch/arm/dts/sun50i-h6.dtsi
> +++ b/arch/arm/dts/sun50i-h6.dtsi
> @@ -119,10 +119,10 @@
>                       display_clocks: clock@0 {
>                               compatible = "allwinner,sun50i-h6-de3-clk";
>                               reg = <0x0 0x10000>;
> -                             clocks = <&ccu CLK_DE>,
> -                                      <&ccu CLK_BUS_DE>;
> -                             clock-names = "mod",
> -                                           "bus";
> +                             clocks = <&ccu CLK_BUS_DE>,
> +                                      <&ccu CLK_DE>;
> +                             clock-names = "bus",
> +                                           "mod";
>                               resets = <&ccu RST_BUS_DE>;
>                               #clock-cells = <1>;
>                               #reset-cells = <1>;
> @@ -153,6 +153,15 @@
>                       };
>               };
>  
> +             video-codec-g2@1c00000 {
> +                     compatible = "allwinner,sun50i-h6-vpu-g2";
> +                     reg = <0x01c00000 0x1000>;
> +                     interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
> +                     clocks = <&ccu CLK_BUS_VP9>, <&ccu CLK_VP9>;
> +                     clock-names = "bus", "mod";
> +                     resets = <&ccu RST_BUS_VP9>;
> +             };
> +
>               video-codec@1c0e000 {
>                       compatible = "allwinner,sun50i-h6-video-engine";
>                       reg = <0x01c0e000 0x2000>;
> @@ -271,6 +280,15 @@
>                       };
>               };
>  
> +             timer@3009000 {
> +                     compatible = "allwinner,sun50i-h6-timer",
> +                                  "allwinner,sun8i-a23-timer";
> +                     reg = <0x03009000 0xa0>;
> +                     interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>,
> +                                  <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>;
> +                     clocks = <&osc24M>;
> +             };
> +
>               watchdog: watchdog@30090a0 {
>                       compatible = "allwinner,sun50i-h6-wdt",
>                                    "allwinner,sun6i-a31-wdt";

Reply via email to