|
@@ -0,0 +1,305 @@
|
|
|
|
+From 322bf103204b8f786547acbeed85569254e7088f Mon Sep 17 00:00:00 2001
|
|
|
|
+From: Andre Przywara <[email protected]>
|
|
|
|
+Date: Fri, 4 Aug 2023 18:08:54 +0100
|
|
|
|
+Subject: [PATCH] arm64: dts: allwinner: h616: Split Orange Pi Zero 2 DT
|
|
|
|
+
|
|
|
|
+The Orange Pi Zero 2 got a successor (Zero 3), which shares quite some
|
|
|
|
+DT nodes with the Zero 2, but comes with a different PMIC.
|
|
|
|
+
|
|
|
|
+Move the common parts (except the PMIC) into a new shared file, and
|
|
|
|
+include that from the existing board .dts file.
|
|
|
|
+
|
|
|
|
+No functional change, the generated DTB is the same, except for some
|
|
|
|
+phandle numbering differences.
|
|
|
|
+
|
|
|
|
+Signed-off-by: Andre Przywara <[email protected]>
|
|
|
|
+Acked-by: Jernej Skrabec <[email protected]>
|
|
|
|
+Link: https://lore.kernel.org/r/[email protected]
|
|
|
|
+Signed-off-by: Jernej Skrabec <[email protected]>
|
|
|
|
+---
|
|
|
|
+ .../allwinner/sun50i-h616-orangepi-zero.dtsi | 134 ++++++++++++++++++
|
|
|
|
+ .../allwinner/sun50i-h616-orangepi-zero2.dts | 119 +---------------
|
|
|
|
+ 2 files changed, 135 insertions(+), 118 deletions(-)
|
|
|
|
+ create mode 100644 arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi
|
|
|
|
+
|
|
|
|
+--- /dev/null
|
|
|
|
++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi
|
|
|
|
+@@ -0,0 +1,134 @@
|
|
|
|
++// SPDX-License-Identifier: (GPL-2.0+ or MIT)
|
|
|
|
++/*
|
|
|
|
++ * Copyright (C) 2020 Arm Ltd.
|
|
|
|
++ *
|
|
|
|
++ * DT nodes common between Orange Pi Zero 2 and Orange Pi Zero 3.
|
|
|
|
++ * Excludes PMIC nodes and properties, since they are different between the two.
|
|
|
|
++ */
|
|
|
|
++
|
|
|
|
++#include "sun50i-h616.dtsi"
|
|
|
|
++
|
|
|
|
++#include <dt-bindings/gpio/gpio.h>
|
|
|
|
++#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
|
|
++#include <dt-bindings/leds/common.h>
|
|
|
|
++
|
|
|
|
++/ {
|
|
|
|
++ aliases {
|
|
|
|
++ ethernet0 = &emac0;
|
|
|
|
++ serial0 = &uart0;
|
|
|
|
++ };
|
|
|
|
++
|
|
|
|
++ chosen {
|
|
|
|
++ stdout-path = "serial0:115200n8";
|
|
|
|
++ };
|
|
|
|
++
|
|
|
|
++ leds {
|
|
|
|
++ compatible = "gpio-leds";
|
|
|
|
++
|
|
|
|
++ led-0 {
|
|
|
|
++ function = LED_FUNCTION_POWER;
|
|
|
|
++ color = <LED_COLOR_ID_RED>;
|
|
|
|
++ gpios = <&pio 2 12 GPIO_ACTIVE_HIGH>; /* PC12 */
|
|
|
|
++ default-state = "on";
|
|
|
|
++ };
|
|
|
|
++
|
|
|
|
++ led-1 {
|
|
|
|
++ function = LED_FUNCTION_STATUS;
|
|
|
|
++ color = <LED_COLOR_ID_GREEN>;
|
|
|
|
++ 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: regulator-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 */
|
|
|
|
++ };
|
|
|
|
++};
|
|
|
|
++
|
|
|
|
++&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>;
|
|
|
|
++ allwinner,rx-delay-ps = <3100>;
|
|
|
|
++ allwinner,tx-delay-ps = <700>;
|
|
|
|
++ status = "okay";
|
|
|
|
++};
|
|
|
|
++
|
|
|
|
++&mdio0 {
|
|
|
|
++ ext_rgmii_phy: ethernet-phy@1 {
|
|
|
|
++ compatible = "ethernet-phy-ieee802.3-c22";
|
|
|
|
++ reg = <1>;
|
|
|
|
++ };
|
|
|
|
++};
|
|
|
|
++
|
|
|
|
++&mmc0 {
|
|
|
|
++ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
|
|
|
|
++ bus-width = <4>;
|
|
|
|
++ status = "okay";
|
|
|
|
++};
|
|
|
|
++
|
|
|
|
++&ohci1 {
|
|
|
|
++ status = "okay";
|
|
|
|
++};
|
|
|
|
++
|
|
|
|
++&spi0 {
|
|
|
|
++ status = "okay";
|
|
|
|
++ pinctrl-names = "default";
|
|
|
|
++ pinctrl-0 = <&spi0_pins>, <&spi0_cs0_pin>;
|
|
|
|
++
|
|
|
|
++ flash@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 {
|
|
|
|
++ /*
|
|
|
|
++ * PHY0 pins are connected to a USB-C socket, but a role switch
|
|
|
|
++ * is not implemented: both CC pins are pulled to GND.
|
|
|
|
++ * The VBUS pins power the device, so a fixed peripheral mode
|
|
|
|
++ * is the best choice.
|
|
|
|
++ * The board can be powered via GPIOs, in this case port0 *can*
|
|
|
|
++ * act as a host (with a cable/adapter ignoring CC), as VBUS is
|
|
|
|
++ * then provided by the GPIOs. Any user of this setup would
|
|
|
|
++ * need to adjust the DT accordingly: dr_mode set to "host",
|
|
|
|
++ * enabling OHCI0 and EHCI0.
|
|
|
|
++ */
|
|
|
|
++ dr_mode = "peripheral";
|
|
|
|
++ status = "okay";
|
|
|
|
++};
|
|
|
|
++
|
|
|
|
++&usbphy {
|
|
|
|
++ usb1_vbus-supply = <®_usb1_vbus>;
|
|
|
|
++ status = "okay";
|
|
|
|
++};
|
|
|
|
+--- a/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
|
|
|
|
++++ b/arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero2.dts
|
|
|
|
+@@ -5,95 +5,19 @@
|
|
|
|
+
|
|
|
|
+ /dts-v1/;
|
|
|
|
+
|
|
|
|
+-#include "sun50i-h616.dtsi"
|
|
|
|
+-
|
|
|
|
+-#include <dt-bindings/gpio/gpio.h>
|
|
|
|
+-#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
|
|
+-#include <dt-bindings/leds/common.h>
|
|
|
|
++#include "sun50i-h616-orangepi-zero.dtsi"
|
|
|
|
+
|
|
|
|
+ / {
|
|
|
|
+ model = "OrangePi Zero2";
|
|
|
|
+ compatible = "xunlong,orangepi-zero2", "allwinner,sun50i-h616";
|
|
|
|
+-
|
|
|
|
+- aliases {
|
|
|
|
+- ethernet0 = &emac0;
|
|
|
|
+- serial0 = &uart0;
|
|
|
|
+- };
|
|
|
|
+-
|
|
|
|
+- chosen {
|
|
|
|
+- stdout-path = "serial0:115200n8";
|
|
|
|
+- };
|
|
|
|
+-
|
|
|
|
+- leds {
|
|
|
|
+- compatible = "gpio-leds";
|
|
|
|
+-
|
|
|
|
+- led-0 {
|
|
|
|
+- function = LED_FUNCTION_POWER;
|
|
|
|
+- color = <LED_COLOR_ID_RED>;
|
|
|
|
+- gpios = <&pio 2 12 GPIO_ACTIVE_HIGH>; /* PC12 */
|
|
|
|
+- default-state = "on";
|
|
|
|
+- };
|
|
|
|
+-
|
|
|
|
+- led-1 {
|
|
|
|
+- function = LED_FUNCTION_STATUS;
|
|
|
|
+- color = <LED_COLOR_ID_GREEN>;
|
|
|
|
+- 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: regulator-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 */
|
|
|
|
+- };
|
|
|
|
+-};
|
|
|
|
+-
|
|
|
|
+-&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@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";
|
|
|
|
+-};
|
|
|
|
+-
|
|
|
|
+-&ohci1 {
|
|
|
|
+- status = "okay";
|
|
|
|
+ };
|
|
|
|
+
|
|
|
|
+ &r_rsb {
|
|
|
|
+@@ -211,44 +135,3 @@
|
|
|
|
+ vcc-ph-supply = <®_aldo1>;
|
|
|
|
+ vcc-pi-supply = <®_aldo1>;
|
|
|
|
+ };
|
|
|
|
+-
|
|
|
|
+-&spi0 {
|
|
|
|
+- status = "okay";
|
|
|
|
+- pinctrl-names = "default";
|
|
|
|
+- pinctrl-0 = <&spi0_pins>, <&spi0_cs0_pin>;
|
|
|
|
+-
|
|
|
|
+- flash@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 {
|
|
|
|
+- /*
|
|
|
|
+- * PHY0 pins are connected to a USB-C socket, but a role switch
|
|
|
|
+- * is not implemented: both CC pins are pulled to GND.
|
|
|
|
+- * The VBUS pins power the device, so a fixed peripheral mode
|
|
|
|
+- * is the best choice.
|
|
|
|
+- * The board can be powered via GPIOs, in this case port0 *can*
|
|
|
|
+- * act as a host (with a cable/adapter ignoring CC), as VBUS is
|
|
|
|
+- * then provided by the GPIOs. Any user of this setup would
|
|
|
|
+- * need to adjust the DT accordingly: dr_mode set to "host",
|
|
|
|
+- * enabling OHCI0 and EHCI0.
|
|
|
|
+- */
|
|
|
|
+- dr_mode = "peripheral";
|
|
|
|
+- status = "okay";
|
|
|
|
+-};
|
|
|
|
+-
|
|
|
|
+-&usbphy {
|
|
|
|
+- usb1_vbus-supply = <®_usb1_vbus>;
|
|
|
|
+- status = "okay";
|
|
|
|
+-};
|