History

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

Allwinner device tree changes for 7.3 Some changes for old chips/devices and some for recent ones. - A10 PMU interrupt number fixed - A100/A133 gained LRADC - enabled overlay support for sun8i-h2-plus pi boards - A523 family gained consumer IR receiver - H728-based X96QPRO+ gained SPDIF audio output - PinePhone's mpu6050 mount orientation fixed - style fixes New board added: - Baijie Helper A133 - NetCube Systems OpenNMC (dobermann) * tag 'sunxi-dt-for-7.3' of https://git.kernel.org/pub/scm/linux/kernel/git/sunxi/linux: arm64: dts: allwinner: Correct white-space style ARM: dts: allwinner: Correct white-space style arm64: dts: allwinner: a523: Enable SPDIF on X96QPRO+ arm64: dts: allwinner: a523: Add SPDIF output PH pin mux option arm64: dts: allwinner: sun50i-a64-pinephone: Fix mpu6050 mount matrix arm64: dts: allwinner: a523: enable IR on the Avaota A1 arm64: dts: allwinner: a523: enable IR receiver on the X96Q Pro+ arm64: dts: allwinner: a523: add IR receiver nodes media: dt-bindings: allwinner,sun4i-a10-ir: add A523 compatible ARM: dts: allwinner: a10: Fix PMU interrupt ARM: dts: allwinner: enable overlay support for sun8i-h2-plus pi boards ARM: dts: allwinner: add support for NetCube Systems OpenNMC (dobermann) riscv: dts: allwinner: d1s-t113: Add uart4 pinctrl required by NetCube Systems OpenNMC dt-bindings: arm: sunxi: Add NetCube Systems OpenNMC (dobermann) ARM: dts: allwinner: sun8i-h3: Correct indentation arm64: dts: allwinner: A133: add support for Baijie Helper A133 board arm64: dts: allwinner: a100: Add LRADC node dt-bindings: input: sun4i-lradc-keys: Add A100/A133 compatible dt-bindings: arm: sunxi: Add Baijie HelperBoard A133 compatible dt-bindings: vendor-prefixes: Add Shenzhen Baijie Technology Co., Ltd.

Alexandre Belloni committed 3 months ago

Commit ff1d40d2 parents 52b1700 be1454827 files · +627 −20Browse files

Unified · Split

27 files
  1. Documentation/devicetree/bindings/arm/sunxi.yaml +7 −0
  2. Documentation/devicetree/bindings/input/allwinner,sun4i-a10-lradc-keys.yaml +1 −0
  3. Documentation/devicetree/bindings/media/allwinner,sun4i-a10-ir.yaml +5 −3
  4. Documentation/devicetree/bindings/vendor-prefixes.yaml +2 −0
  5. arch/arm/boot/dts/allwinner/Makefile +5 −0
  6. arch/arm/boot/dts/allwinner/sun4i-a10-gemei-g9.dts +1 −1
  7. arch/arm/boot/dts/allwinner/sun4i-a10-inet1.dts +2 −2
  8. arch/arm/boot/dts/allwinner/sun4i-a10.dtsi +1 −1
  9. arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts +2 −2
  10. arch/arm/boot/dts/allwinner/sun8i-t113s-netcube-dobermann.dts +149 −0
  11. arch/arm/boot/dts/allwinner/sun8i-t113s-netcube-nagami.dtsi +1 −1
  12. arch/arm64/boot/dts/allwinner/Makefile +1 −0
  13. arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi +10 −0
  14. arch/arm64/boot/dts/allwinner/sun50i-a133-helperboard-core.dtsi +197 −0
  15. arch/arm64/boot/dts/allwinner/sun50i-a133-helperboard.dts +148 −0
  16. arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi +2 −2
  17. arch/arm64/boot/dts/allwinner/sun50i-a64-sopine.dtsi +1 −1
  18. arch/arm64/boot/dts/allwinner/sun50i-h5-libretech-all-h5-cc.dts +1 −1
  19. arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts +1 −1
  20. arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus.dts +1 −1
  21. arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi +1 −1
  22. arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts +1 −1
  23. arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi +43 −0
  24. arch/arm64/boot/dts/allwinner/sun55i-h728-x96qpro+.dts +30 −0
  25. arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dts +7 −1
  26. arch/arm64/boot/dts/allwinner/sun55i-t527-orangepi-4a.dts +1 −1
  27. arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi +6 −0
