Re: [PATCH v2 3/3] arm64: dts: allwinner: h616: Add OrangePi Zero 3 board support

From: Jernej Škrabec
Date: Fri Aug 04 2023 - 15:06:14 EST


Dne petek, 04. avgust 2023 ob 19:08:56 CEST je Andre Przywara napisal(a):
> The OrangePi Zero 3 is a development board based on the Allwinner H618 SoC,
> which seems to be just an H616 with more L2 cache. The board itself is a
> slightly updated version of the Orange Pi Zero 2. It features:
> - Four ARM Cortex-A53 cores, Mali-G31 MP2 GPU
> - 1/1.5/2/4 GiB LPDDR4 DRAM SKUs (only up to 1GB on the Zero2)
> - AXP313a PMIC (more capable AXP305 on the Zero2)
> - Raspberry-Pi-1 compatible GPIO header
> - extra 13 pin expansion header, exposing pins for 2x USB 2.0 ports
> - 1 USB 2.0 host port
> - 1 USB 2.0 type C port (power supply + OTG)
> - MicroSD slot
> - on-board 16MiB bootable SPI NOR flash (only 2MB on the Zero2)
> - 1Gbps Ethernet port (via Motorcomm YT8531 PHY) (RTL8211 on the Zero2)
> - micro-HDMI port
> - (yet) unsupported Allwinner WiFi/BT chip
>
> Add the devicetree file describing the currently supported features,
> namely LEDs, SD card, PMIC, SPI flash, USB. Ethernet seems unstable at
> the moment, though the basic functionality works.
>
> Signed-off-by: Andre Przywara <andre.przywara@xxxxxxx>
> ---
> arch/arm64/boot/dts/allwinner/Makefile | 1 +
> .../allwinner/sun50i-h618-orangepi-zero3.dts | 94 +++++++++++++++++++
> 2 files changed, 95 insertions(+)
> create mode 100644
> arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts
>
> diff --git a/arch/arm64/boot/dts/allwinner/Makefile
> b/arch/arm64/boot/dts/allwinner/Makefile index 6a96494a2e0a3..3b0ad54062381
> 100644
> --- a/arch/arm64/boot/dts/allwinner/Makefile
> +++ b/arch/arm64/boot/dts/allwinner/Makefile
> @@ -40,3 +40,4 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-tanix-tx6-mini.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-orangepi-zero2.dtb
> dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-x96-mate.dtb
> +dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h618-orangepi-zero3.dtb
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts
> b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts new file
> mode 100644
> index 0000000000000..96a6851728111
> --- /dev/null
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero3.dts
> @@ -0,0 +1,94 @@
> +// SPDX-License-Identifier: (GPL-2.0+ or MIT)
> +/*
> + * Copyright (C) 2023 Arm Ltd.
> + */
> +
> +/dts-v1/;
> +
> +#include "sun50i-h616-orangepi-zero.dtsi"
> +
> +/ {
> + model = "OrangePi Zero3";
> + compatible = "xunlong,orangepi-zero3", "allwinner,sun50i-h618";
> +};
> +
> +&emac0 {
> + phy-supply = <&reg_dldo1>;
> +};
> +
> +&ext_rgmii_phy {
> + motorcomm,clk-out-frequency-hz = <125000000>;
> +};
> +
> +&mmc0 {
> + /*
> + * The schematic shows the card detect pin wired up to PF6, via an
> + * inverter, but it just doesn't work.
> + */
> + broken-cd;
> + vmmc-supply = <&reg_dldo1>;
> +};
> +
> +&r_i2c {
> + status = "okay";
> +
> + axp313: pmic@36 {
> + compatible = "x-powers,axp313a";
> + reg = <0x36>;
> + #interrupt-cells = <1>;
> + interrupt-controller;
> + interrupt-parent = <&pio>;
> + interrupts = <2 9 IRQ_TYPE_LEVEL_LOW>; /* PC9 */
> +
> + vin1-supply = <&reg_vcc5v>;
> + vin2-supply = <&reg_vcc5v>;
> + vin3-supply = <&reg_vcc5v>;
> +
> + regulators {
> + /* Supplies VCC-PLL, so needs to be always
on. */
> + reg_aldo1: aldo1 {
> + regulator-always-on;
> + regulator-min-microvolt =
<1800000>;
> + regulator-max-microvolt =
<1800000>;
> + regulator-name = "vcc1v8";
> + };
> +
> + /* Supplies VCC-IO, so needs to be always on.
*/
> + reg_dldo1: dldo1 {
> + regulator-always-on;
> + regulator-min-microvolt =
<3300000>;
> + regulator-max-microvolt =
<3300000>;
> + regulator-name = "vcc3v3";
> + };
> +
> + reg_dcdc1: dcdc1 {
> + regulator-always-on;
> + regulator-min-microvolt =
<810000>;
> + regulator-max-microvolt =
<990000>;
> + regulator-name = "vdd-gpu-sys";
> + };

Is it safe to change sys voltage when system is running?

Best regards,
Jernej

> +
> + reg_dcdc2: dcdc2 {
> + regulator-always-on;
> + regulator-min-microvolt =
<810000>;
> + regulator-max-microvolt =
<1100000>;
> + regulator-name = "vdd-cpu";
> + };
> +
> + reg_dcdc3: dcdc3 {
> + regulator-always-on;
> + regulator-min-microvolt =
<1100000>;
> + regulator-max-microvolt =
<1100000>;
> + regulator-name = "vdd-dram";
> + };
> + };
> + };
> +};
> +
> +&pio {
> + vcc-pc-supply = <&reg_dldo1>;
> + vcc-pf-supply = <&reg_dldo1>;
> + vcc-pg-supply = <&reg_aldo1>;
> + vcc-ph-supply = <&reg_dldo1>;
> + vcc-pi-supply = <&reg_dldo1>;
> +};