- Add D1 GPADC node

- Introduce support for OrangePi Zero 3 SBC
 - Enable DT overlay support for Allwinner H3 boards
 -----BEGIN PGP SIGNATURE-----
 
 iHUEABYIAB0WIQSPRixG1tysKC2PKM10Ba7+DO8kkwUCZM/gMQAKCRB0Ba7+DO8k
 kyuRAQChRx+hyhXWb1+5XVPiOHE1X4Ye/OosrT8rIhYkOETpCAEAvM2jYmUfk8rh
 /bQ+anyD713XahiEsGfbQDeKPXAfuwE=
 =9lad
 -----END PGP SIGNATURE-----
gpgsig -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEiK/NIGsWEZVxh/FrYKtH/8kJUicFAmTXRwIACgkQYKtH/8kJ
 UieFnQ//ZQlp2eyKFJRov+HpBidPvBoxdwBovVsmyVvBUbrjg6JXIpOJAZYtvfS6
 SlrCcEurnbyGRmUlDViKonoaWwNz3rtMdXaf7wXdzAKUyfsCf+FGkPrkRXa2U6XV
 urgAhtd/ZVq36V2cW9otnJkXX0PaRkE0NGgyj/BNvT1AXDw6FnoAakJO1FqTWQkE
 g71wJvMbM3unbvyiLgUt4nnajMLDSeF4zJkofPytoFvnmpdDTu+UTW3XpZccS+TH
 1OHCAixaM7lFINm0kuACBO6sEGgi7KXInZDefZ7vM8j7mhbIzFiTiMc/pc7ZW/+v
 zB9PfdJ2mAQ5q1v+MOOBS/Djwe1MueYKX6XWoZoLHf4geTpTn1mhLgIO9e37uBDy
 g0A07l74w2hG+KYfiqwzsh3YOFZ5xaqk/B7kn4UdqMMEEJJUeTMhe2Voi0bK6SX4
 A/U8BqGxTGGSArpW1dbb79ANuYeGs7Ka83iTaPD3jjtXin8N99CuMtq2NReVf9uI
 P4chRVYsMA5DZT1JnGsc756CIA+1mgIK16xxKKtvlL45zSsS4akZUpU/mZXUoKWA
 bEXWi38L2cCsT6XaIggIkFhuk/CKWOHaf1Vjt4ihK/B1AnA82fQu0VkMJfV4s4VZ
 gA1eRDctDM3bF+p4Sh6WaWsLYoclQiBizXT5F2gf0fq5IHrYlwg=
 =tqQf
 -----END PGP SIGNATURE-----

Merge tag 'sunxi-dt-for-6.6-1' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux into soc/dt

- Add D1 GPADC node
- Introduce support for OrangePi Zero 3 SBC
- Enable DT overlay support for Allwinner H3 boards

* tag 'sunxi-dt-for-6.6-1' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux:
  arm: dts: Enable device-tree overlay support for sun8i-h3 pi devices
  arm64: dts: allwinner: h616: Add OrangePi Zero 3 board support
  dt-bindings: arm: sunxi: document Orange Pi Zero 3 board name
  arm64: dts: allwinner: h616: Split Orange Pi Zero 2 DT
  riscv: dts: allwinner: d1: Add GPADC node

Link: https://lore.kernel.org/r/20230806180546.GA127039@jernej-laptop
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Arnd Bergmann 2023-08-12 10:46:57 +02:00
commit 594579e42c
7 changed files with 264 additions and 118 deletions

View File

@ -997,4 +997,9 @@ properties:
- const: xunlong,orangepi-zero2 - const: xunlong,orangepi-zero2
- const: allwinner,sun50i-h616 - const: allwinner,sun50i-h616
- description: Xunlong OrangePi Zero 3
items:
- const: xunlong,orangepi-zero3
- const: allwinner,sun50i-h618
additionalProperties: true additionalProperties: true

View File

