arm64: dts: rockchip: Add Orange Pi 5 Pro board support

Add device tree for the Xunlong Orange Pi 5 Pro (RK3588S).

- eMMC module, you can optionally solder a SPI NOR in place and turn
 off the eMMC
- PCIe-attached NIC (pcie2x1l2)
- PCIe NVMe slot (pcie2x1l1)
- AP6256 WiFi (BCM43456) via SDIO with mmc-pwrseq
- BCM4345C5 Bluetooth
- es8388 audio
- USB 2.0 and USB 3.0
- HDMI output is enabled
- the second HDMI port connected to the DP bridge is left out for a
  followup set

Vendors schematics are available at:
https://drive.google.com/file/d/1qs1DratHuh7C6J6MEtQIwUsiSrg8qgTi/view

Signed-off-by: Dennis Gilmore <dennis@ausil.us>
Reviewed-by: Alexey Charkov <alchark@gmail.com>
Link: https://patch.msgid.link/20260511025352.106126-5-dennis@ausil.us
Signed-off-by: Heiko Stuebner <heiko@sntech.de>
This commit is contained in:
Dennis Gilmore 2026-05-10 21:53:50 -05:00 committed by Heiko Stuebner
parent b7a806c1c3
commit f47af8ebbe
2 changed files with 359 additions and 0 deletions

View File

@ -226,6 +226,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-nanopi-r6c.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-odroid-m2.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-orangepi-5.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-orangepi-5b.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-orangepi-5-pro.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-orangepi-cm5-base.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-radxa-cm5-io.dtb
dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588s-roc-pc.dtb

View File

