From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andre Przywara Date: Sun, 24 Jan 2021 02:18:21 +0000 Subject: [PATCH v2 21/21] sunxi: Add support for OrangePi Zero2 In-Reply-To: <20210111201153.1800440-22-jernej.skrabec@siol.net> References: <20210111201153.1800440-1-jernej.skrabec@siol.net> <20210111201153.1800440-22-jernej.skrabec@siol.net> Message-ID: <20210124021821.6669fdc3@slackpad.fritz.box> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On Mon, 11 Jan 2021 21:11:53 +0100 Jernej Skrabec wrote: > OrangePi Zero2 is SBC based on Allwinner H616 with 1 GiB of RAM, SD card > support, gigabit ethernet, micro HDMI, WIFI, Bluetooth and 1 USB 2.0 > port. It also has two GPIO headers which allows further peripherals to > be used. > > Device Tree file is taken from initial OrangePi Zero2 Linux submission > and it's not yet merged. Looks alright, the same story here with the DT. I updated to v3, with the prospect of updating this later in the cycle when needed. I dropped the Ethernet support from the defconfig for now, as I moved the EMAC driver fixes out of this initial series. Ideally we can still get them merged next week. > > Signed-off-by: Jernej Skrabec Reviewed-by: Andre Przywara Cheers, Andre > --- > arch/arm/dts/Makefile | 2 + > arch/arm/dts/sun50i-h616-orangepi-zero2.dts | 240 ++++++++++++++++++++ > board/sunxi/MAINTAINERS | 5 + > configs/orangepi_zero2_defconfig | 15 ++ > 4 files changed, 262 insertions(+) > create mode 100644 arch/arm/dts/sun50i-h616-orangepi-zero2.dts > create mode 100644 configs/orangepi_zero2_defconfig > > diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile > index 1a62e4c0708a..ed6150dca38d 100644 > --- a/arch/arm/dts/Makefile > +++ b/arch/arm/dts/Makefile > @@ -609,6 +609,8 @@ dtb-$(CONFIG_MACH_SUN50I_H6) += \ > sun50i-h6-orangepi-lite2.dtb \ > sun50i-h6-orangepi-one-plus.dtb \ > sun50i-h6-pine-h64.dtb > +dtb-$(CONFIG_MACH_SUN50I_H616) += \ > + sun50i-h616-orangepi-zero2.dtb > dtb-$(CONFIG_MACH_SUN50I) += \ > sun50i-a64-amarula-relic.dtb \ > sun50i-a64-bananapi-m64.dtb \ > diff --git a/arch/arm/dts/sun50i-h616-orangepi-zero2.dts b/arch/arm/dts/sun50i-h616-orangepi-zero2.dts > new file mode 100644 > index 000000000000..2afc036059b4 > --- /dev/null > +++ b/arch/arm/dts/sun50i-h616-orangepi-zero2.dts > @@ -0,0 +1,240 @@ > +// SPDX-License-Identifier: (GPL-2.0+ or MIT) > +/* > + * Copyright (C) 2020 Arm Ltd. > + */ > + > +/dts-v1/; > + > +#include "sun50i-h616.dtsi" > + > +#include > +#include > +#include > + > +/ { > + model = "OrangePi Zero2"; > + compatible = "xunlong,orangepi-zero2", "allwinner,sun50i-h616"; > + > + aliases { > + ethernet0 = &emac0; > + serial0 = &uart0; > + }; > + > + chosen { > + stdout-path = "serial0:115200n8"; > + }; > + > + leds { > + compatible = "gpio-leds"; > + > + power { > + function = LED_FUNCTION_POWER; > + color = ; > + gpios = <&pio 2 12 GPIO_ACTIVE_HIGH>; /* PC12 */ > + default-state = "on"; > + }; > + > + status { > + function = LED_FUNCTION_STATUS; > + color = ; > + gpios = <&pio 2 13 GPIO_ACTIVE_HIGH>; /* PC13 */ > + }; > + }; > + > + reg_vcc5v: vcc5v { > + /* board wide 5V supply directly from the USB-C socket */ > + compatible = "regulator-fixed"; > + regulator-name = "vcc-5v"; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + regulator-always-on; > + }; > + > + reg_usb1_vbus: usb1-vbus { > + compatible = "regulator-fixed"; > + regulator-name = "usb1-vbus"; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + vin-supply = <®_vcc5v>; > + enable-active-high; > + gpio = <&pio 2 16 GPIO_ACTIVE_HIGH>; /* PC16 */ > + status = "okay"; > + }; > +}; > + > +&ehci0 { > + status = "okay"; > +}; > + > +&ehci1 { > + status = "okay"; > +}; > + > +/* USB 2 & 3 are on headers only. */ > + > +&emac0 { > + pinctrl-names = "default"; > + pinctrl-0 = <&ext_rgmii_pins>; > + phy-mode = "rgmii"; > + phy-handle = <&ext_rgmii_phy>; > + phy-supply = <®_dcdce>; > + allwinner,rx-delay-ps = <3100>; > + allwinner,tx-delay-ps = <700>; > + status = "okay"; > +}; > + > +&mdio0 { > + ext_rgmii_phy: ethernet-phy at 1 { > + compatible = "ethernet-phy-ieee802.3-c22"; > + reg = <1>; > + }; > +}; > + > +&mmc0 { > + vmmc-supply = <®_dcdce>; > + cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ > + bus-width = <4>; > + status = "okay"; > +}; > + > +&ohci0 { > + status = "okay"; > +}; > + > +&ohci1 { > + status = "okay"; > +}; > + > +&r_i2c { > + status = "okay"; > + > + axp305: pmic at 36 { > + compatible = "x-powers,axp305", "x-powers,axp805", > + "x-powers,axp806"; > + reg = <0x36>; > + > + x-powers,self-working-mode; > + vina-supply = <®_vcc5v>; > + vinb-supply = <®_vcc5v>; > + vinc-supply = <®_vcc5v>; > + vind-supply = <®_vcc5v>; > + vine-supply = <®_vcc5v>; > + aldoin-supply = <®_vcc5v>; > + bldoin-supply = <®_vcc5v>; > + cldoin-supply = <®_vcc5v>; > + > + regulators { > + reg_aldo1: aldo1 { > + regulator-always-on; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-name = "vcc-sys"; > + }; > + > + reg_aldo2: aldo2 { /* 3.3V on headers */ > + regulator-always-on; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-name = "vcc3v3-ext"; > + }; > + > + reg_aldo3: aldo3 { /* 3.3V on headers */ > + regulator-always-on; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-name = "vcc3v3-ext2"; > + }; > + > + reg_bldo1: bldo1 { > + regulator-always-on; > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <1800000>; > + regulator-name = "vcc1v8"; > + }; > + > + bldo2 { > + /* unused */ > + }; > + > + bldo3 { > + /* unused */ > + }; > + > + bldo4 { > + /* unused */ > + }; > + > + cldo1 { > + /* reserved */ > + }; > + > + cldo2 { > + /* unused */ > + }; > + > + cldo3 { > + /* unused */ > + }; > + > + reg_dcdca: dcdca { > + regulator-always-on; > + regulator-min-microvolt = <810000>; > + regulator-max-microvolt = <1080000>; > + regulator-name = "vdd-cpu"; > + }; > + > + reg_dcdcc: dcdcc { > + regulator-always-on; > + regulator-min-microvolt = <810000>; > + regulator-max-microvolt = <1080000>; > + regulator-name = "vdd-gpu-sys"; > + }; > + > + reg_dcdcd: dcdcd { > + regulator-always-on; > + regulator-min-microvolt = <1500000>; > + regulator-max-microvolt = <1500000>; > + regulator-name = "vdd-dram"; > + }; > + > + reg_dcdce: dcdce { > + regulator-boot-on; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + regulator-name = "vcc-eth-mmc"; > + }; > + > + sw { > + /* unused */ > + }; > + }; > + }; > +}; > + > +&spi0 { > + status = "okay"; > + > + flash at 0 { > + #address-cells = <1>; > + #size-cells = <1>; > + compatible = "jedec,spi-nor"; > + reg = <0>; > + spi-max-frequency = <40000000>; > + }; > +}; > + > +&uart0 { > + pinctrl-names = "default"; > + pinctrl-0 = <&uart0_ph_pins>; > + status = "okay"; > +}; > + > +&usbotg { > + dr_mode = "peripheral"; > + status = "okay"; > +}; > + > +&usbphy { > + usb1_vbus-supply = <®_usb1_vbus>; > + status = "okay"; > +}; > diff --git a/board/sunxi/MAINTAINERS b/board/sunxi/MAINTAINERS > index 735801ae1d80..1ec6414eca51 100644 > --- a/board/sunxi/MAINTAINERS > +++ b/board/sunxi/MAINTAINERS > @@ -420,6 +420,11 @@ M: Diego Rondini > S: Maintained > F: configs/orangepi_zero_plus2_h3_defconfig > > +ORANGEPI ZERO 2 BOARD > +M: Jernej Skrabec > +S: Maintained > +F: configs/orangepi_zero2_defconfig > + > ORANGEPI PC 2 BOARD > M: Andre Przywara > S: Maintained > diff --git a/configs/orangepi_zero2_defconfig b/configs/orangepi_zero2_defconfig > new file mode 100644 > index 000000000000..5af964bf100a > --- /dev/null > +++ b/configs/orangepi_zero2_defconfig > @@ -0,0 +1,15 @@ > +CONFIG_ARM=y > +CONFIG_ARCH_SUNXI=y > +CONFIG_SPL=y > +CONFIG_DRAM_SUN50I_H616_WRITE_LEVELING=y > +CONFIG_DRAM_SUN50I_H616_READ_CALIBRATION=y > +CONFIG_DRAM_SUN50I_H616_READ_TRAINING=y > +CONFIG_DRAM_SUN50I_H616_WRITE_TRAINING=y > +CONFIG_MACH_SUN50I_H616=y > +CONFIG_MMC0_CD_PIN="PF6" > +CONFIG_R_I2C_ENABLE=y > +CONFIG_DEFAULT_DEVICE_TREE="sun50i-h616-orangepi-zero2" > +# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set > +CONFIG_SPL_I2C_SUPPORT=y > +CONFIG_PHY_REALTEK=y > +CONFIG_SUN8I_EMAC=y