Documentation/devicetree/bindings/arm/sunxi.yaml+7−0
@@ -96,6 +96,12 @@ properties: · 95 unmodified lines
9696 - const: allwinner,ba10-tvbox
9797 - const: allwinner,sun4i-a10
9898
99+ - description: Baijie A133 HelperBoard
100+ items:
101+ - const: baijie,helperboard-a133
102+ - const: baijie,helperboard-a133-core
103+ - const: allwinner,sun50i-a100
104+
99105 - description: BananaPi
100106 items:
101107 - const: lemaker,bananapi
@@ -598,6 +604,7 @@ properties: · 496 unmodified lines
598604 - description: NetCube Systems Nagami SoM based boards
599605 items:
600606 - enum:
607+ - netcube,dobermann
601608 - netcube,nagami-basic-carrier
602609 - netcube,nagami-keypad-carrier
603610 - const: netcube,nagami
Documentation/devicetree/bindings/input/allwinner,sun4i-a10-lradc-keys.yaml+1−0
@@ -23,6 +23,7 @@ properties: · 22 unmodified lines
2323 - const: allwinner,sun50i-r329-lradc
2424 - items:
2525 - enum:
26+ - allwinner,sun50i-a100-lradc
2627 - allwinner,sun50i-h616-lradc
2728 - allwinner,sun20i-d1-lradc
2829 - const: allwinner,sun50i-r329-lradc
Documentation/devicetree/bindings/media/allwinner,sun4i-a10-ir.yaml+5−3
@@ -16,9 +16,10 @@ allOf: · 15 unmodified lines
1616 properties:
1717 compatible:
1818 oneOf:
19− - const: allwinner,sun4i-a10-ir
20− - const: allwinner,sun5i-a13-ir
21− - const: allwinner,sun6i-a31-ir
19+ - enum:
20+ - allwinner,sun4i-a10-ir
21+ - allwinner,sun5i-a13-ir
22+ - allwinner,sun6i-a31-ir
2223 - items:
2324 - enum:
2425 - allwinner,suniv-f1c100s-ir
@@ -27,6 +28,7 @@ properties: · 2 unmodified lines
2728 - allwinner,sun50i-a64-ir
2829 - allwinner,sun50i-h6-ir
2930 - allwinner,sun50i-h616-ir
31+ - allwinner,sun55i-a523-ir
3032 - const: allwinner,sun6i-a31-ir
3133
3234 reg:
Documentation/devicetree/bindings/vendor-prefixes.yaml+2−0
@@ -231,6 +231,8 @@ patternProperties: · 230 unmodified lines
231231 description: Azoteq (Pty) Ltd
232232 "^azw,.*":
233233 description: Shenzhen AZW Technology Co., Ltd.
234+ "^baijie,.*":
235+ description: Shenzhen Baijie Technology Co., Ltd.
234236 "^baikal,.*":
235237 description: BAIKAL ELECTRONICS, JSC
236238 "^bananapi,.*":
arch/arm/boot/dts/allwinner/Makefile+5−0
@@ -182,6 +182,9 @@ dtb-$(CONFIG_MACH_SUN7I) += \ · 181 unmodified lines
182182 sun7i-a20-wits-pro-a20-dkt.dtb
183183
184184 # Enables support for device-tree overlays for all pis
185+DTC_FLAGS_sun8i-h2-plus-bananapi-m2-zero := -@
186+DTC_FLAGS_sun8i-h2-plus-libretech-all-h3-cc := -@
187+DTC_FLAGS_sun8i-h2-plus-orangepi-r1 := -@
185188 DTC_FLAGS_sun8i-h2-plus-orangepi-zero := -@
186189 DTC_FLAGS_sun8i-h3-orangepi-lite := -@
187190 DTC_FLAGS_sun8i-h3-bananapi-m2-plus := -@
@@ -201,6 +204,7 @@ DTC_FLAGS_sun8i-h3-orangepi-pc := -@ · 13 unmodified lines
201204 DTC_FLAGS_sun8i-h3-bananapi-m2-plus-v1.2 := -@
202205 DTC_FLAGS_sun8i-h3-orangepi-pc-plus := -@
203206 DTC_FLAGS_sun8i-t113s-netcube-nagami-basic-carrier := -@
207+DTC_FLAGS_sun8i-t113s-netcube-dobermann := -@
204208 DTC_FLAGS_sun8i-v3s-netcube-kumquat := -@
205209 dtb-$(CONFIG_MACH_SUN8I) += \
206210 sun8i-a23-evb.dtb \
@@ -261,6 +265,7 @@ dtb-$(CONFIG_MACH_SUN8I) += \ · 54 unmodified lines
261265 sun8i-s3-lichee-zero-plus.dtb \
262266 sun8i-s3-pinecube.dtb \
263267 sun8i-t113s-mangopi-mq-r-t113.dtb \
268+ sun8i-t113s-netcube-dobermann.dtb \
264269 sun8i-t113s-netcube-nagami-basic-carrier.dtb \
265270 sun8i-t113s-netcube-nagami-keypad-carrier.dtb \
266271 sun8i-t3-cqa3t-bv3.dtb \
arch/arm/boot/dts/allwinner/sun4i-a10-gemei-g9.dts+1−1
@@ -179,7 +179,7 @@ · 178 unmodified lines
179179 };
180180
181181
182−&uart0 {
182+&uart0 {
183183 pinctrl-names = "default";
184184 pinctrl-0 = <&uart0_pb_pins>;
185185 status = "okay";
arch/arm/boot/dts/allwinner/sun4i-a10-inet1.dts+2−2
@@ -78,7 +78,7 @@ · 77 unmodified lines
7878 cpu-supply = <&reg_dcdc2>;
7979 };
8080
81−&ehci0 {
81+&ehci0 {
8282 status = "okay";
8383 };
8484
@@ -157,7 +157,7 @@ · 72 unmodified lines
157157 status = "okay";
158158 };
159159
160−&ohci0 {
160+&ohci0 {
161161 status = "okay";
162162 };
163163
arch/arm/boot/dts/allwinner/sun4i-a10.dtsi+1−1
@@ -185,7 +185,7 @@ · 184 unmodified lines
185185
186186 pmu {
187187 compatible = "arm,cortex-a8-pmu";
188− interrupts = <3>;
188+ interrupts = <66>;
189189 };
190190
191191 reserved-memory {
arch/arm/boot/dts/allwinner/sun8i-h3-nanopi-duo2.dts+2−2
@@ -73,7 +73,7 @@ · 72 unmodified lines
7373 enable-active-high;
7474 gpio = <&r_pio 0 9 GPIO_ACTIVE_HIGH>; /* PL9 */
7575 vin-supply = <&reg_vcc5v0>;
76− };
76+ };
7777
7878 reg_vdd_sys: vdd-sys {
7979 compatible = "regulator-fixed";
@@ -85,7 +85,7 @@ · 5 unmodified lines
8585 enable-active-high;
8686 gpio = <&r_pio 0 8 GPIO_ACTIVE_HIGH>; /* PL8 */
8787 vin-supply = <&reg_vcc5v0>;
88− };
88+ };
8989
9090 wifi_pwrseq: pwrseq {
9191 compatible = "mmc-pwrseq-simple";
arch/arm/boot/dts/allwinner/sun8i-t113s-netcube-dobermann.dts+149−0
@@ -0,0 +1,149 @@
1+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2+/*
3+ * Copyright (C) 2026 Lukas Schmid <lukas.schmid@netcube.li>
4+ */
5+
6+/dts-v1/;
7+#include "sun8i-t113s-netcube-nagami.dtsi"
8+
9+#include <dt-bindings/leds/common.h>
10+
11+/ {
12+ model = "NetCube Systems OpenNMC (dobermann)";
13+ compatible = "netcube,dobermann", "netcube,nagami",
14+ "allwinner,sun8i-t113s";
15+
16+ aliases {
17+ serial2 = &uart4; // UART on SmartSlot
18+ rtc0 = &ds3232;
19+ rtc1 = &rtc; // not battery backed
20+ };
21+
22+ leds {
23+ compatible = "gpio-leds";
24+
25+ led_heartbeat_green: led-heartbeat-green {
26+ gpios = <&pio 6 14 GPIO_ACTIVE_HIGH>; /* PG14 */
27+ linux,default-trigger = "heartbeat";
28+ color = <LED_COLOR_ID_GREEN>;
29+ function = LED_FUNCTION_HEARTBEAT;
30+ };
31+ };
32+};
33+
34+&ehci0 {
35+ status = "okay";
36+};
37+
38+&ehci1 {
39+ status = "okay";
40+};
41+
42+&i2c2 {
43+ status = "okay";
44+
45+ tusb320: typec@60 {
46+ compatible = "ti,tusb320";
47+ reg = <0x60>;
48+ interrupts-extended = <&pio 3 22 IRQ_TYPE_LEVEL_LOW>; /* PD22 */
49+ };
50+
51+ ds3232: rtc@68 {
52+ compatible = "dallas,ds3232";
53+ reg = <0x68>;
54+ };
55+};
56+
57+/* microSD Card Slot on the board */
58+&mmc0 {
59+ vmmc-supply = <&reg_vcc3v3>;
60+ disable-wp;
61+ bus-width = <4>;
62+ cd-gpios = <&pio 6 15 GPIO_ACTIVE_LOW>; /* PG15 */
63+ status = "okay";
64+};
65+
66+&ohci0 {
67+ status = "okay";
68+};
69+
70+&ohci1 {
71+ status = "okay";
72+};
73+
74+&pio {
75+ gpio-line-names = "", "", "", "", // PA
76+ "", "", "", "",
77+ "", "", "", "",
78+ "", "", "", "",
79+ "", "", "", "",
80+ "", "", "", "",
81+ "", "", "", "",
82+ "", "", "", "",
83+ "", "", "SMART_TX", "SMART_RX", // PB
84+ "EXT_IO3", "EXT_IO2", "CONSOLE_TX", "CONSOLE_RX",
85+ "", "", "", "",
86+ "", "", "", "",
87+ "", "", "", "",
88+ "", "", "", "",
89+ "", "", "", "",
90+ "", "", "", "",
91+ "", "", "eMMC_CLK", "eMMC_CMD", // PC
92+ "eMMC_D2", "eMMC_D1", "eMMC_D0", "eMMC_D3",
93+ "", "", "", "",
94+ "", "", "", "",
95+ "", "", "", "",
96+ "", "", "", "",
97+ "", "", "", "",
98+ "", "", "", "",
99+ "", "", "", "", // PD
100+ "", "", "", "",
101+ "", "USB_SEC_EN", "EXT_SPI_nCS", "EXT_SPI_SCK",
102+ "EXT_SPI_MOSI", "EXT_SPI_MISO", "EXT_IO5", "EXT_IO4",
103+ "SMART_SEL", "", "", "",
104+ "I2C2_SCL", "I2C2_SDA", "TUSB320_nINT", "",
105+ "", "", "", "",
106+ "", "", "", "",
107+ "ETH_CRSDV", "ETH_RXD0", "ETH_RXD1", "ETH_TXCK", // PE
108+ "ETH_TXD0", "ETH_TXD1", "ETH_TXEN", "",
109+ "ETH_MDC", "ETH_MDIO", "I2C3_nINT", "",
110+ "", "", "", "",
111+ "", "", "", "",
112+ "", "", "", "",
113+ "", "", "", "",
114+ "", "", "", "",
115+ "uSD_D1", "uSD_D0", "uSD_CLK", "uSD_CMD", // PF
116+ "uSD_D3", "uSD_D2", "TUSB320_ID", "",
117+ "", "", "", "",
118+ "", "", "", "",
119+ "", "", "", "",
120+ "", "", "", "",
121+ "", "", "", "",
122+ "", "", "", "",
123+ "ESP_CLK", "ESP_CMD", "ESP_D0", "ESP_D1", // PG
124+ "ESP_D2", "ESP_D3", "ESP_TXD", "ESP_RXD",
125+ "ESP_nBOOT", "ESP_nRST", "I2C3_SCL", "I2C3_SDA",
126+ "EXT_IO1", "EXT_IO0", "LED_HEARTBEAT", "SD_DETECT",
127+ "", "", "", "",
128+ "", "", "", "",
129+ "", "", "", "",
130+ "", "", "", "";
131+};
132+
133+/* SmartSlot serial */
134+&uart4 {
135+ pinctrl-0 = <&uart4_pb_pins>;
136+ pinctrl-names = "default";
137+ status = "okay";
138+};
139+
140+&usb_otg {
141+ extcon = <&tusb320 0>;
142+ dr_mode = "otg";
143+ status = "okay";
144+};
145+
146+&usbphy {
147+ usb0_id_det-gpios = <&pio 5 6 GPIO_ACTIVE_HIGH>; /* PF6 */
148+ status = "okay";
149+};
arch/arm/boot/dts/allwinner/sun8i-t113s-netcube-nagami.dtsi+1−1
@@ -42,7 +42,7 @@ · 41 unmodified lines
4242 };
4343
4444 /* USB0 MUX to switch connect to Card-Edge only after BootROM */
45− usb0_sec_mux: mux-controller{
45+ usb0_sec_mux: mux-controller {
4646 compatible = "gpio-mux";
4747 #mux-control-cells = <0>;
4848 mux-gpios = <&pio 3 9 GPIO_ACTIVE_HIGH>; /* PD9 */
arch/arm64/boot/dts/allwinner/Makefile+1−0
@@ -24,6 +24,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-sopine-baseboard.dtb · 23 unmodified lines
2424 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-teres-i.dtb
2525 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h64-remix-mini-pc.dtb
2626 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a100-allwinner-perf1.dtb
27+dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a133-helperboard.dtb
2728 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a133-liontron-h-a133l.dtb
2829 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-bananapi-m2-plus.dtb
2930 dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-bananapi-m2-plus-v1.2.dtb
arch/arm64/boot/dts/allwinner/sun50i-a100.dtsi+10−0
@@ -466,6 +466,16 @@ · 465 unmodified lines
466466 #thermal-sensor-cells = <1>;
467467 };
468468
469+ lradc: lradc@5070800 {
470+ compatible = "allwinner,sun50i-a100-lradc",
471+ "allwinner,sun50i-r329-lradc";
472+ reg = <0x05070800 0x400>;
473+ interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
474+ clocks = <&ccu CLK_BUS_LRADC>;
475+ resets = <&ccu RST_BUS_LRADC>;
476+ status = "disabled";
477+ };
478+
469479 usb_otg: usb@5100000 {
470480 compatible = "allwinner,sun50i-a100-musb",
471481 "allwinner,sun8i-a33-musb";
arch/arm64/boot/dts/allwinner/sun50i-a133-helperboard-core.dtsi+197−0
@@ -0,0 +1,197 @@
1+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2+/*
3+ * Copyright (c) 2025 Arm Ltd.
4+ * Copyright (c) 2026 Alexander Sverdlin <alexander.sverdlin@gmail.com>
5+ */
6+
7+/dts-v1/;
8+
9+#include "sun50i-a100.dtsi"
10+#include "sun50i-a100-cpu-opp.dtsi"
11+
12+/{
13+ model = "Baijie A133 HelperBoard Core";
14+ compatible = "baijie,helperboard-a133-core",
15+ "allwinner,sun50i-a100";
16+
17+ aliases {
18+ serial1 = &uart1; /* BT module */
19+ };
20+};
21+
22+&cpu0 {
23+ cpu-supply = <&reg_dcdc2>;
24+};
25+
26+&lradc {
27+ vref-supply = <&reg_aldo1>;
28+};
29+
30+&mmc2 {
31+ vmmc-supply = <&reg_dcdc1>;
32+ vqmmc-supply = <&reg_eldo1>;
33+ cap-mmc-highspeed;
34+ cap-mmc-hw-reset;
35+ max-frequency = <100000000>;
36+ non-removable;
37+ bus-width = <8>;
38+ mmc-ddr-1_8v;
39+ mmc-hs200-1_8v;
40+ status = "okay";
41+};
42+
43+&pio {
44+ vcc-pb-supply = <&reg_dcdc1>;
45+ vcc-pc-supply = <&reg_eldo1>;
46+ vcc-pd-supply = <&reg_dcdc1>;
47+ vcc-pe-supply = <&reg_dldo2>;
48+ vcc-pf-supply = <&reg_dcdc1>;
49+ vcc-pg-supply = <&reg_dldo1>;
50+ vcc-ph-supply = <&reg_dcdc1>;
51+ /*
52+ * PL0/PL1 are the I2C connection to PMIC, but it would create a
53+ * circular dependency:
54+ * vcc-pl-supply = <&reg_aldo3>;
55+ */
56+};
57+
58+&r_i2c0 {
59+ status = "okay";
60+
61+ axp803: pmic@34 {
62+ compatible = "x-powers,axp803";
63+ reg = <0x34>;
64+ interrupt-parent = <&r_intc>;
65+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
66+ x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */
67+ aldoin-supply = <&reg_vdd5v>;
68+ dldoin-supply = <&reg_vdd5v>;
69+ eldoin-supply = <&reg_vdd5v>;
70+ fldoin-supply = <&reg_dcdc5>;
71+ vin1-supply = <&reg_vdd5v>;
72+ vin2-supply = <&reg_vdd5v>;
73+ vin3-supply = <&reg_vdd5v>;
74+ vin4-supply = <&reg_vdd5v>;
75+ vin5-supply = <&reg_vdd5v>;
76+ vin6-supply = <&reg_vdd5v>;
77+ drivevbus-supply = <&reg_vdd5v>;
78+ };
79+};
80+
81+#include "axp803.dtsi"
82+
83+&ac_power_supply {
84+ status = "okay";
85+};
86+
87+&reg_aldo1 {
88+ /* PLL + LRADC analog reference */
89+ regulator-always-on;
90+ regulator-min-microvolt = <1800000>;
91+ regulator-max-microvolt = <1800000>;
92+ regulator-name = "vcc-pll";
93+};
94+
95+&reg_aldo2 {
96+ /* LPDDR */
97+ regulator-always-on;
98+ regulator-min-microvolt = <1800000>;
99+ regulator-max-microvolt = <1800000>;
100+ regulator-name = "vdd18-lpddr";
101+};
102+
103+&reg_aldo3 {
104+ /*
105+ * Port L, but linking it to &pio node would create a circular
106+ * dependency because of PL0/PL1 I2C connection to PMIC
107+ */
108+ regulator-always-on;
109+ regulator-min-microvolt = <1800000>;
110+ regulator-max-microvolt = <1800000>;
111+ regulator-name = "vcc-pl";
112+};
113+
114+&reg_dcdc1 {
115+ /* Besides Port D it also powers analog part of USB IP and SoC I/O */
116+ regulator-always-on;
117+ regulator-min-microvolt = <3300000>;
118+ regulator-max-microvolt = <3300000>;
119+ regulator-name = "vcc-3v3";
120+};
121+
122+&reg_dcdc2 {
123+ regulator-always-on;
124+ regulator-min-microvolt = <810000>;
125+ regulator-max-microvolt = <1200000>;
126+ regulator-name = "vdd-cpu";
127+};
128+
129+/* DCDC3 is polyphased with DCDC2 */
130+
131+&reg_dcdc4 {
132+ /* Digital part of USB IP, "System" SoC power rail */
133+ regulator-always-on;
134+ regulator-min-microvolt = <950000>;
135+ regulator-max-microvolt = <950000>;
136+ regulator-name = "vdd-sys";
137+};
138+
139+&reg_dcdc5 {
140+ regulator-always-on;
141+ regulator-min-microvolt = <1100000>;
142+ regulator-max-microvolt = <1100000>;
143+ regulator-name = "vcc-dram";
144+};
145+
146+/* DCDC6 unused */
147+&reg_dcdc6 {
148+ status = "disabled";
149+};
150+
151+&reg_dldo1 {
152+ regulator-min-microvolt = <1800000>;
153+ regulator-max-microvolt = <1800000>;
154+ regulator-name = "vcc-pg";
155+};
156+
157+&reg_dldo2 {
158+ regulator-min-microvolt = <1800000>;
159+ regulator-max-microvolt = <1800000>;
160+ regulator-name = "vcc-pe";
161+};
162+
163+&reg_dldo3 {
164+ regulator-min-microvolt = <2800000>;
165+ regulator-max-microvolt = <2800000>;
166+ regulator-name = "avdd-csi";
167+};
168+
169+&reg_dldo4 {
170+ regulator-min-microvolt = <2800000>;
171+ regulator-max-microvolt = <2800000>;
172+ regulator-name = "afvcc-csi";
173+};
174+
175+&reg_eldo1 {
176+ regulator-min-microvolt = <1800000>;
177+ regulator-max-microvolt = <1800000>;
178+ regulator-name = "vcc-pc";
179+};
180+
181+&reg_eldo2 {
182+ regulator-min-microvolt = <1200000>;
183+ regulator-max-microvolt = <1200000>;
184+ regulator-name = "dvdd-csi";
185+};
186+
187+/* ELDO3 unused */
188+
189+&reg_fldo1 {
190+ /* CPUS power rail */
191+ regulator-always-on;
192+ regulator-min-microvolt = <900000>;
193+ regulator-max-microvolt = <900000>;
194+ regulator-name = "vdd-cpus";
195+};
196+
197+/* reg_drivevbus unused */
arch/arm64/boot/dts/allwinner/sun50i-a133-helperboard.dts+148−0
@@ -0,0 +1,148 @@
1+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2+/*
3+ * Copyright (c) 2025 Arm Ltd.
4+ * Copyright (c) 2026 Alexander Sverdlin <alexander.sverdlin@gmail.com>
5+ */
6+
7+/dts-v1/;
8+
9+#include "sun50i-a133-helperboard-core.dtsi"
10+
11+#include <dt-bindings/gpio/gpio.h>
12+#include <dt-bindings/input/linux-event-codes.h>
13+#include <dt-bindings/leds/common.h>
14+
15+/{
16+ model = "Baijie HelperBoard A133";
17+ compatible = "baijie,helperboard-a133",
18+ "baijie,helperboard-a133-core",
19+ "allwinner,sun50i-a100";
20+
21+ aliases {
22+ serial0 = &uart0;
23+ };
24+
25+ chosen {
26+ stdout-path = "serial0:115200n8";
27+ };
28+
29+ leds {
30+ compatible = "gpio-leds";
31+
32+ led {
33+ function = LED_FUNCTION_INDICATOR;
34+ color = <LED_COLOR_ID_GREEN>;
35+ gpios = <&pio 7 13 GPIO_ACTIVE_LOW>; /* PH13 */
36+ };
37+ };
38+
39+ reg_vdd5v: vdd5v {
40+ /* board wide 5V supply from a 12V->5V regulator */
41+ compatible = "regulator-fixed";
42+ regulator-name = "vdd-5v";
43+ regulator-min-microvolt = <5000000>;
44+ regulator-max-microvolt = <5000000>;
45+ regulator-always-on;
46+ };
47+};
48+
49+&ehci1 {
50+ status = "okay";
51+};
52+
53+&emac0 {
54+ pinctrl-names = "default";
55+ pinctrl-0 = <&rgmii0_pins>;
56+ phy-handle = <&rgmii_phy>;
57+ phy-mode = "rgmii-id";
58+ allwinner,rx-delay-ps = <200>;
59+ allwinner,tx-delay-ps = <200>;
60+ status = "okay";
61+};
62+
63+&lradc {
64+ wakeup-source;
65+ status = "okay";
66+
67+ button-115 {
68+ label = "K1";
69+ linux,code = <KEY_1>;
70+ channel = <0>;
71+ voltage = <114607>;
72+ };
73+
74+ button-235 {
75+ label = "K2";
76+ linux,code = <KEY_2>;
77+ channel = <0>;
78+ voltage = <234783>;
79+ };
80+
81+ button-360 {
82+ label = "K3";
83+ linux,code = <KEY_3>;
84+ channel = <0>;
85+ voltage = <360000>;
86+ };
87+
88+ button-476 {
89+ label = "K4";
90+ linux,code = <KEY_4>;
91+ channel = <0>;
92+ voltage = <476471>;
93+ };
94+
95+ button-592 {
96+ label = "K5";
97+ linux,code = <KEY_5>;
98+ channel = <0>;
99+ voltage = <591946>;
100+ };
101+};
102+
103+&mdio0 {
104+ reset-gpios = <&pio 7 11 GPIO_ACTIVE_LOW>; /* PH11 */
105+ reset-delay-us = <10000>;
106+ reset-post-delay-us = <150000>;
107+
108+ rgmii_phy: ethernet-phy@1 {
109+ compatible = "ethernet-phy-ieee802.3-c22";
110+ reg = <1>;
111+ };
112+};
113+
114+&mmc0 {
115+ vmmc-supply = <&reg_dcdc1>;
116+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
117+ bus-width = <4>;
118+ disable-wp;
119+ status = "okay";
120+};
121+
122+&ohci1 {
123+ status = "okay";
124+};
125+
126+&rgmii0_pins {
127+ drive-strength = <30>;
128+};
129+
130+&uart0 {
131+ pinctrl-names = "default";
132+ pinctrl-0 = <&uart0_pb_pins>;
133+ status = "okay";
134+};
135+
136+&usb_otg {
137+ /*
138+ * Connected to a downstream port of an onboard hub, therefore only
139+ * "peripheral" mode will work here.
140+ */
141+ dr_mode = "peripheral";
142+ status = "okay";
143+};
144+
145+&usbphy {
146+ usb1_vbus-supply = <&reg_vdd5v>;
147+ status = "okay";
148+};
arch/arm64/boot/dts/allwinner/sun50i-a64-pinephone.dtsi+2−2
@@ -230,8 +230,8 @@ · 229 unmodified lines
230230 interrupts = <7 5 IRQ_TYPE_EDGE_RISING>; /* PH5 */
231231 vdd-supply = <&reg_dldo1>;
232232 vddio-supply = <&reg_dldo1>;
233− mount-matrix = "0", "1", "0",
234− "-1", "0", "0",
233+ mount-matrix = "0", "-1", "0",
234+ "1", "0", "0",
235235 "0", "0", "1";
236236 };
237237 };
arch/arm64/boot/dts/allwinner/sun50i-a64-sopine.dtsi+1−1
@@ -49,7 +49,7 @@ · 48 unmodified lines
4949 };
5050 };
5151
52−&spi0 {
52+&spi0 {
5353 status = "okay";
5454
5555 flash@0 {
arch/arm64/boot/dts/allwinner/sun50i-h5-libretech-all-h5-cc.dts+1−1
@@ -48,7 +48,7 @@ · 47 unmodified lines
4848 };
4949 };
5050
51−&spi0 {
51+&spi0 {
5252 status = "okay";
5353
5454 flash@0 {
arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-pc2.dts+1−1
@@ -191,7 +191,7 @@ · 190 unmodified lines
191191 };
192192 };
193193
194−&spi0 {
194+&spi0 {
195195 status = "okay";
196196
197197 flash@0 {
arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-zero-plus.dts+1−1
@@ -103,7 +103,7 @@ · 102 unmodified lines
103103 };
104104 };
105105
106−&spi0 {
106+&spi0 {
107107 status = "okay";
108108
109109 flash@0 {
arch/arm64/boot/dts/allwinner/sun50i-h616-orangepi-zero.dtsi+1−1
@@ -99,7 +99,7 @@ · 98 unmodified lines
9999 status = "okay";
100100 };
101101
102−&spi0 {
102+&spi0 {
103103 status = "okay";
104104 pinctrl-names = "default";
105105 pinctrl-0 = <&spi0_pins>, <&spi0_cs0_pin>;
arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dts+1−1
@@ -149,7 +149,7 @@ · 148 unmodified lines
149149 };
150150 };
151151
152−&spi0 {
152+&spi0 {
153153 status = "okay";
154154 pinctrl-names = "default";
155155 pinctrl-0 = <&spi0_pins>, <&spi0_cs0_pin>;
arch/arm64/boot/dts/allwinner/sun55i-a523.dtsi+43−0
@@ -155,6 +155,13 @@ · 154 unmodified lines
155155 bias-disable;
156156 };
157157
158+ /omit-if-no-ref/
159+ ir_rx_pin: ir-rx-pi-pin {
160+ pins = "PI8";
161+ allwinner,pinmux = <3>;
162+ function = "cir_rx";
163+ };
164+
158165 /omit-if-no-ref/
159166 ledc_ph_pin: ledc-ph-pin {
160167 pins = "PH19";
@@ -216,6 +223,13 @@ · 55 unmodified lines
216223 allwinner,pinmux = <2>;
217224 };
218225
226+ /omit-if-no-ref/
227+ spdif_out_ph_pin: spdif-ph-pin {
228+ pins = "PH7";
229+ function = "spdif";
230+ allwinner,pinmux = <4>;
231+ };
232+
219233 /omit-if-no-ref/
220234 spdif_out_pi_pin: spdif-pi-pin {
221235 pins = "PI10";
@@ -327,6 +341,17 @@ · 105 unmodified lines
327341 #reset-cells = <1>;
328342 };
329343
344+ ir: ir@2005000 {
345+ compatible = "allwinner,sun55i-a523-ir",
346+ "allwinner,sun6i-a31-ir";
347+ reg = <0x02005000 0x400>;
348+ interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
349+ clocks = <&ccu CLK_BUS_IR_RX>, <&ccu CLK_IR_RX>;
350+ clock-names = "apb", "ir";
351+ resets = <&ccu RST_BUS_IR_RX>;
352+ status = "disabled";
353+ };
354+
330355 ledc: led-controller@2008000 {
331356 compatible = "allwinner,sun55i-a523-ledc",
332357 "allwinner,sun50i-a100-ledc";
@@ -927,6 +952,24 @@ · 594 unmodified lines
927952 allwinner,pinmux = <2>;
928953 function = "r_i2c0";
929954 };
955+
956+ /omit-if-no-ref/
957+ r_ir_rx_pin: r-ir-rx-pl-pin {
958+ pins = "PL11";
959+ allwinner,pinmux = <2>;
960+ function = "s_cir_rx";
961+ };
962+ };
963+
964+ r_ir: ir@7040000 {
965+ compatible = "allwinner,sun55i-a523-ir",
966+ "allwinner,sun6i-a31-ir";
967+ reg = <0x07040000 0x400>;
968+ interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
969+ clocks = <&r_ccu CLK_BUS_R_IR_RX>, <&r_ccu CLK_R_IR_RX>;
970+ clock-names = "apb", "ir";
971+ resets = <&r_ccu RST_BUS_R_IR_RX>;
972+ status = "disabled";
930973 };
931974
932975 pck600: power-controller@7060000 {
arch/arm64/boot/dts/allwinner/sun55i-h728-x96qpro+.dts+30−0
@@ -44,6 +44,24 @@ · 43 unmodified lines
4444 vin-supply = <&reg_vcc5v>;
4545 regulator-always-on;
4646 };
47+
48+ sound-spdif {
49+ compatible = "simple-audio-card";
50+ simple-audio-card,name = "spdif-out";
51+
52+ simple-audio-card,cpu {
53+ sound-dai = <&spdif>;
54+ };
55+
56+ simple-audio-card,codec {
57+ sound-dai = <&spdif_out>;
58+ };
59+ };
60+
61+ spdif_out: spdif-out {
62+ compatible = "linux,spdif-dit";
63+ #sound-dai-cells = <0>;
64+ };
4765 };
4866
4967 &ehci0 {
@@ -266,6 +284,12 @@ · 216 unmodified lines
266284 };
267285 };
268286
287+&r_ir {
288+ pinctrl-names = "default";
289+ pinctrl-0 = <&r_ir_rx_pin>;
290+ status = "okay";
291+};
292+
269293 &r_pio {
270294 /*
271295 * Specifying the supply would create a circular dependency.
@@ -275,6 +299,12 @@ · 3 unmodified lines
275299 vcc-pm-supply = <&reg_aldo3>;
276300 };
277301
302+&spdif {
303+ pinctrl-names = "default";
304+ pinctrl-0 = <&spdif_out_ph_pin>;
305+ status = "okay";
306+};
307+
278308 &uart0 {
279309 pinctrl-names = "default";
280310 pinctrl-0 = <&uart0_pb_pins>;
arch/arm64/boot/dts/allwinner/sun55i-t527-avaota-a1.dts+7−1
@@ -100,6 +100,12 @@ · 99 unmodified lines
100100 status = "okay";
101101 };
102102
103+&ir {
104+ pinctrl-names = "default";
105+ pinctrl-0 = <&ir_rx_pin>;
106+ status = "okay";
107+};
108+
103109 &ledc {
104110 pinctrl-names = "default";
105111 pinctrl-0 = <&ledc_ph_pin>;
@@ -403,7 +409,7 @@ · 297 unmodified lines
403409 assigned-clock-rates = <32768>;
404410 };
405411
406−&spi0 {
412+&spi0 {
407413 pinctrl-names = "default";
408414 pinctrl-0 = <&spi0_pj_pins>, <&spi0_cs0_pj_pin>,
409415 <&spi0_hold_pj_pin>, <&spi0_wp_pj_pin>;
arch/arm64/boot/dts/allwinner/sun55i-t527-orangepi-4a.dts+1−1
@@ -400,7 +400,7 @@ · 399 unmodified lines
400400 assigned-clock-rates = <32768>;
401401 };
402402
403−&spi0 {
403+&spi0 {
404404 pinctrl-names = "default";
405405 pinctrl-0 = <&spi0_pc_pins>, <&spi0_cs0_pc_pin>;
406406 status = "okay";
arch/riscv/boot/dts/allwinner/sunxi-d1s-t113.dtsi+6−0
@@ -191,6 +191,12 @@ · 190 unmodified lines
191191 pins = "PB6", "PB7";
192192 function = "uart3";
193193 };
194+
195+ /omit-if-no-ref/
196+ uart4_pb_pins: uart4-pb-pins {
197+ pins = "PB2", "PB3";
198+ function = "uart4";
199+ };
194200 };
195201
196202 ccu: clock-controller@2001000 {