arm64: dts: allwinner: A133: add support for Baijie Helper A133 board

Baijie Helper A133 board is a development board around Baijie A133 Core
SBC. Features:

- 1/2/4GiB LPDDR4 DRAM
- 8/16/32GiB eMMC
- AXP707 PMIC
- USB-C OTG port in peripheral mode (via onboard hub)
- 2 USB 2.0 ports
- MicroSD slot and on-board eMMC module
- Gigabit Ethernet
- Bluetooth
- WiFi

Add initial support for both the Helper and Core boards, including UART,
PMU, eMMC, USB, Ethernet, LRADC-connected buttons.

UART1 can only be used for Bluetooth module, but BT-WiFi combo Allwinner
AW869A chip has no mainline driver currently.

Acked-by: Jernej Skrabec <jernej.skrabec@gmail.com>
Signed-off-by: Alexander Sverdlin <alexander.sverdlin@gmail.com>
Link: https://patch.msgid.link/20260623204824.691832-7-alexander.sverdlin@gmail.com
Signed-off-by: Chen-Yu Tsai <wens@kernel.org>
This commit is contained in:
Alexander Sverdlin 2026-06-23 22:48:18 +02:00 committed by Chen-Yu Tsai
parent 8fa3a2bf77
commit 7204944dcb
3 changed files with 346 additions and 0 deletions

View File

@ -24,6 +24,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-sopine-baseboard.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-teres-i.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h64-remix-mini-pc.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a100-allwinner-perf1.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a133-helperboard.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a133-liontron-h-a133l.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-bananapi-m2-plus.dtb
dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-bananapi-m2-plus-v1.2.dtb

View File

@ -0,0 +1,197 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2025 Arm Ltd.
* Copyright (c) 2026 Alexander Sverdlin <alexander.sverdlin@gmail.com>
*/
/dts-v1/;
#include "sun50i-a100.dtsi"
#include "sun50i-a100-cpu-opp.dtsi"
/{
model = "Baijie A133 HelperBoard Core";
compatible = "baijie,helperboard-a133-core",
"allwinner,sun50i-a100";
aliases {
serial1 = &uart1; /* BT module */
};
};
&cpu0 {
cpu-supply = <&reg_dcdc2>;
};
&lradc {
vref-supply = <&reg_aldo1>;
};
&mmc2 {
vmmc-supply = <&reg_dcdc1>;
vqmmc-supply = <&reg_eldo1>;
cap-mmc-highspeed;
cap-mmc-hw-reset;
max-frequency = <100000000>;
non-removable;
bus-width = <8>;
mmc-ddr-1_8v;
mmc-hs200-1_8v;
status = "okay";
};
&pio {
vcc-pb-supply = <&reg_dcdc1>;
vcc-pc-supply = <&reg_eldo1>;
vcc-pd-supply = <&reg_dcdc1>;
vcc-pe-supply = <&reg_dldo2>;
vcc-pf-supply = <&reg_dcdc1>;
vcc-pg-supply = <&reg_dldo1>;
vcc-ph-supply = <&reg_dcdc1>;
/*
* PL0/PL1 are the I2C connection to PMIC, but it would create a
* circular dependency:
* vcc-pl-supply = <&reg_aldo3>;
*/
};
&r_i2c0 {
status = "okay";
axp803: pmic@34 {
compatible = "x-powers,axp803";
reg = <0x34>;
interrupt-parent = <&r_intc>;
interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */
aldoin-supply = <&reg_vdd5v>;
dldoin-supply = <&reg_vdd5v>;
eldoin-supply = <&reg_vdd5v>;
fldoin-supply = <&reg_dcdc5>;
vin1-supply = <&reg_vdd5v>;
vin2-supply = <&reg_vdd5v>;
vin3-supply = <&reg_vdd5v>;
vin4-supply = <&reg_vdd5v>;
vin5-supply = <&reg_vdd5v>;
vin6-supply = <&reg_vdd5v>;
drivevbus-supply = <&reg_vdd5v>;
};
};
#include "axp803.dtsi"
&ac_power_supply {
status = "okay";
};
&reg_aldo1 {
/* PLL + LRADC analog reference */
regulator-always-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-name = "vcc-pll";
};
&reg_aldo2 {
/* LPDDR */
regulator-always-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-name = "vdd18-lpddr";
};
&reg_aldo3 {
/*
* Port L, but linking it to &pio node would create a circular
* dependency because of PL0/PL1 I2C connection to PMIC
*/
regulator-always-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-name = "vcc-pl";
};
&reg_dcdc1 {
/* Besides Port D it also powers analog part of USB IP and SoC I/O */
regulator-always-on;
regulator-min-microvolt = <3300000>;
regulator-max-microvolt = <3300000>;
regulator-name = "vcc-3v3";
};
&reg_dcdc2 {
regulator-always-on;
regulator-min-microvolt = <810000>;
regulator-max-microvolt = <1200000>;
regulator-name = "vdd-cpu";
};
/* DCDC3 is polyphased with DCDC2 */
&reg_dcdc4 {
/* Digital part of USB IP, "System" SoC power rail */
regulator-always-on;
regulator-min-microvolt = <950000>;
regulator-max-microvolt = <950000>;
regulator-name = "vdd-sys";
};
&reg_dcdc5 {
regulator-always-on;
regulator-min-microvolt = <1100000>;
regulator-max-microvolt = <1100000>;
regulator-name = "vcc-dram";
};
/* DCDC6 unused */
&reg_dcdc6 {
status = "disabled";
};
&reg_dldo1 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-name = "vcc-pg";
};
&reg_dldo2 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-name = "vcc-pe";
};
&reg_dldo3 {
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
regulator-name = "avdd-csi";
};
&reg_dldo4 {
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
regulator-name = "afvcc-csi";
};
&reg_eldo1 {
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-name = "vcc-pc";
};
&reg_eldo2 {
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-name = "dvdd-csi";
};
/* ELDO3 unused */
&reg_fldo1 {
/* CPUS power rail */
regulator-always-on;
regulator-min-microvolt = <900000>;
regulator-max-microvolt = <900000>;
regulator-name = "vdd-cpus";
};
/* reg_drivevbus unused */