@ -0,0 +1,358 @@
// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
/dts-v1/;
#include "rk3588s-orangepi-5.dtsi"
/ {
model = "Xunlong Orange Pi 5 Pro";
compatible = "xunlong,orangepi-5-pro", "rockchip,rk3588s";
aliases {
mmc0 = &sdhci;
mmc1 = &sdmmc;
mmc2 = &sdio;
};
analog-sound {
compatible = "simple-audio-card";
pinctrl-names = "default";
pinctrl-0 = <&hp_detect>;
simple-audio-card,format = "i2s";
simple-audio-card,hp-det-gpios = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>;
simple-audio-card,mclk-fs = <256>;
simple-audio-card,name = "rockchip,es8388";
simple-audio-card,routing =
"Headphones", "LOUT1",
"Headphones", "ROUT1",
"LINPUT1", "Microphone Jack",
"RINPUT1", "Microphone Jack",
"LINPUT2", "Onboard Microphone",
"RINPUT2", "Onboard Microphone";
simple-audio-card,widgets =
"Microphone", "Microphone Jack",
"Microphone", "Onboard Microphone",
"Headphone", "Headphones";
simple-audio-card,cpu {
sound-dai = <&i2s2_2ch>;
};
simple-audio-card,codec {
sound-dai = <&es8388>;
system-clock-frequency = <12288000>;
};
};
pwm-leds {
compatible = "pwm-leds";
led-0 {
color = <LED_COLOR_ID_BLUE>;
function = LED_FUNCTION_STATUS;
linux,default-trigger = "heartbeat";
max-brightness = <255>;
pwms = <&pwm15 0 1000000 0>;
};
led-1 {
color = <LED_COLOR_ID_GREEN>;
function = LED_FUNCTION_ACTIVITY;
linux,default-trigger = "heartbeat";
max-brightness = <255>;
pwms = <&pwm3 0 1000000 0>;
};
};
fan: pwm-fan {
compatible = "pwm-fan";
#cooling-cells = <2>;
cooling-levels = <0 50 100 150 200 255>;
fan-supply = <&vcc5v0_sys>;
pwms = <&pwm2 0 20000000 0>;
};
vcc3v3_eth: regulator-vcc3v3-eth {
compatible = "regulator-fixed";
enable-active-high;
gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&ethernet_en>;
regulator-max-microvolt = <3300000>;
regulator-min-microvolt = <3300000>;
regulator-name = "vcc3v3_eth";
startup-delay-us = <50000>;
vin-supply = <&vcc_3v3_s3>;
};
vcc5v0_otg: regulator-vcc5v0-otg {
compatible = "regulator-fixed";
enable-active-high;
gpios = <&gpio0 RK_PC4 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&vcc5v0_otg_en>;
regulator-max-microvolt = <5000000>;
regulator-min-microvolt = <5000000>;
regulator-name = "vcc5v0_otg";
vin-supply = <&vcc5v0_sys>;
};
sdio_pwrseq: sdio-pwrseq {
compatible = "mmc-pwrseq-simple";
clocks = <&hym8563>;
clock-names = "ext_clock";
pinctrl-names = "default";
pinctrl-0 = <&wifi_enable_h>;
post-power-on-delay-ms = <200>;
reset-gpios = <&gpio0 RK_PD0 GPIO_ACTIVE_LOW>;
};
typea_con: usb-a-connector {
compatible = "usb-a-connector";
data-role = "host";
label = "USB3 Type-A";
power-role = "source";
vbus-supply = <&vcc5v0_otg>;
};
};
&i2c1 {
pinctrl-names = "default";
pinctrl-0 = <&i2c1m4_xfer>;
status = "okay";
};
&i2c3 {
pinctrl-names = "default";
pinctrl-0 = <&i2c3m0_xfer>;
status = "okay";
es8388: audio-codec@11 {
compatible = "everest,es8388", "everest,es8328";
reg = <0x11>;
#sound-dai-cells = <0>;
AVDD-supply = <&vcca_3v3_s0>;
DVDD-supply = <&vcca_1v8_s0>;
HPVDD-supply = <&vcca_3v3_s0>;
PVDD-supply = <&vcca_1v8_s0>;
assigned-clock-rates = <12288000>;
assigned-clocks = <&cru I2S2_2CH_MCLKOUT>;
clocks = <&cru I2S2_2CH_MCLKOUT>;
pinctrl-names = "default";
pinctrl-0 = <&i2s2m1_mclk>;
};
};
&i2c4 {
pinctrl-names = "default";
pinctrl-0 = <&i2c4m3_xfer>;
status = "okay";
};
&i2s2_2ch {
pinctrl-0 = <&i2s2m1_lrck &i2s2m1_sclk
&i2s2m1_sdi &i2s2m1_sdo>;
status = "okay";
};
&package_thermal {
polling-delay = <1000>;
cooling-maps {
map0 {
trip = <&package_fan0>;
cooling-device = <&fan THERMAL_NO_LIMIT 1>;
};
map1 {
trip = <&package_fan1>;
cooling-device = <&fan 2 THERMAL_NO_LIMIT>;
};
};
trips {
package_fan0: package-fan0 {
hysteresis = <2000>;
temperature = <55000>;
type = "active";
};
package_fan1: package-fan1 {
hysteresis = <2000>;
temperature = <65000>;
type = "active";
};
};
};
/* NVMe */
&pcie2x1l1 {
pinctrl-names = "default";
pinctrl-0 = <&pcie30x1m1_1_perstn>, <&pcie30x1m1_1_clkreqn>,
<&pcie30x1m1_1_waken>;
reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>;
supports-clkreq;
vpcie3v3-supply = <&vcc_3v3_s3>;
status = "okay";
};
/* NIC */
&pcie2x1l2 {
pinctrl-names = "default";
pinctrl-0 = <&pcie20x1m0_perstn>, <&pcie20x1m0_clkreqn>,
<&pcie20x1m0_waken>;
reset-gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_HIGH>;
vpcie3v3-supply = <&vcc3v3_eth>;
status = "okay";
};
&pinctrl {
bluetooth {
bt_wake_gpio: bt-wake-pin {
rockchip,pins = <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_down>;
};
bt_wake_host_irq: bt-wake-host-irq {
rockchip,pins = <0 RK_PC5 RK_FUNC_GPIO &pcfg_pull_down>;
};
};
ethernet {
ethernet_en: ethernet-en {
rockchip,pins = <3 RK_PB7 RK_FUNC_GPIO &pcfg_pull_down>;
};
};
usb {
vcc5v0_otg_en: vcc5v0-otg-en {
rockchip,pins = <0 RK_PC4 RK_FUNC_GPIO &pcfg_pull_down>;
};
};
wlan {
wifi_enable_h: wifi-enable-h {
rockchip,pins = <0 RK_PD0 RK_FUNC_GPIO &pcfg_pull_down>;
};
wifi_host_wake_irq: wifi-host-wake-irq {
rockchip,pins = <0 RK_PA0 RK_FUNC_GPIO &pcfg_pull_down>;
};
};
};
&pwm15 {
pinctrl-names = "default";
pinctrl-0 = <&pwm15m2_pins>;
status = "okay";
};
&pwm2 {
pinctrl-names = "default";
pinctrl-0 = <&pwm2m1_pins>;
status = "okay";
};
&pwm3 {
pinctrl-names = "default";
pinctrl-0 = <&pwm3m2_pins>;
status = "okay";
};
&rk806 {
regulators {
vcca_1v8_s0: pldo-reg1 {
regulator-name = "vcca_1v8_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-off-in-suspend;
regulator-suspend-microvolt = <1800000>;
};
};
vcc_1v8_s0: pldo-reg2 {
regulator-name = "vcc_1v8_s0";
regulator-always-on;
regulator-boot-on;
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-state-mem {
regulator-off-in-suspend;
};
};
};
};
&sdhci {
status = "okay";
};
&sdio {
#address-cells = <1>;
#size-cells = <0>;
bus-width = <4>;
cap-sd-highspeed;
cap-sdio-irq;
keep-power-in-suspend;
max-frequency = <150000000>;
mmc-pwrseq = <&sdio_pwrseq>;
no-mmc;
no-sd;
non-removable;
sd-uhs-sdr104;
status = "okay";
ap6256: wifi@1 {
compatible = "brcm,bcm43456-fmac", "brcm,bcm4329-fmac";
reg = <1>;
interrupt-names = "host-wake";
interrupt-parent = <&gpio0>;
interrupts = <RK_PA0 IRQ_TYPE_LEVEL_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&wifi_host_wake_irq>;
};
};
&uart9 {
pinctrl-names = "default";
pinctrl-0 = <&uart9m2_xfer &uart9m2_ctsn &uart9m2_rtsn>;
uart-has-rtscts;
status = "okay";
bluetooth {
compatible = "brcm,bcm4345c5";
clocks = <&hym8563>;
clock-names = "lpo";
device-wakeup-gpios = <&gpio0 RK_PC6 GPIO_ACTIVE_HIGH>;
interrupt-names = "host-wakeup";
interrupt-parent = <&gpio0>;
interrupts = <RK_PC5 IRQ_TYPE_LEVEL_HIGH>;
max-speed = <1500000>;
pinctrl-names = "default";
pinctrl-0 = <&bt_wake_host_irq &bt_wake_gpio>;
shutdown-gpios = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>;
vbat-supply = <&vcc_3v3_s3>;
vddio-supply = <&vcc_1v8_s3>;
};
};
&u2phy0_otg {
phy-supply = <&vcc5v0_otg>;
};
&usb_host0_xhci {
dr_mode = "host";
};
&usbdp_phy0 {
/*
* The USB3 Type-A host connector is wired to PHY lanes 2/3. Lanes 0/1
* are connected to the LT8711UXD DP-to-HDMI bridge on the board.
* dp-lane-mux routes USB3 SuperSpeed to the correct lanes.
*/
rockchip,dp-lane-mux = <0 1>;
};