@ -179,6 +179,25 @@ dtb-$(CONFIG_MACH_SUN7I) += \
sun7i-a20-pcduino3-nano.dtb \ sun7i-a20-pcduino3-nano.dtb \
sun7i-a20-wexler-tab7200.dtb \ sun7i-a20-wexler-tab7200.dtb \
sun7i-a20-wits-pro-a20-dkt.dtb sun7i-a20-wits-pro-a20-dkt.dtb
# Enables support for device-tree overlays for all pis
DTC_FLAGS_sun8i-h3-orangepi-lite := -@
DTC_FLAGS_sun8i-h3-bananapi-m2-plus := -@
DTC_FLAGS_sun8i-h3-nanopi-m1-plus := -@
DTC_FLAGS_sun8i-h3-nanopi-m1 := -@
DTC_FLAGS_sun8i-h3-nanopi-duo2 := -@
DTC_FLAGS_sun8i-h3-orangepi-plus2e := -@
DTC_FLAGS_sun8i-h3-orangepi-one := -@
DTC_FLAGS_sun8i-h3-orangepi-plus := -@
DTC_FLAGS_sun8i-h3-orangepi-2 := -@
DTC_FLAGS_sun8i-h3-orangepi-zero-plus2 := -@
DTC_FLAGS_sun8i-h3-nanopi-neo-air := -@
DTC_FLAGS_sun8i-h3-zeropi := -@
DTC_FLAGS_sun8i-h3-nanopi-neo := -@
DTC_FLAGS_sun8i-h3-nanopi-r1 := -@
DTC_FLAGS_sun8i-h3-orangepi-pc := -@
DTC_FLAGS_sun8i-h3-bananapi-m2-plus-v1.2 := -@
DTC_FLAGS_sun8i-h3-orangepi-pc-plus := -@
dtb-$(CONFIG_MACH_SUN8I) += \ dtb-$(CONFIG_MACH_SUN8I) += \
sun8i-a23-evb.dtb \ sun8i-a23-evb.dtb \
sun8i-a23-gt90h-v4.dtb \ sun8i-a23-gt90h-v4.dtb \

View File

@ -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-h6-tanix-tx6-mini.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-orangepi-zero2.dtb dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-orangepi-zero2.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-x96-mate.dtb dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h616-x96-mate.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h618-orangepi-zero3.dtb

View File

@ -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 = <&reg_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 = <&reg_usb1_vbus>;
status = "okay";
};

View File

@ -5,95 +5,19 @@
/dts-v1/; /dts-v1/;
#include "sun50i-h616.dtsi" #include "sun50i-h616-orangepi-zero.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/leds/common.h>
/ { / {
model = "OrangePi Zero2"; model = "OrangePi Zero2";
compatible = "xunlong,orangepi-zero2", "allwinner,sun50i-h616"; 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 = <&reg_vcc5v>;
enable-active-high;
gpio = <&pio 2 16 GPIO_ACTIVE_HIGH>; /* PC16 */
};
}; };
&ehci1 {
status = "okay";
};
/* USB 2 & 3 are on headers only. */
&emac0 { &emac0 {
pinctrl-names = "default";
pinctrl-0 = <&ext_rgmii_pins>;
phy-mode = "rgmii";
phy-handle = <&ext_rgmii_phy>;
phy-supply = <&reg_dcdce>; phy-supply = <&reg_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 { &mmc0 {
vmmc-supply = <&reg_dcdce>; vmmc-supply = <&reg_dcdce>;
cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
bus-width = <4>;
status = "okay";
};
&ohci1 {
status = "okay";
}; };
&r_rsb { &r_rsb {
@ -211,44 +135,3 @@
vcc-ph-supply = <&reg_aldo1>; vcc-ph-supply = <&reg_aldo1>;
vcc-pi-supply = <&reg_aldo1>; vcc-pi-supply = <&reg_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 = <&reg_usb1_vbus>;
status = "okay";
};

View File

@ -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";
};
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>;
};

View File

@ -144,6 +144,16 @@
#reset-cells = <1>; #reset-cells = <1>;
}; };
gpadc: adc@2009000 {
compatible = "allwinner,sun20i-d1-gpadc";
reg = <0x2009000 0x400>;
clocks = <&ccu CLK_BUS_GPADC>;
resets = <&ccu RST_BUS_GPADC>;
interrupts = <SOC_PERIPHERAL_IRQ(57) IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
#io-channel-cells = <1>;
};
dmic: dmic@2031000 { dmic: dmic@2031000 {
compatible = "allwinner,sun20i-d1-dmic", compatible = "allwinner,sun20i-d1-dmic",
"allwinner,sun50i-h6-dmic"; "allwinner,sun50i-h6-dmic";