View File

@ -0,0 +1,148 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/*
* Copyright (c) 2025 Arm Ltd.
* Copyright (c) 2026 Alexander Sverdlin <alexander.sverdlin@gmail.com>
*/
/dts-v1/;
#include "sun50i-a133-helperboard-core.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/linux-event-codes.h>
#include <dt-bindings/leds/common.h>
/{
model = "Baijie HelperBoard A133";
compatible = "baijie,helperboard-a133",
"baijie,helperboard-a133-core",
"allwinner,sun50i-a100";
aliases {
serial0 = &uart0;
};
chosen {
stdout-path = "serial0:115200n8";
};
leds {
compatible = "gpio-leds";
led {
function = LED_FUNCTION_INDICATOR;
color = <LED_COLOR_ID_GREEN>;
gpios = <&pio 7 13 GPIO_ACTIVE_LOW>; /* PH13 */
};
};
reg_vdd5v: vdd5v {
/* board wide 5V supply from a 12V->5V regulator */
compatible = "regulator-fixed";
regulator-name = "vdd-5v";
regulator-min-microvolt = <5000000>;
regulator-max-microvolt = <5000000>;
regulator-always-on;
};
};
&ehci1 {
status = "okay";
};
&emac0 {
pinctrl-names = "default";
pinctrl-0 = <&rgmii0_pins>;
phy-handle = <&rgmii_phy>;
phy-mode = "rgmii-id";
allwinner,rx-delay-ps = <200>;
allwinner,tx-delay-ps = <200>;
status = "okay";
};
&lradc {
wakeup-source;
status = "okay";
button-115 {
label = "K1";
linux,code = <KEY_1>;
channel = <0>;
voltage = <114607>;
};
button-235 {
label = "K2";
linux,code = <KEY_2>;
channel = <0>;
voltage = <234783>;
};
button-360 {
label = "K3";
linux,code = <KEY_3>;
channel = <0>;
voltage = <360000>;
};
button-476 {
label = "K4";
linux,code = <KEY_4>;
channel = <0>;
voltage = <476471>;
};
button-592 {
label = "K5";
linux,code = <KEY_5>;
channel = <0>;
voltage = <591946>;
};
};
&mdio0 {
reset-gpios = <&pio 7 11 GPIO_ACTIVE_LOW>; /* PH11 */
reset-delay-us = <10000>;
reset-post-delay-us = <150000>;
rgmii_phy: ethernet-phy@1 {
compatible = "ethernet-phy-ieee802.3-c22";
reg = <1>;
};
};
&mmc0 {
vmmc-supply = <&reg_dcdc1>;
cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */
bus-width = <4>;
disable-wp;
status = "okay";
};
&ohci1 {
status = "okay";
};
&rgmii0_pins {
drive-strength = <30>;
};
&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_pb_pins>;
status = "okay";
};
&usb_otg {
/*
* Connected to a downstream port of an onboard hub, therefore only
* "peripheral" mode will work here.
*/
dr_mode = "peripheral";
status = "okay";
};
&usbphy {
usb1_vbus-supply = <&reg_vdd5v>;
status = "okay";
};