[PATCH 04/12] ARM: dts: sun7i: Sync from Linux v5.18-rc1

Andre Przywara andre.przywara at arm.com
Fri May 6 02:39:40 CEST 2022


On Wed, 27 Apr 2022 15:31:23 -0500
Samuel Holland <samuel at sholland.org> wrote:

> Copy the devicetree source for the A20 SoC and all existing boards
> verbatim from the Linux v5.18-rc1 tag.
> 
> This commit also adds the following new board devicetrees:
>  - sun7i-a20-haoyu-marsboard.dts
>  - sun7i-a20-linutronix-testbox-v2.dts
>  - sun7i-a20-olinuxino-lime-emmc.dts
> 
> This update includes changes to the USB PHY detection GPIO properties
> which are needed to convert that driver to use the DM GPIO framework.

This looks alright: compared the files to the Linux tree, also skimmed
over the changes, they look harmless. Boot tested on BananaPi M1:
Ethernet and USB work.

There is one thing, though:
the move of the PHY child node into an MDIO subnode also affects the
U-Boot-only sun7i-a20-m5.dts. As this DT gets build with every A20
build, there is now a dtc warning with every A20 board:

===============
arch/arm/dts/sun7i-a20-m5.dtb: Warning (reg_format):
/soc/ethernet at 1c50000/ethernet-phy at 1:reg: property has invalid length
(4 bytes) (#address-cells == 2, #size-cells == 1)
arch/arm/dts/sun7i-a20-m5.dtb: Warning (avoid_default_addr_size):
/soc/ethernet at 1c50000/ethernet-phy at 1: Relying on default #address-cells
value arch/arm/dts/sun7i-a20-m5.dtb: Warning (avoid_default_addr_size):
/soc/ethernet at 1c50000/ethernet-phy at 1: Relying on default #size-cells
value ===============

Below simple patch fixes that and lets buildman pass (on the whole
series):

===============
diff --git a/arch/arm/dts/sun7i-a20-m5.dts
b/arch/arm/dts/sun7i-a20-m5.dts index 6de52c7c314..cfbc50d9e55 100644
--- a/arch/arm/dts/sun7i-a20-m5.dts
+++ b/arch/arm/dts/sun7i-a20-m5.dts
@@ -39,7 +39,9 @@
 	phy = <&phy1>;
 	phy-mode = "mii";
 	status = "okay";
+};
 
+&gmac_mdio {
 	phy1: ethernet-phy at 1 {
 		reg = <1>;
 	};
===============

In case there is nothing else, I will just apply this when merging.

With that fixed:

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

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

Cheers,
Andre

> ---
> 
>  arch/arm/dts/Makefile                         |   3 +
>  arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts   |  16 +-
>  arch/arm/dts/sun7i-a20-bananapi.dts           |  41 ++-
>  arch/arm/dts/sun7i-a20-bananapro.dts          |  16 +-
>  arch/arm/dts/sun7i-a20-cubieboard2.dts        |  28 +-
>  arch/arm/dts/sun7i-a20-cubietruck.dts         |  20 +-
>  arch/arm/dts/sun7i-a20-haoyu-marsboard.dts    | 182 +++++++++++++
>  arch/arm/dts/sun7i-a20-hummingbird.dts        |  21 +-
>  arch/arm/dts/sun7i-a20-i12-tvbox.dts          |  16 +-
>  arch/arm/dts/sun7i-a20-icnova-swac.dts        |  15 +-
>  arch/arm/dts/sun7i-a20-itead-ibox.dts         |   8 +-
>  arch/arm/dts/sun7i-a20-lamobo-r1.dts          |  16 +-
>  .../dts/sun7i-a20-linutronix-testbox-v2.dts   |  47 ++++
>  arch/arm/dts/sun7i-a20-m3.dts                 |  14 +-
>  arch/arm/dts/sun7i-a20-olimex-som-evb.dts     |  14 +-
>  arch/arm/dts/sun7i-a20-olimex-som204-evb.dts  |  30 ++-
>  .../arm/dts/sun7i-a20-olinuxino-lime-emmc.dts |  32 +++
>  arch/arm/dts/sun7i-a20-olinuxino-lime.dts     |  32 +--
>  arch/arm/dts/sun7i-a20-olinuxino-lime2.dts    |  46 ++--
>  arch/arm/dts/sun7i-a20-olinuxino-micro.dts    |  32 +--
>  arch/arm/dts/sun7i-a20-orangepi-mini.dts      |  28 +-
>  arch/arm/dts/sun7i-a20-orangepi.dts           |  26 +-
>  arch/arm/dts/sun7i-a20-pcduino3-nano.dts      |  32 +--
>  arch/arm/dts/sun7i-a20-pcduino3.dts           |  28 +-
>  arch/arm/dts/sun7i-a20-wexler-tab7200.dts     |  13 +-
>  arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts   |  24 +-
>  arch/arm/dts/sun7i-a20.dtsi                   | 254 ++++++++++++++++--
>  27 files changed, 707 insertions(+), 327 deletions(-)
>  create mode 100644 arch/arm/dts/sun7i-a20-haoyu-marsboard.dts
>  create mode 100644 arch/arm/dts/sun7i-a20-linutronix-testbox-v2.dts
>  create mode 100644 arch/arm/dts/sun7i-a20-olinuxino-lime-emmc.dts
> 
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> index 48ede8888e..7120d6a3aa 100644
> --- a/arch/arm/dts/Makefile
> +++ b/arch/arm/dts/Makefile
> @@ -583,11 +583,13 @@ dtb-$(CONFIG_MACH_SUN7I) += \
>  	sun7i-a20-bananapro.dtb \
>  	sun7i-a20-cubieboard2.dtb \
>  	sun7i-a20-cubietruck.dtb \
> +	sun7i-a20-haoyu-marsboard.dtb \
>  	sun7i-a20-hummingbird.dtb \
>  	sun7i-a20-i12-tvbox.dtb \
>  	sun7i-a20-icnova-swac.dtb \
>  	sun7i-a20-itead-ibox.dtb \
>  	sun7i-a20-lamobo-r1.dtb \
> +	sun7i-a20-linutronix-testbox-v2.dtb \
>  	sun7i-a20-m3.dtb \
>  	sun7i-a20-m5.dtb \
>  	sun7i-a20-mk808c.dtb \
> @@ -595,6 +597,7 @@ dtb-$(CONFIG_MACH_SUN7I) += \
>  	sun7i-a20-olimex-som204-evb.dtb \
>  	sun7i-a20-olimex-som204-evb-emmc.dtb \
>  	sun7i-a20-olinuxino-lime.dtb \
> +	sun7i-a20-olinuxino-lime-emmc.dtb \
>  	sun7i-a20-olinuxino-lime2.dtb \
>  	sun7i-a20-olinuxino-lime2-emmc.dtb \
>  	sun7i-a20-olinuxino-micro.dtb \
> diff --git a/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts b/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts
> index 4dbcad1343..caa935ca4f 100644
> --- a/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts
> +++ b/arch/arm/dts/sun7i-a20-bananapi-m1-plus.dts
> @@ -74,12 +74,12 @@
>  	leds {
>  		compatible = "gpio-leds";
>  
> -		green {
> +		led-0 {
>  			label = "bananapi-m1-plus:green:usr";
>  			gpios = <&pio 7 24 GPIO_ACTIVE_HIGH>;
>  		};
>  
> -		pwr {
> +		led-1 {
>  			label = "bananapi-m1-plus:pwr:usr";
>  			gpios = <&pio 7 25 GPIO_ACTIVE_HIGH>;
>  			default-state = "on";
> @@ -129,14 +129,10 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_rgmii_pins>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "rgmii-id";
>  	phy-supply = <&reg_gmac_3v3>;
>  	status = "okay";
> -
> -	phy1: ethernet-phy at 1 {
> -		reg = <1>;
> -	};
>  };
>  
>  &hdmi {
> @@ -171,6 +167,12 @@
>  	status = "okay";
>  };
>  
> +&gmac_mdio {
> +	phy1: ethernet-phy at 1 {
> +		reg = <1>;
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_vcc3v3>;
>  	bus-width = <4>;
> diff --git a/arch/arm/dts/sun7i-a20-bananapi.dts b/arch/arm/dts/sun7i-a20-bananapi.dts
> index 33040c43bc..46ecf9db23 100644
> --- a/arch/arm/dts/sun7i-a20-bananapi.dts
> +++ b/arch/arm/dts/sun7i-a20-bananapi.dts
> @@ -77,7 +77,7 @@
>  	leds {
>  		compatible = "gpio-leds";
>  
> -		green {
> +		led {
>  			label = "bananapi:green:usr";
>  			gpios = <&pio 7 24 GPIO_ACTIVE_HIGH>;
>  		};
> @@ -104,16 +104,15 @@
>  
>  &cpu0 {
>  	cpu-supply = <&reg_dcdc2>;
> -	operating-points = <
> +	operating-points =
>  		/* kHz	  uV */
> -		960000	1400000
> -		912000	1400000
> -		864000	1350000
> -		720000	1250000
> -		528000	1150000
> -		312000	1100000
> -		144000	1050000
> -		>;  
> +		<960000	1400000>,
> +		<912000	1400000>,
> +		<864000	1350000>,
> +		<720000	1250000>,
> +		<528000	1150000>,
> +		<312000	1100000>,
> +		<144000	1050000>;
>  };
>  
>  &de {
> @@ -131,14 +130,10 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_rgmii_pins>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "rgmii-id";
>  	phy-supply = <&reg_gmac_3v3>;
>  	status = "okay";
> -
> -	phy1: ethernet-phy at 1 {
> -		reg = <1>;
> -	};
>  };
>  
>  &hdmi {
> @@ -171,6 +166,12 @@
>  	status = "okay";
>  };
>  
> +&gmac_mdio {
> +	phy1: ethernet-phy at 1 {
> +		reg = <1>;
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_vcc3v3>;
>  	bus-width = <4>;
> @@ -246,12 +247,6 @@
>  			"SPI-MISO", "SPI-CE1", "",
>  		"IO-6", "IO-3", "IO-2", "IO-0", "", "", "", "",
>  		"", "", "", "", "", "", "", "";
> -
> -	usb0_id_detect_pin: usb0-id-detect-pin {
> -		pins = "PH4";
> -		function = "gpio_in";
> -		bias-pull-up;
> -	};
>  };
>  
>  #include "axp209.dtsi"
> @@ -329,9 +324,7 @@
>  };
>  
>  &usbphy {
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&usb0_id_detect_pin>;
> -	usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
> +	usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
>  	usb0_vbus_power-supply = <&usb_power_supply>;
>  	usb0_vbus-supply = <&reg_usb0_vbus>;
>  	usb1_vbus-supply = <&reg_usb1_vbus>;
> diff --git a/arch/arm/dts/sun7i-a20-bananapro.dts b/arch/arm/dts/sun7i-a20-bananapro.dts
> index 8a75545e22..e22f0e8bb1 100644
> --- a/arch/arm/dts/sun7i-a20-bananapro.dts
> +++ b/arch/arm/dts/sun7i-a20-bananapro.dts
> @@ -63,12 +63,12 @@
>  	leds {
>  		compatible = "gpio-leds";
>  
> -		blue {
> +		led-0 {
>  			label = "bananapro:blue:usr";
>  			gpios = <&pio 6 2 GPIO_ACTIVE_HIGH>;
>  		};
>  
> -		green {
> +		led-1 {
>  			label = "bananapro:green:usr";
>  			gpios = <&pio 7 24 GPIO_ACTIVE_HIGH>;
>  		};
> @@ -109,14 +109,10 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_rgmii_pins>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "rgmii-id";
>  	phy-supply = <&reg_gmac_3v3>;
>  	status = "okay";
> -
> -	phy1: ethernet-phy at 1 {
> -		reg = <1>;
> -	};
>  };
>  
>  &i2c0 {
> @@ -143,6 +139,12 @@
>  	status = "okay";
>  };
>  
> +&gmac_mdio {
> +	phy1: ethernet-phy at 1 {
> +		reg = <1>;
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_vcc3v3>;
>  	bus-width = <4>;
> diff --git a/arch/arm/dts/sun7i-a20-cubieboard2.dts b/arch/arm/dts/sun7i-a20-cubieboard2.dts
> index 200685b0b1..e35e6990c4 100644
> --- a/arch/arm/dts/sun7i-a20-cubieboard2.dts
> +++ b/arch/arm/dts/sun7i-a20-cubieboard2.dts
> @@ -75,12 +75,12 @@
>  	leds {
>  		compatible = "gpio-leds";
>  
> -		blue {
> +		led-0 {
>  			label = "cubieboard2:blue:usr";
>  			gpios = <&pio 7 21 GPIO_ACTIVE_HIGH>;
>  		};
>  
> -		green {
> +		led-1 {
>  			label = "cubieboard2:green:usr";
>  			gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>;
>  		};
> @@ -115,13 +115,9 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_mii_pins>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "mii";
>  	status = "okay";
> -
> -	phy1: ethernet-phy at 1 {
> -		reg = <1>;
> -	};
>  };
>  
>  &hdmi {
> @@ -161,6 +157,12 @@
>  	status = "okay";
>  };
>  
> +&gmac_mdio {
> +	phy1: ethernet-phy at 1 {
> +		reg = <1>;
> +	};
> +};
> +
>  &ohci0 {
>  	status = "okay";
>  };
> @@ -173,14 +175,6 @@
>  	status = "okay";
>  };
>  
> -&pio {
> -	usb0_id_detect_pin: usb0-id-detect-pin {
> -		pins = "PH4";
> -		function = "gpio_in";
> -		bias-pull-up;
> -	};
> -};
> -
>  &reg_ahci_5v {
>  	status = "okay";
>  };
> @@ -236,9 +230,7 @@
>  };
>  
>  &usbphy {
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&usb0_id_detect_pin>;
> -	usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
> +	usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
>  	usb1_vbus-supply = <&reg_usb1_vbus>;
>  	usb2_vbus-supply = <&reg_usb2_vbus>;
>  	status = "okay";
> diff --git a/arch/arm/dts/sun7i-a20-cubietruck.dts b/arch/arm/dts/sun7i-a20-cubietruck.dts
> index 46a9f4669e..52160e3683 100644
> --- a/arch/arm/dts/sun7i-a20-cubietruck.dts
> +++ b/arch/arm/dts/sun7i-a20-cubietruck.dts
> @@ -75,22 +75,22 @@
>  	leds {
>  		compatible = "gpio-leds";
>  
> -		blue {
> +		led-0 {
>  			label = "cubietruck:blue:usr";
>  			gpios = <&pio 7 21 GPIO_ACTIVE_HIGH>;
>  		};
>  
> -		orange {
> +		led-1 {
>  			label = "cubietruck:orange:usr";
>  			gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>;
>  		};
>  
> -		white {
> +		led-2 {
>  			label = "cubietruck:white:usr";
>  			gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>;
>  		};
>  
> -		green {
> +		led-3 {
>  			label = "cubietruck:green:usr";
>  			gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>;
>  		};
> @@ -150,13 +150,9 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_rgmii_pins>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "rgmii-id";
>  	status = "okay";
> -
> -	phy1: ethernet-phy at 1 {
> -		reg = <1>;
> -	};
>  };
>  
>  &hdmi {
> @@ -194,6 +190,12 @@
>  	status = "okay";
>  };
>  
> +&gmac_mdio {
> +	phy1: ethernet-phy at 1 {
> +		reg = <1>;
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_vcc3v3>;
>  	bus-width = <4>;
> diff --git a/arch/arm/dts/sun7i-a20-haoyu-marsboard.dts b/arch/arm/dts/sun7i-a20-haoyu-marsboard.dts
> new file mode 100644
> index 0000000000..097e479c27
> --- /dev/null
> +++ b/arch/arm/dts/sun7i-a20-haoyu-marsboard.dts
> @@ -0,0 +1,182 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright 2021 Conley Lee
> + * Conley Lee <conleylee at foxmail.com>
> + */
> +
> +/dts-v1/;
> +#include "sun7i-a20.dtsi"
> +#include "sunxi-common-regulators.dtsi"
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/interrupt-controller/irq.h>
> +
> +/ {
> +	model = "HAOYU Electronics Marsboard A20";
> +	compatible = "haoyu,a20-marsboard", "allwinner,sun7i-a20";
> +
> +	aliases {
> +		serial0 = &uart0;
> +	};
> +
> +	chosen {
> +		stdout-path = "serial0:115200n8";
> +	};
> +
> +	hdmi-connector {
> +		compatible = "hdmi-connector";
> +		type = "a";
> +
> +		port {
> +			hdmi_con_in: endpoint {
> +				remote-endpoint = <&hdmi_out_con>;
> +			};
> +		};
> +	};
> +};
> +
> +&ahci {
> +	target-supply = <&reg_ahci_5v>;
> +	status = "okay";
> +};
> +
> +&codec {
> +	status = "okay";
> +};
> +
> +&cpu0 {
> +	cpu-supply = <&reg_dcdc2>;
> +};
> +
> +&de {
> +	status = "okay";
> +};
> +
> +&ehci0 {
> +	status = "okay";
> +};
> +
> +&ehci1 {
> +	status = "okay";
> +};
> +
> +&gmac {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&gmac_mii_pins>, <&gmac_txerr>;
> +	phy-handle = <&phy0>;
> +	phy-mode = "mii";
> +	status = "okay";
> +};
> +
> +&hdmi {
> +	status = "okay";
> +};
> +
> +&hdmi_out {
> +	hdmi_out_con: endpoint {
> +		remote-endpoint = <&hdmi_con_in>;
> +	};
> +};
> +
> +&i2c0 {
> +	status = "okay";
> +
> +	axp209: pmic at 34 {
> +		reg = <0x34>;
> +		interrupt-parent = <&nmi_intc>;
> +		interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
> +	};
> +};
> +
> +&mmc0 {
> +	vmmc-supply = <&reg_vcc3v3>;
> +	bus-width = <4>;
> +	cd-gpios = <&pio 7 10 GPIO_ACTIVE_LOW>; /* PH10 */
> +	status = "okay";
> +};
> +
> +&gmac_mdio {
> +	phy0: ethernet-phy at 0 {
> +		reg = <0>;
> +	};
> +};
> +
> +&ohci0 {
> +	status = "okay";
> +};
> +
> +&ohci1 {
> +	status = "okay";
> +};
> +
> +&otg_sram {
> +	status = "okay";
> +};
> +
> +&pio {
> +	gmac_txerr: gmac-txerr-pin {
> +		pins = "PA17";
> +		function = "gmac";
> +	};
> +};
> +
> +&reg_ahci_5v {
> +	status = "okay";
> +};
> +
> +#include "axp209.dtsi"
> +
> +&ac_power_supply {
> +	status = "okay";
> +};
> +
> +&reg_dcdc2 {
> +	regulator-always-on;
> +	regulator-min-microvolt = <1000000>;
> +	regulator-max-microvolt = <1450000>;
> +	regulator-name = "vdd-cpu";
> +};
> +
> +&reg_dcdc3 {
> +	regulator-always-on;
> +	regulator-min-microvolt = <1000000>;
> +	regulator-max-microvolt = <1400000>;
> +	regulator-name = "vdd-int-dll";
> +};
> +
> +&reg_ldo1 {
> +	regulator-name = "vdd-rtc";
> +};
> +
> +&reg_ldo2 {
> +	regulator-always-on;
> +	regulator-min-microvolt = <3000000>;
> +	regulator-max-microvolt = <3000000>;
> +	regulator-name = "avcc";
> +};
> +
> +&reg_usb1_vbus {
> +	status = "okay";
> +};
> +
> +&reg_usb2_vbus {
> +	status = "okay";
> +};
> +
> +&uart0 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&uart0_pb_pins>;
> +	status = "okay";
> +};
> +
> +&usb_otg {
> +	dr_mode = "otg";
> +	status = "okay";
> +};
> +
> +&usbphy {
> +	usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
> +	usb1_vbus-supply = <&reg_usb1_vbus>;
> +	usb2_vbus-supply = <&reg_usb2_vbus>;
> +	status = "okay";
> +};
> diff --git a/arch/arm/dts/sun7i-a20-hummingbird.dts b/arch/arm/dts/sun7i-a20-hummingbird.dts
> index fd0153f656..3def2a3305 100644
> --- a/arch/arm/dts/sun7i-a20-hummingbird.dts
> +++ b/arch/arm/dts/sun7i-a20-hummingbird.dts
> @@ -100,19 +100,10 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_rgmii_pins>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "rgmii";
>  	phy-supply = <&reg_gmac_vdd>;
> -	/* phy reset config */
> -	snps,reset-gpio = <&pio 0 17 GPIO_ACTIVE_HIGH>; /* PA17 */
> -	snps,reset-active-low;
> -	/* wait 1s after reset, otherwise fail to read phy id */
> -	snps,reset-delays-us = <0 10000 1000000>;
>  	status = "okay";
> -
> -	phy1: ethernet-phy at 1 {
> -		reg = <1>;
> -	};
>  };
>  
>  &i2c0 {
> @@ -146,6 +137,16 @@
>  	status = "okay";
>  };
>  
> +&gmac_mdio {
> +	phy1: ethernet-phy at 1 {
> +		reg = <1>;
> +		reset-gpios = <&pio 0 17 GPIO_ACTIVE_LOW>; /* PA17 */
> +		reset-assert-us = <10000>;
> +		/* wait 1s after reset, otherwise fail to read phy id */
> +		reset-deassert-us = <1000000>;
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_vcc3v0>;
>  	bus-width = <4>;
> diff --git a/arch/arm/dts/sun7i-a20-i12-tvbox.dts b/arch/arm/dts/sun7i-a20-i12-tvbox.dts
> index 5f1c4f573d..b21ddd0ec1 100644
> --- a/arch/arm/dts/sun7i-a20-i12-tvbox.dts
> +++ b/arch/arm/dts/sun7i-a20-i12-tvbox.dts
> @@ -62,12 +62,12 @@
>  	leds {
>  		compatible = "gpio-leds";
>  
> -		red {
> +		led-0 {
>  			label = "i12_tvbox:red:usr";
>  			gpios = <&pio 7 9 GPIO_ACTIVE_LOW>;
>  		};
>  
> -		blue {
> +		led-1 {
>  			label = "i12_tvbox:blue:usr";
>  			gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>;
>  		};
> @@ -115,14 +115,10 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_mii_pins>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "mii";
>  	phy-supply = <&reg_gmac_3v3>;
>  	status = "okay";
> -
> -	phy1: ethernet-phy at 1 {
> -		reg = <1>;
> -	};
>  };
>  
>  &i2c0 {
> @@ -145,6 +141,12 @@
>  	status = "okay";
>  };
>  
> +&gmac_mdio {
> +	phy1: ethernet-phy at 1 {
> +		reg = <1>;
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_vcc3v3>;
>  	bus-width = <4>;
> diff --git a/arch/arm/dts/sun7i-a20-icnova-swac.dts b/arch/arm/dts/sun7i-a20-icnova-swac.dts
> index 949494730a..413505f45a 100644
> --- a/arch/arm/dts/sun7i-a20-icnova-swac.dts
> +++ b/arch/arm/dts/sun7i-a20-icnova-swac.dts
> @@ -49,7 +49,8 @@
>  
>  / {
>  	model = "ICnova-A20 SWAC";
> -	compatible = "swac,icnova-a20-swac", "incircuit,icnova-a20", "allwinner,sun7i-a20";
> +	compatible = "incircuit,icnova-a20-swac", "incircuit,icnova-a20",
> +		     "allwinner,sun7i-a20";
>  
>  	aliases {
>  		serial0 = &uart0;
> @@ -75,13 +76,9 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_mii_pins>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "mii";
>  	status = "okay";
> -
> -	phy1: ethernet-phy at 1 {
> -		reg = <1>;
> -	};
>  };
>  
>  &i2c0 {
> @@ -98,6 +95,12 @@
>  	status = "okay";
>  };
>  
> +&gmac_mdio {
> +	phy1: ethernet-phy at 1 {
> +		reg = <1>;
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_vcc3v3>;
>  	bus-width = <4>;
> diff --git a/arch/arm/dts/sun7i-a20-itead-ibox.dts b/arch/arm/dts/sun7i-a20-itead-ibox.dts
> index b90a7607d0..8ff83016ff 100644
> --- a/arch/arm/dts/sun7i-a20-itead-ibox.dts
> +++ b/arch/arm/dts/sun7i-a20-itead-ibox.dts
> @@ -53,13 +53,13 @@
>  		pinctrl-names = "default";
>  		pinctrl-0 = <&led_pins_itead_core>;
>  
> -		green {
> +		led-0 {
>  			label = "itead_core:green:usr";
>  			gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>;
>  			default-state = "on";
>  		};
>  
> -		blue {
> +		led-1 {
>  			label = "itead_core:blue:usr";
>  			gpios = <&pio 7 21 GPIO_ACTIVE_HIGH>;
>  			default-state = "on";
> @@ -97,10 +97,12 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_mii_pins>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "mii";
>  	status = "okay";
> +};
>  
> +&gmac_mdio {
>  	phy1: ethernet-phy at 1 {
>  		reg = <1>;
>  	};
> diff --git a/arch/arm/dts/sun7i-a20-lamobo-r1.dts b/arch/arm/dts/sun7i-a20-lamobo-r1.dts
> index f91e1bee44..97518afe46 100644
> --- a/arch/arm/dts/sun7i-a20-lamobo-r1.dts
> +++ b/arch/arm/dts/sun7i-a20-lamobo-r1.dts
> @@ -75,7 +75,7 @@
>  	leds {
>  		compatible = "gpio-leds";
>  
> -		green {
> +		led {
>  			label = "lamobo_r1:green:usr";
>  			gpios = <&pio 7 24 GPIO_ACTIVE_HIGH>;
>  		};
> @@ -123,8 +123,6 @@
>  	phy-mode = "rgmii";
>  	phy-supply = <&reg_gmac_3v3>;
>  	status = "okay";
> -	/delete-property/#address-cells;
> -	/delete-property/#size-cells;
>  
>  	fixed-link {
>  		speed = <1000>;
> @@ -229,14 +227,6 @@
>  	status = "okay";
>  };
>  
> -&pio {
> -	usb0_id_detect_pin: usb0-id-detect-pin {
> -		pins = "PH4";
> -		function = "gpio_in";
> -		bias-pull-up;
> -	};
> -};
> -
>  #include "axp209.dtsi"
>  
>  &ac_power_supply {
> @@ -322,9 +312,7 @@
>  };
>  
>  &usbphy {
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&usb0_id_detect_pin>;
> -	usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
> +	usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
>  	usb0_vbus_power-supply = <&usb_power_supply>;
>  	usb0_vbus-supply = <&reg_usb0_vbus>;
>  	usb2_vbus-supply = <&reg_usb2_vbus>;
> diff --git a/arch/arm/dts/sun7i-a20-linutronix-testbox-v2.dts b/arch/arm/dts/sun7i-a20-linutronix-testbox-v2.dts
> new file mode 100644
> index 0000000000..da5a2eea4c
> --- /dev/null
> +++ b/arch/arm/dts/sun7i-a20-linutronix-testbox-v2.dts
> @@ -0,0 +1,47 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright 2020 Linutronix GmbH
> + * Author: Benedikt Spranger <b.spranger at linutronix.de>
> + */
> +
> +/dts-v1/;
> +#include "sun7i-a20-lamobo-r1.dts"
> +
> +/ {
> +	model = "Lamobo R1";
> +	compatible = "linutronix,testbox-v2", "lamobo,lamobo-r1", "allwinner,sun7i-a20";
> +
> +	leds {
> +		led-opto1 {
> +			label = "lamobo_r1:opto:powerswitch";
> +			gpios = <&pio 7 3 GPIO_ACTIVE_HIGH>;
> +		};
> +
> +		led-opto2 {
> +			label = "lamobo_r1:opto:relay";
> +			gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>;
> +		};
> +	};
> +};
> +
> +&i2c2 {
> +	clock-frequency = <100000>;
> +	status = "okay";
> +
> +	eeprom: eeprom at 50 {
> +		compatible = "atmel,24c08";
> +		reg = <0x50>;
> +		status = "okay";
> +	};
> +
> +	atecc508a at 60 {
> +		compatible = "atmel,atecc508a";
> +		reg = <0x60>;
> +	};
> +};
> +
> +&can0 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&can_ph_pins>;
> +	status = "okay";
> +};
> diff --git a/arch/arm/dts/sun7i-a20-m3.dts b/arch/arm/dts/sun7i-a20-m3.dts
> index b8a1aaaf39..f161d52388 100644
> --- a/arch/arm/dts/sun7i-a20-m3.dts
> +++ b/arch/arm/dts/sun7i-a20-m3.dts
> @@ -64,7 +64,7 @@
>  	leds {
>  		compatible = "gpio-leds";
>  
> -		blue {
> +		led {
>  			label = "m3:blue:usr";
>  			gpios = <&pio 7 20 GPIO_ACTIVE_HIGH>;
>  		};
> @@ -82,13 +82,9 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_mii_pins>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "mii";
>  	status = "okay";
> -
> -	phy1: ethernet-phy at 1 {
> -		reg = <1>;
> -	};
>  };
>  
>  &i2c0 {
> @@ -111,6 +107,12 @@
>  	status = "okay";
>  };
>  
> +&gmac_mdio {
> +	phy1: ethernet-phy at 1 {
> +		reg = <1>;
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_vcc3v3>;
>  	bus-width = <4>;
> diff --git a/arch/arm/dts/sun7i-a20-olimex-som-evb.dts b/arch/arm/dts/sun7i-a20-olimex-som-evb.dts
> index f0e6a96e57..f05ee32bc9 100644
> --- a/arch/arm/dts/sun7i-a20-olimex-som-evb.dts
> +++ b/arch/arm/dts/sun7i-a20-olimex-som-evb.dts
> @@ -75,7 +75,7 @@
>  	leds {
>  		compatible = "gpio-leds";
>  
> -		green {
> +		led {
>  			label = "a20-olimex-som-evb:green:usr";
>  			gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>;
>  			default-state = "on";
> @@ -111,13 +111,9 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_rgmii_pins>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "rgmii";
>  	status = "okay";
> -
> -	phy1: ethernet-phy at 1 {
> -		reg = <1>;
> -	};
>  };
>  
>  &hdmi {
> @@ -202,6 +198,12 @@
>  	};
>  };
>  
> +&gmac_mdio {
> +	phy1: ethernet-phy at 1 {
> +		reg = <1>;
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_vcc3v3>;
>  	bus-width = <4>;
> diff --git a/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts b/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts
> index 823aabce04..54af6c1807 100644
> --- a/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts
> +++ b/arch/arm/dts/sun7i-a20-olimex-som204-evb.dts
> @@ -46,19 +46,19 @@
>  	leds {
>  		compatible = "gpio-leds";
>  
> -		stat {
> +		led-0 {
>  			label = "a20-som204-evb:green:stat";
>  			gpios = <&pio 8 0 GPIO_ACTIVE_HIGH>;
>  			default-state = "on";
>  		};
>  
> -		led1 {
> +		led-1 {
>  			label = "a20-som204-evb:green:led1";
>  			gpios = <&pio 8 10 GPIO_ACTIVE_HIGH>;
>  			default-state = "on";
>  		};
>  
> -		led2 {
> +		led-2 {
>  			label = "a20-som204-evb:yellow:led2";
>  			gpios = <&pio 8 11 GPIO_ACTIVE_HIGH>;
>  			default-state = "on";
> @@ -105,18 +105,10 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_rgmii_pins>;
> -	phy = <&phy3>;
> +	phy-handle = <&phy3>;
>  	phy-mode = "rgmii";
>  	phy-supply = <&reg_vcc3v3>;
> -
> -	snps,reset-gpio = <&pio 0 17 GPIO_ACTIVE_HIGH>;
> -	snps,reset-active-low;
> -	snps,reset-delays-us = <0 10000 1000000>;
>  	status = "okay";
> -
> -	phy3: ethernet-phy at 3 {
> -		reg = <3>;
> -	};
>  };
>  
>  &hdmi {
> @@ -161,6 +153,16 @@
>  	status = "okay";
>  };
>  
> +&gmac_mdio {
> +	phy3: ethernet-phy at 3 {
> +		reg = <3>;
> +		reset-gpios = <&pio 0 17 GPIO_ACTIVE_LOW>; /* PA17 */
> +		reset-assert-us = <10000>;
> +		/* wait 1s after reset, otherwise fail to read phy id */
> +		reset-deassert-us = <1000000>;
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_vcc3v3>;
>  	bus-width = <4>;
> @@ -314,8 +316,8 @@
>  };
>  
>  &usbphy {
> -	usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
> -	usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
> +	usb0_id_det-gpios = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
> +	usb0_vbus_det-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
>  	usb0_vbus_power-supply = <&usb_power_supply>;
>  	usb0_vbus-supply = <&reg_usb0_vbus>;
>  	usb1_vbus-supply = <&reg_usb1_vbus>;
> diff --git a/arch/arm/dts/sun7i-a20-olinuxino-lime-emmc.dts b/arch/arm/dts/sun7i-a20-olinuxino-lime-emmc.dts
> new file mode 100644
> index 0000000000..033cab3443
> --- /dev/null
> +++ b/arch/arm/dts/sun7i-a20-olinuxino-lime-emmc.dts
> @@ -0,0 +1,32 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (C) 2020 Olimex Ltd.
> + *   Author: Stefan Mavrodiev <stefan at olimex.com>
> + */
> +
> +#include "sun7i-a20-olinuxino-lime.dts"
> +
> +/ {
> +	model = "Olimex A20-OLinuXino-LIME-eMMC";
> +	compatible = "olimex,a20-olinuxino-lime-emmc", "allwinner,sun7i-a20";
> +
> +	mmc2_pwrseq: pwrseq {
> +		compatible = "mmc-pwrseq-emmc";
> +		reset-gpios = <&pio 2 16 GPIO_ACTIVE_LOW>;
> +	};
> +};
> +
> +&mmc2 {
> +	vmmc-supply = <&reg_vcc3v3>;
> +	vqmmc-supply = <&reg_vcc3v3>;
> +	bus-width = <4>;
> +	non-removable;
> +	mmc-pwrseq = <&mmc2_pwrseq>;
> +	status = "okay";
> +
> +	emmc: emmc at 0 {
> +		reg = <0>;
> +		compatible = "mmc-card";
> +		broken-hpi;
> +	};
> +};
> diff --git a/arch/arm/dts/sun7i-a20-olinuxino-lime.dts b/arch/arm/dts/sun7i-a20-olinuxino-lime.dts
> index 5e411194bf..92938d0222 100644
> --- a/arch/arm/dts/sun7i-a20-olinuxino-lime.dts
> +++ b/arch/arm/dts/sun7i-a20-olinuxino-lime.dts
> @@ -78,7 +78,7 @@
>  		pinctrl-names = "default";
>  		pinctrl-0 = <&led_pins_olinuxinolime>;
>  
> -		green {
> +		led {
>  			label = "a20-olinuxino-lime:green:usr";
>  			gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>;
>  			default-state = "on";
> @@ -106,13 +106,9 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_mii_pins>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "mii";
>  	status = "okay";
> -
> -	phy1: ethernet-phy at 1 {
> -		reg = <1>;
> -	};
>  };
>  
>  &hdmi {
> @@ -149,6 +145,12 @@
>  	};
>  };
>  
> +&gmac_mdio {
> +	phy1: ethernet-phy at 1 {
> +		reg = <1>;
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_vcc3v3>;
>  	bus-width = <4>;
> @@ -174,18 +176,6 @@
>  		function = "gpio_out";
>  		drive-strength = <20>;
>  	};
> -
> -	usb0_id_detect_pin: usb0-id-detect-pin {
> -		pins = "PH4";
> -		function = "gpio_in";
> -		bias-pull-up;
> -	};
> -
> -	usb0_vbus_detect_pin: usb0-vbus-detect-pin {
> -		pins = "PH5";
> -		function = "gpio_in";
> -		bias-pull-down;
> -	};
>  };
>  
>  &reg_ahci_5v {
> @@ -217,10 +207,8 @@
>  };
>  
>  &usbphy {
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
> -	usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
> -	usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
> +	usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
> +	usb0_vbus_det-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; /* PH5 */
>  	usb0_vbus-supply = <&reg_usb0_vbus>;
>  	usb1_vbus-supply = <&reg_usb1_vbus>;
>  	usb2_vbus-supply = <&reg_usb2_vbus>;
> diff --git a/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts b/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts
> index 996201665b..ecb91fb899 100644
> --- a/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts
> +++ b/arch/arm/dts/sun7i-a20-olinuxino-lime2.dts
> @@ -75,7 +75,7 @@
>  		pinctrl-names = "default";
>  		pinctrl-0 = <&led_pins_olinuxinolime>;
>  
> -		green {
> +		led {
>  			label = "a20-olinuxino-lime2:green:usr";
>  			gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>;
>  			default-state = "on";
> @@ -111,13 +111,9 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_rgmii_pins>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "rgmii-id";
>  	status = "okay";
> -
> -	phy1: ethernet-phy at 1 {
> -		reg = <1>;
> -	};
>  };
>  
>  &hdmi {
> @@ -154,6 +150,12 @@
>  	vref-supply = <&reg_vcc3v0>;
>  };
>  
> +&gmac_mdio {
> +	phy1: ethernet-phy at 1 {
> +		reg = <1>;
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_vcc3v3>;
>  	bus-width = <4>;
> @@ -174,23 +176,17 @@
>  };
>  
>  &pio {
> +	vcc-pa-supply = <&reg_vcc3v3>;
> +	vcc-pc-supply = <&reg_vcc3v3>;
> +	vcc-pe-supply = <&reg_ldo3>;
> +	vcc-pf-supply = <&reg_vcc3v3>;
> +	vcc-pg-supply = <&reg_ldo4>;
> +
>  	led_pins_olinuxinolime: led-pins {
>  		pins = "PH2";
>  		function = "gpio_out";
>  		drive-strength = <20>;
>  	};
> -
> -	usb0_id_detect_pin: usb0-id-detect-pin {
> -		pins = "PH4";
> -		function = "gpio_in";
> -		bias-pull-up;
> -	};
> -
> -	usb0_vbus_detect_pin: usb0-vbus-detect-pin {
> -		pins = "PH5";
> -		function = "gpio_in";
> -		bias-pull-down;
> -	};
>  };
>  
>  &reg_ahci_5v {
> @@ -200,6 +196,14 @@
>  
>  #include "axp209.dtsi"
>  
> +&ac_power_supply {
> +	status = "okay";
> +};
> +
> +&battery_power_supply {
> +	status = "okay";
> +};
> +
>  &reg_dcdc2 {
>  	regulator-always-on;
>  	regulator-min-microvolt = <1000000>;
> @@ -267,10 +271,8 @@
>  };
>  
>  &usbphy {
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
> -	usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
> -	usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
> +	usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
> +	usb0_vbus_det-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; /* PH5 */
>  	usb0_vbus-supply = <&reg_usb0_vbus>;
>  	usb1_vbus-supply = <&reg_usb1_vbus>;
>  	usb2_vbus-supply = <&reg_usb2_vbus>;
> diff --git a/arch/arm/dts/sun7i-a20-olinuxino-micro.dts b/arch/arm/dts/sun7i-a20-olinuxino-micro.dts
> index 840ae1194a..a1b89b2a29 100644
> --- a/arch/arm/dts/sun7i-a20-olinuxino-micro.dts
> +++ b/arch/arm/dts/sun7i-a20-olinuxino-micro.dts
> @@ -82,7 +82,7 @@
>  		pinctrl-names = "default";
>  		pinctrl-0 = <&led_pins_olinuxino>;
>  
> -		green {
> +		led {
>  			label = "a20-olinuxino-micro:green:usr";
>  			gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>;
>  			default-state = "on";
> @@ -118,13 +118,9 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_mii_pins>, <&gmac_txerr>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "mii";
>  	status = "okay";
> -
> -	phy1: ethernet-phy at 1 {
> -		reg = <1>;
> -	};
>  };
>  
>  &hdmi {
> @@ -215,6 +211,12 @@
>  	};
>  };
>  
> +&gmac_mdio {
> +	phy1: ethernet-phy at 1 {
> +		reg = <1>;
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_vcc3v3>;
>  	bus-width = <4>;
> @@ -252,18 +254,6 @@
>  		function = "gpio_out";
>  		drive-strength = <20>;
>  	};
> -
> -	usb0_id_detect_pin: usb0-id-detect-pin {
> -		pins = "PH4";
> -		function = "gpio_in";
> -		bias-pull-up;
> -	};
> -
> -	usb0_vbus_detect_pin: usb0-vbus-detect-pin {
> -		pins = "PH5";
> -		function = "gpio_in";
> -		bias-pull-down;
> -	};
>  };
>  
>  #include "axp209.dtsi"
> @@ -355,10 +345,8 @@
>  };
>  
>  &usbphy {
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
> -	usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
> -	usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
> +	usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
> +	usb0_vbus_det-gpios = <&pio 7 5 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>; /* PH5 */
>  	usb0_vbus-supply = <&reg_usb0_vbus>;
>  	usb1_vbus-supply = <&reg_usb1_vbus>;
>  	usb2_vbus-supply = <&reg_usb2_vbus>;
> diff --git a/arch/arm/dts/sun7i-a20-orangepi-mini.dts b/arch/arm/dts/sun7i-a20-orangepi-mini.dts
> index 15881081ca..84efa01e7c 100644
> --- a/arch/arm/dts/sun7i-a20-orangepi-mini.dts
> +++ b/arch/arm/dts/sun7i-a20-orangepi-mini.dts
> @@ -75,12 +75,12 @@
>  	leds {
>  		compatible = "gpio-leds";
>  
> -		green {
> +		led-0 {
>  			label = "orangepi:green:usr";
>  			gpios = <&pio 7 24 GPIO_ACTIVE_HIGH>; /* PH24 */
>  		};
>  
> -		blue {
> +		led-1 {
>  			label = "orangepi:blue:usr";
>  			gpios = <&pio 7 25 GPIO_ACTIVE_HIGH>; /* PH25 */
>  		};
> @@ -120,14 +120,10 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_rgmii_pins>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "rgmii";
>  	phy-supply = <&reg_gmac_3v3>;
>  	status = "okay";
> -
> -	phy1: ethernet-phy at 1 {
> -		reg = <1>;
> -	};
>  };
>  
>  &hdmi {
> @@ -158,6 +154,12 @@
>  	status = "okay";
>  };
>  
> +&gmac_mdio {
> +	phy1: ethernet-phy at 1 {
> +		reg = <1>;
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_vcc3v3>;
>  	bus-width = <4>;
> @@ -176,14 +178,6 @@
>  	status = "okay";
>  };
>  
> -&pio {
> -	usb0_id_detect_pin: usb0-id-detect-pin {
> -		pins = "PH4";
> -		function = "gpio_in";
> -		bias-pull-up;
> -	};
> -};
> -
>  &reg_dcdc2 {
>  	regulator-always-on;
>  	regulator-min-microvolt = <1000000>;
> @@ -239,9 +233,7 @@
>  };
>  
>  &usbphy {
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&usb0_id_detect_pin>;
> -	usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
> +	usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
>  	usb0_vbus_power-supply = <&usb_power_supply>;
>  	usb0_vbus-supply = <&reg_usb0_vbus>;
>  	usb1_vbus-supply = <&reg_usb1_vbus>;
> diff --git a/arch/arm/dts/sun7i-a20-orangepi.dts b/arch/arm/dts/sun7i-a20-orangepi.dts
> index d64de2e73a..5d77f1d981 100644
> --- a/arch/arm/dts/sun7i-a20-orangepi.dts
> +++ b/arch/arm/dts/sun7i-a20-orangepi.dts
> @@ -64,7 +64,7 @@
>  	leds {
>  		compatible = "gpio-leds";
>  
> -		green {
> +		led {
>  			label = "orangepi:green:usr";
>  			gpios = <&pio 7 24 GPIO_ACTIVE_HIGH>; /* PH24 */
>  		};
> @@ -96,14 +96,10 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_rgmii_pins>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "rgmii";
>  	phy-supply = <&reg_gmac_3v3>;
>  	status = "okay";
> -
> -	phy1: ethernet-phy at 1 {
> -		reg = <1>;
> -	};
>  };
>  
>  &i2c0 {
> @@ -124,6 +120,12 @@
>  	status = "okay";
>  };
>  
> +&gmac_mdio {
> +	phy1: ethernet-phy at 1 {
> +		reg = <1>;
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_vcc3v3>;
>  	bus-width = <4>;
> @@ -135,14 +137,6 @@
>  	status = "okay";
>  };
>  
> -&pio {
> -	usb0_id_detect_pin: usb0-id-detect-pin {
> -		pins = "PH4";
> -		function = "gpio_in";
> -		bias-pull-up;
> -	};
> -};
> -
>  &reg_dcdc2 {
>  	regulator-always-on;
>  	regulator-min-microvolt = <1000000>;
> @@ -198,9 +192,7 @@
>  };
>  
>  &usbphy {
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&usb0_id_detect_pin>;
> -	usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
> +	usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
>  	usb0_vbus_power-supply = <&usb_power_supply>;
>  	usb0_vbus-supply = <&reg_usb0_vbus>;
>  	usb1_vbus-supply = <&reg_usb1_vbus>;
> diff --git a/arch/arm/dts/sun7i-a20-pcduino3-nano.dts b/arch/arm/dts/sun7i-a20-pcduino3-nano.dts
> index 205eaae44a..e40ecb48d7 100644
> --- a/arch/arm/dts/sun7i-a20-pcduino3-nano.dts
> +++ b/arch/arm/dts/sun7i-a20-pcduino3-nano.dts
> @@ -1,5 +1,5 @@
>  /*
> - * Copyright 2015 Adam Sampson <ats at offog.org>
> + * Copyright 2015-2020 Adam Sampson <ats at offog.org>
>   *
>   * This file is dual-licensed: you can use it either under the terms
>   * of the GPL or the X11 license, at your option. Note that this dual
> @@ -72,14 +72,12 @@
>  	leds {
>  		compatible = "gpio-leds";
>  
> -		/* Marked "LED3" on the PCB. */
> -		usr1 {
> +		led-3 {
>  			label = "pcduino3-nano:green:usr1";
>  			gpios = <&pio 7 16 GPIO_ACTIVE_LOW>; /* PH16 */
>  		};
>  
> -		/* Marked "LED4" on the PCB. */
> -		usr2 {
> +		led-4 {
>  			label = "pcduino3-nano:green:usr2";
>  			gpios = <&pio 7 15 GPIO_ACTIVE_LOW>; /* PH15 */
>  		};
> @@ -114,13 +112,9 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_rgmii_pins>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "rgmii-id";
>  	status = "okay";
> -
> -	phy1: ethernet-phy at 1 {
> -		reg = <1>;
> -	};
>  };
>  
>  &hdmi {
> @@ -149,6 +143,12 @@
>  	status = "okay";
>  };
>  
> +&gmac_mdio {
> +	phy1: ethernet-phy at 1 {
> +		reg = <1>;
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_vcc3v3>;
>  	bus-width = <4>;
> @@ -168,14 +168,6 @@
>  	status = "okay";
>  };
>  
> -&pio {
> -	usb0_id_detect_pin: usb0-id-detect-pin {
> -		pins = "PH4";
> -		function = "gpio_in";
> -		bias-pull-up;
> -	};
> -};
> -
>  &reg_ahci_5v {
>  	gpio = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */
>  	status = "okay";
> @@ -226,9 +218,7 @@
>  };
>  
>  &usbphy {
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&usb0_id_detect_pin>;
> -	usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
> +	usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
>  	usb1_vbus-supply = <&reg_usb1_vbus>;
>  	usb2_vbus-supply = <&reg_usb1_vbus>;
>  	status = "okay";
> diff --git a/arch/arm/dts/sun7i-a20-pcduino3.dts b/arch/arm/dts/sun7i-a20-pcduino3.dts
> index a72ed4318d..4f8d55d3ba 100644
> --- a/arch/arm/dts/sun7i-a20-pcduino3.dts
> +++ b/arch/arm/dts/sun7i-a20-pcduino3.dts
> @@ -64,12 +64,12 @@
>  	leds {
>  		compatible = "gpio-leds";
>  
> -		tx {
> +		led-0 {
>  			label = "pcduino3:green:tx";
>  			gpios = <&pio 7 15 GPIO_ACTIVE_LOW>;
>  		};
>  
> -		rx {
> +		led-1 {
>  			label = "pcduino3:green:rx";
>  			gpios = <&pio 7 16 GPIO_ACTIVE_LOW>;
>  		};
> @@ -122,13 +122,9 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_mii_pins>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "mii";
>  	status = "okay";
> -
> -	phy1: ethernet-phy at 1 {
> -		reg = <1>;
> -	};
>  };
>  
>  &i2c0 {
> @@ -149,6 +145,12 @@
>  	status = "okay";
>  };
>  
> +&gmac_mdio {
> +	phy1: ethernet-phy at 1 {
> +		reg = <1>;
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_vcc3v3>;
>  	bus-width = <4>;
> @@ -168,14 +170,6 @@
>  	status = "okay";
>  };
>  
> -&pio {
> -	usb0_id_detect_pin: usb0-id-detect-pin {
> -		pins = "PH4";
> -		function = "gpio_in";
> -		bias-pull-up;
> -	};
> -};
> -
>  &reg_ahci_5v {
>  	gpio = <&pio 7 2 GPIO_ACTIVE_HIGH>;
>  	status = "okay";
> @@ -226,9 +220,7 @@
>  };
>  
>  &usbphy {
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&usb0_id_detect_pin>;
> -	usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
> +	usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
>  	usb1_vbus-supply = <&reg_usb1_vbus>;
>  	usb2_vbus-supply = <&reg_usb2_vbus>;
>  	status = "okay";
> diff --git a/arch/arm/dts/sun7i-a20-wexler-tab7200.dts b/arch/arm/dts/sun7i-a20-wexler-tab7200.dts
> index ffade253d1..fef02fcbbd 100644
> --- a/arch/arm/dts/sun7i-a20-wexler-tab7200.dts
> +++ b/arch/arm/dts/sun7i-a20-wexler-tab7200.dts
> @@ -64,6 +64,7 @@
>  		brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
>  		default-brightness-level = <8>;
>  		enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */
> +		power-supply = <&reg_vcc3v3>;
>  	};
>  
>  	chosen {
> @@ -156,14 +157,6 @@
>  	status = "okay";
>  };
>  
> -&pio {
> -	usb0_id_detect_pin: usb0-id-detect-pin {
> -		pins = "PH4";
> -		function = "gpio_in";
> -		bias-pull-up;
> -	};
> -};
> -
>  &pwm {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&pwm0_pin>;
> @@ -223,9 +216,7 @@
>  };
>  
>  &usbphy {
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&usb0_id_detect_pin>;
> -	usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
> +	usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
>  	usb0_vbus_power-supply = <&usb_power_supply>;
>  	usb0_vbus-supply = <&reg_usb0_vbus>;
>  	usb1_vbus-supply = <&reg_usb1_vbus>;
> diff --git a/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts b/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts
> index c27e56091f..3bfae98f3c 100644
> --- a/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts
> +++ b/arch/arm/dts/sun7i-a20-wits-pro-a20-dkt.dts
> @@ -81,13 +81,9 @@
>  &gmac {
>  	pinctrl-names = "default";
>  	pinctrl-0 = <&gmac_rgmii_pins>;
> -	phy = <&phy1>;
> +	phy-handle = <&phy1>;
>  	phy-mode = "rgmii";
>  	status = "okay";
> -
> -	phy1: ethernet-phy at 1 {
> -		reg = <1>;
> -	};
>  };
>  
>  &i2c0 {
> @@ -110,6 +106,12 @@
>  
>  #include "axp209.dtsi"
>  
> +&gmac_mdio {
> +	phy1: ethernet-phy at 1 {
> +		reg = <1>;
> +	};
> +};
> +
>  &mmc0 {
>  	vmmc-supply = <&reg_vcc3v3>;
>  	bus-width = <4>;
> @@ -145,14 +147,6 @@
>  	status = "okay";
>  };
>  
> -&pio {
> -	usb0_id_detect_pin: usb0-id-detect-pin {
> -		pins = "PH4";
> -		function = "gpio_in";
> -		bias-pull-up;
> -	};
> -};
> -
>  &reg_dcdc2 {
>  	regulator-always-on;
>  	regulator-min-microvolt = <1000000>;
> @@ -206,9 +200,7 @@
>  };
>  
>  &usbphy {
> -	pinctrl-names = "default";
> -	pinctrl-0 = <&usb0_id_detect_pin>;
> -	usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
> +	usb0_id_det-gpios = <&pio 7 4 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; /* PH4 */
>  	usb0_vbus_power-supply = <&usb_power_supply>;
>  	usb0_vbus-supply = <&reg_usb0_vbus>;
>  	usb1_vbus-supply = <&reg_usb1_vbus>;
> diff --git a/arch/arm/dts/sun7i-a20.dtsi b/arch/arm/dts/sun7i-a20.dtsi
> index 641a8fa6d4..5574299685 100644
> --- a/arch/arm/dts/sun7i-a20.dtsi
> +++ b/arch/arm/dts/sun7i-a20.dtsi
> @@ -47,6 +47,7 @@
>  #include <dt-bindings/dma/sun4i-a10.h>
>  #include <dt-bindings/clock/sun7i-a20-ccu.h>
>  #include <dt-bindings/reset/sun4i-a10-ccu.h>
> +#include <dt-bindings/pinctrl/sun4i-a10.h>
>  
>  / {
>  	interrupt-parent = <&gic>;
> @@ -105,16 +106,15 @@
>  			reg = <0>;
>  			clocks = <&ccu CLK_CPU>;
>  			clock-latency = <244144>; /* 8 32k periods */
> -			operating-points = <
> +			operating-points =
>  				/* kHz	  uV */
> -				960000	1400000
> -				912000	1400000
> -				864000	1300000
> -				720000	1200000
> -				528000	1100000
> -				312000	1000000
> -				144000	1000000
> -				>;  
> +				<960000	1400000>,
> +				<912000	1400000>,
> +				<864000	1300000>,
> +				<720000	1200000>,
> +				<528000	1100000>,
> +				<312000	1000000>,
> +				<144000	1000000>;
>  			#cooling-cells = <2>;
>  		};
>  
> @@ -124,22 +124,21 @@
>  			reg = <1>;
>  			clocks = <&ccu CLK_CPU>;
>  			clock-latency = <244144>; /* 8 32k periods */
> -			operating-points = <
> +			operating-points =
>  				/* kHz	  uV */
> -				960000	1400000
> -				912000	1400000
> -				864000	1300000
> -				720000	1200000
> -				528000	1100000
> -				312000	1000000
> -				144000	1000000
> -				>;  
> +				<960000	1400000>,
> +				<912000	1400000>,
> +				<864000	1300000>,
> +				<720000	1200000>,
> +				<528000	1100000>,
> +				<312000	1000000>,
> +				<144000	1000000>;
>  			#cooling-cells = <2>;
>  		};
>  	};
>  
>  	thermal-zones {
> -		cpu_thermal {
> +		cpu-thermal {
>  			/* milliseconds */
>  			polling-delay-passive = <250>;
>  			polling-delay = <1000>;
> @@ -180,7 +179,7 @@
>  		default-pool {
>  			compatible = "shared-dma-pool";
>  			size = <0x6000000>;
> -			alloc-ranges = <0x4a000000 0x6000000>;
> +			alloc-ranges = <0x40000000 0x10000000>;
>  			reusable;
>  			linux,cma-default;
>  		};
> @@ -333,7 +332,7 @@
>  			#dma-cells = <2>;
>  		};
>  
> -		nfc: nand at 1c03000 {
> +		nfc: nand-controller at 1c03000 {
>  			compatible = "allwinner,sun4i-a10-nand";
>  			reg = <0x01c03000 0x1000>;
>  			interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
> @@ -376,6 +375,16 @@
>  			num-cs = <1>;
>  		};
>  
> +		csi0: csi at 1c09000 {
> +			compatible = "allwinner,sun7i-a20-csi0";
> +			reg = <0x01c09000 0x1000>;
> +			interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&ccu CLK_AHB_CSI0>, <&ccu CLK_CSI_SCLK>, <&ccu CLK_DRAM_CSI0>;
> +			clock-names = "bus", "isp", "ram";
> +			resets = <&ccu RST_CSI0>;
> +			status = "disabled";
> +		};
> +
>  		emac: ethernet at 1c0b000 {
>  			compatible = "allwinner,sun4i-a10-emac";
>  			reg = <0x01c0b000 0x1000>;
> @@ -394,11 +403,12 @@
>  		};
>  
>  		tcon0: lcd-controller at 1c0c000 {
> -			compatible = "allwinner,sun7i-a20-tcon";
> +			compatible = "allwinner,sun7i-a20-tcon0",
> +				     "allwinner,sun7i-a20-tcon";
>  			reg = <0x01c0c000 0x1000>;
>  			interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
> -			resets = <&ccu RST_TCON0>;
> -			reset-names = "lcd";
> +			resets = <&ccu RST_TCON0>, <&ccu RST_LVDS>;
> +			reset-names = "lcd", "lvds";
>  			clocks = <&ccu CLK_AHB_LCD0>,
>  				 <&ccu CLK_TCON0_CH0>,
>  				 <&ccu CLK_TCON0_CH1>;
> @@ -406,6 +416,7 @@
>  				      "tcon-ch0",
>  				      "tcon-ch1";
>  			clock-output-names = "tcon0-pixel-clock";
> +			#clock-cells = <0>;
>  			dmas = <&dma SUN4I_DMA_DEDICATED 14>;
>  
>  			ports {
> @@ -443,7 +454,8 @@
>  		};
>  
>  		tcon1: lcd-controller at 1c0d000 {
> -			compatible = "allwinner,sun7i-a20-tcon";
> +			compatible = "allwinner,sun7i-a20-tcon1",
> +				     "allwinner,sun7i-a20-tcon";
>  			reg = <0x01c0d000 0x1000>;
>  			interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
>  			resets = <&ccu RST_TCON1>;
> @@ -455,6 +467,7 @@
>  				      "tcon-ch0",
>  				      "tcon-ch1";
>  			clock-output-names = "tcon1-pixel-clock";
> +			#clock-cells = <0>;
>  			dmas = <&dma SUN4I_DMA_DEDICATED 15>;
>  
>  			ports {
> @@ -586,13 +599,14 @@
>  			phy-names = "usb";
>  			extcon = <&usbphy 0>;
>  			allwinner,sram = <&otg_sram 1>;
> +			dr_mode = "otg";
>  			status = "disabled";
>  		};
>  
>  		usbphy: phy at 1c13400 {
>  			#phy-cells = <1>;
>  			compatible = "allwinner,sun7i-a20-usb-phy";
> -			reg = <0x01c13400 0x10 0x01c14800 0x4 0x01c1c800 0x4>;
> +			reg = <0x01c13400 0x10>, <0x01c14800 0x4>, <0x01c1c800 0x4>;
>  			reg-names = "phy_ctrl", "pmu1", "pmu2";
>  			clocks = <&ccu CLK_USB_PHY>;
>  			clock-names = "usb_phy";
> @@ -716,6 +730,17 @@
>  			status = "disabled";
>  		};
>  
> +		csi1: csi at 1c1d000 {
> +			compatible = "allwinner,sun7i-a20-csi1",
> +				     "allwinner,sun4i-a10-csi1";
> +			reg = <0x01c1d000 0x1000>;
> +			interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&ccu CLK_AHB_CSI1>, <&ccu CLK_DRAM_CSI1>;
> +			clock-names = "bus", "ram";
> +			resets = <&ccu RST_CSI1>;
> +			status = "disabled";
> +		};
> +
>  		spi3: spi at 1c1f000 {
>  			compatible = "allwinner,sun4i-a10-spi";
>  			reg = <0x01c1f000 0x1000>;
> @@ -751,21 +776,70 @@
>  			#interrupt-cells = <3>;
>  			#gpio-cells = <3>;
>  
> +			/omit-if-no-ref/
> +			can_pa_pins: can-pa-pins {
> +				pins = "PA16", "PA17";
> +				function = "can";
> +			};
> +
> +			/omit-if-no-ref/
>  			can_ph_pins: can-ph-pins {
>  				pins = "PH20", "PH21";
>  				function = "can";
>  			};
>  
> +			/omit-if-no-ref/
>  			clk_out_a_pin: clk-out-a-pin {
>  				pins = "PI12";
>  				function = "clk_out_a";
>  			};
>  
> +			/omit-if-no-ref/
>  			clk_out_b_pin: clk-out-b-pin {
>  				pins = "PI13";
>  				function = "clk_out_b";
>  			};
>  
> +			/omit-if-no-ref/
> +			csi0_8bits_pins: csi-8bits-pins {
> +				pins = "PE0", "PE2", "PE3", "PE4", "PE5",
> +				       "PE6", "PE7", "PE8", "PE9", "PE10",
> +				       "PE11";
> +				function = "csi0";
> +			};
> +
> +			/omit-if-no-ref/
> +			csi0_clk_pin: csi-clk-pin {
> +				pins = "PE1";
> +				function = "csi0";
> +			};
> +
> +			/omit-if-no-ref/
> +			csi1_8bits_pg_pins: csi1-8bits-pg-pins {
> +				pins = "PG0", "PG2", "PG3", "PG4", "PG5",
> +				       "PG6", "PG7", "PG8", "PG9", "PG10",
> +				       "PG11";
> +				function = "csi1";
> +			};
> +
> +			/omit-if-no-ref/
> +			csi1_24bits_ph_pins: csi1-24bits-ph-pins {
> +				pins = "PH0", "PH1", "PH2", "PH3", "PH4",
> +				       "PH5", "PH6", "PH7", "PH8", "PH9",
> +				       "PH10", "PH11", "PH12", "PH13", "PH14",
> +				       "PH15", "PH16", "PH17", "PH18", "PH19",
> +				       "PH20", "PH21", "PH22", "PH23", "PH24",
> +				       "PH25", "PH26", "PH27";
> +				function = "csi1";
> +			};
> +
> +			/omit-if-no-ref/
> +			csi1_clk_pg_pin: csi1-clk-pg-pin {
> +				pins = "PG1";
> +				function = "csi1";
> +			};
> +
> +			/omit-if-no-ref/
>  			emac_pa_pins: emac-pa-pins {
>  				pins = "PA0", "PA1", "PA2",
>  				       "PA3", "PA4", "PA5", "PA6",
> @@ -775,6 +849,17 @@
>  				function = "emac";
>  			};
>  
> +			/omit-if-no-ref/
> +			emac_ph_pins: emac-ph-pins {
> +				pins = "PH8", "PH9", "PH10", "PH11",
> +				       "PH14", "PH15", "PH16", "PH17",
> +				       "PH18", "PH19", "PH20", "PH21",
> +				       "PH22", "PH23", "PH24", "PH25",
> +				       "PH26";
> +				function = "emac";
> +			};
> +
> +			/omit-if-no-ref/
>  			gmac_mii_pins: gmac-mii-pins {
>  				pins = "PA0", "PA1", "PA2",
>  				       "PA3", "PA4", "PA5", "PA6",
> @@ -784,6 +869,7 @@
>  				function = "gmac";
>  			};
>  
> +			/omit-if-no-ref/
>  			gmac_rgmii_pins: gmac-rgmii-pins {
>  				pins = "PA0", "PA1", "PA2",
>  				       "PA3", "PA4", "PA5", "PA6",
> @@ -798,46 +884,69 @@
>  				drive-strength = <40>;
>  			};
>  
> +			/omit-if-no-ref/
>  			i2c0_pins: i2c0-pins {
>  				pins = "PB0", "PB1";
>  				function = "i2c0";
>  			};
>  
> +			/omit-if-no-ref/
>  			i2c1_pins: i2c1-pins {
>  				pins = "PB18", "PB19";
>  				function = "i2c1";
>  			};
>  
> +			/omit-if-no-ref/
>  			i2c2_pins: i2c2-pins {
>  				pins = "PB20", "PB21";
>  				function = "i2c2";
>  			};
>  
> +			/omit-if-no-ref/
>  			i2c3_pins: i2c3-pins {
>  				pins = "PI0", "PI1";
>  				function = "i2c3";
>  			};
>  
> +			/omit-if-no-ref/
>  			ir0_rx_pin: ir0-rx-pin {
>  				pins = "PB4";
>  				function = "ir0";
>  			};
>  
> +			/omit-if-no-ref/
>  			ir0_tx_pin: ir0-tx-pin {
>  				pins = "PB3";
>  				function = "ir0";
>  			};
>  
> +			/omit-if-no-ref/
>  			ir1_rx_pin: ir1-rx-pin {
>  				pins = "PB23";
>  				function = "ir1";
>  			};
>  
> +			/omit-if-no-ref/
>  			ir1_tx_pin: ir1-tx-pin {
>  				pins = "PB22";
>  				function = "ir1";
>  			};
>  
> +			/omit-if-no-ref/
> +			lcd_lvds0_pins: lcd-lvds0-pins {
> +				pins = "PD0", "PD1", "PD2", "PD3", "PD4",
> +				       "PD5", "PD6", "PD7", "PD8", "PD9";
> +				function = "lvds0";
> +			};
> +
> +			/omit-if-no-ref/
> +			lcd_lvds1_pins: lcd-lvds1-pins {
> +				pins = "PD10", "PD11", "PD12", "PD13", "PD14",
> +				       "PD15", "PD16", "PD17", "PD18", "PD19";
> +				function = "lvds1";
> +			};
> +
> +			/omit-if-no-ref/
>  			mmc0_pins: mmc0-pins {
>  				pins = "PF0", "PF1", "PF2",
>  				       "PF3", "PF4", "PF5";
> @@ -846,6 +955,7 @@
>  				bias-pull-up;
>  			};
>  
> +			/omit-if-no-ref/
>  			mmc2_pins: mmc2-pins {
>  				pins = "PC6", "PC7", "PC8",
>  				       "PC9", "PC10", "PC11";
> @@ -854,6 +964,7 @@
>  				bias-pull-up;
>  			};
>  
> +			/omit-if-no-ref/
>  			mmc3_pins: mmc3-pins {
>  				pins = "PI4", "PI5", "PI6",
>  				       "PI7", "PI8", "PI9";
> @@ -862,127 +973,206 @@
>  				bias-pull-up;
>  			};
>  
> +			/omit-if-no-ref/
>  			ps2_0_pins: ps2-0-pins {
>  				pins = "PI20", "PI21";
>  				function = "ps2";
>  			};
>  
> +			/omit-if-no-ref/
>  			ps2_1_ph_pins: ps2-1-ph-pins {
>  				pins = "PH12", "PH13";
>  				function = "ps2";
>  			};
>  
> +			/omit-if-no-ref/
>  			pwm0_pin: pwm0-pin {
>  				pins = "PB2";
>  				function = "pwm";
>  			};
>  
> +			/omit-if-no-ref/
>  			pwm1_pin: pwm1-pin {
>  				pins = "PI3";
>  				function = "pwm";
>  			};
>  
> +			/omit-if-no-ref/
>  			spdif_tx_pin: spdif-tx-pin {
>  				pins = "PB13";
>  				function = "spdif";
>  				bias-pull-up;
>  			};
>  
> +			/omit-if-no-ref/
>  			spi0_pi_pins: spi0-pi-pins {
>  				pins = "PI11", "PI12", "PI13";
>  				function = "spi0";
>  			};
>  
> +			/omit-if-no-ref/
>  			spi0_cs0_pi_pin: spi0-cs0-pi-pin {
>  				pins = "PI10";
>  				function = "spi0";
>  			};
>  
> +			/omit-if-no-ref/
>  			spi0_cs1_pi_pin: spi0-cs1-pi-pin {
>  				pins = "PI14";
>  				function = "spi0";
>  			};
>  
> +			/omit-if-no-ref/
>  			spi1_pi_pins: spi1-pi-pins {
>  				pins = "PI17", "PI18", "PI19";
>  				function = "spi1";
>  			};
>  
> +			/omit-if-no-ref/
>  			spi1_cs0_pi_pin: spi1-cs0-pi-pin {
>  				pins = "PI16";
>  				function = "spi1";
>  			};
>  
> +			/omit-if-no-ref/
>  			spi2_pb_pins: spi2-pb-pins {
>  				pins = "PB15", "PB16", "PB17";
>  				function = "spi2";
>  			};
>  
> +			/omit-if-no-ref/
>  			spi2_cs0_pb_pin: spi2-cs0-pb-pin {
>  				pins = "PB14";
>  				function = "spi2";
>  			};
>  
> +			/omit-if-no-ref/
>  			spi2_pc_pins: spi2-pc-pins {
>  				pins = "PC20", "PC21", "PC22";
>  				function = "spi2";
>  			};
>  
> +			/omit-if-no-ref/
>  			spi2_cs0_pc_pin: spi2-cs0-pc-pin {
>  				pins = "PC19";
>  				function = "spi2";
>  			};
>  
> +			/omit-if-no-ref/
>  			uart0_pb_pins: uart0-pb-pins {
>  				pins = "PB22", "PB23";
>  				function = "uart0";
>  			};
>  
> +			/omit-if-no-ref/
> +			uart0_pf_pins: uart0-pf-pins {
> +				pins = "PF2", "PF4";
> +				function = "uart0";
> +			};
> +
> +			/omit-if-no-ref/
> +			uart1_pa_pins: uart1-pa-pins {
> +				pins = "PA10", "PA11";
> +				function = "uart1";
> +			};
> +
> +			/omit-if-no-ref/
> +			uart1_cts_rts_pa_pins: uart1-cts-rts-pa-pins {
> +				pins = "PA12", "PA13";
> +				function = "uart1";
> +			};
> +
> +			/omit-if-no-ref/
> +			uart2_pa_pins: uart2-pa-pins {
> +				pins = "PA2", "PA3";
> +				function = "uart2";
> +			};
> +
> +			/omit-if-no-ref/
> +			uart2_cts_rts_pa_pins: uart2-cts-rts-pa-pins {
> +				pins = "PA0", "PA1";
> +				function = "uart2";
> +			};
> +
> +			/omit-if-no-ref/
>  			uart2_pi_pins: uart2-pi-pins {
>  				pins = "PI18", "PI19";
>  				function = "uart2";
>  			};
>  
> +			/omit-if-no-ref/
>  			uart2_cts_rts_pi_pins: uart2-cts-rts-pi-pins {
>  				pins = "PI16", "PI17";
>  				function = "uart2";
>  			};
>  
> +			/omit-if-no-ref/
>  			uart3_pg_pins: uart3-pg-pins {
>  				pins = "PG6", "PG7";
>  				function = "uart3";
>  			};
>  
> +			/omit-if-no-ref/
>  			uart3_cts_rts_pg_pins: uart3-cts-rts-pg-pins {
>  				pins = "PG8", "PG9";
>  				function = "uart3";
>  			};
>  
> +			/omit-if-no-ref/
>  			uart3_ph_pins: uart3-ph-pins {
>  				pins = "PH0", "PH1";
>  				function = "uart3";
>  			};
>  
> +			/omit-if-no-ref/
> +			uart3_cts_rts_ph_pins: uart3-cts-rts-ph-pins {
> +				pins = "PH2", "PH3";
> +				function = "uart3";
> +			};
> +
> +			/omit-if-no-ref/
>  			uart4_pg_pins: uart4-pg-pins {
>  				pins = "PG10", "PG11";
>  				function = "uart4";
>  			};
>  
> +			/omit-if-no-ref/
>  			uart4_ph_pins: uart4-ph-pins {
>  				pins = "PH4", "PH5";
>  				function = "uart4";
>  			};
>  
> +			/omit-if-no-ref/
> +			uart5_ph_pins: uart5-ph-pins {
> +				pins = "PH6", "PH7";
> +				function = "uart5";
> +			};
> +
> +			/omit-if-no-ref/
>  			uart5_pi_pins: uart5-pi-pins {
>  				pins = "PI10", "PI11";
>  				function = "uart5";
>  			};
>  
> +			/omit-if-no-ref/
> +			uart6_pa_pins: uart6-pa-pins {
> +				pins = "PA12", "PA13";
> +				function = "uart6";
> +			};
> +
> +			/omit-if-no-ref/
>  			uart6_pi_pins: uart6-pi-pins {
>  				pins = "PI12", "PI13";
>  				function = "uart6";
>  			};
>  
> +			/omit-if-no-ref/
> +			uart7_pa_pins: uart7-pa-pins {
> +				pins = "PA14", "PA15";
> +				function = "uart7";
> +			};
> +
> +			/omit-if-no-ref/
>  			uart7_pi_pins: uart7-pi-pins {
>  				pins = "PI20", "PI21";
>  				function = "uart7";
> @@ -1004,6 +1194,8 @@
>  		wdt: watchdog at 1c20c90 {
>  			compatible = "allwinner,sun4i-a10-wdt";
>  			reg = <0x01c20c90 0x10>;
> +			interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&osc24M>;
>  		};
>  
>  		rtc: rtc at 1c20d00 {
> @@ -1326,8 +1518,12 @@
>  			snps,fixed-burst;
>  			snps,force_sf_dma_mode;
>  			status = "disabled";
> -			#address-cells = <1>;
> -			#size-cells = <0>;
> +
> +			gmac_mdio: mdio {
> +				compatible = "snps,dwmac-mdio";
> +				#address-cells = <1>;
> +				#size-cells = <0>;
> +			};
>  		};
>  
>  		hstimer at 1c60000 {
> @@ -1341,7 +1537,7 @@
>  		};
>  
>  		gic: interrupt-controller at 1c81000 {
> -			compatible = "arm,gic-400", "arm,cortex-a7-gic", "arm,cortex-a15-gic";
> +			compatible = "arm,gic-400";
>  			reg = <0x01c81000 0x1000>,
>  			      <0x01c82000 0x2000>,
>  			      <0x01c84000 0x2000>,



More information about the U-Boot mailing list