* [PATCH v6 0/3] Add support for Orange Pi 5 Pro
@ 2026-04-11 2:47 dennis
2026-04-11 2:47 ` [PATCH v6 1/3] dt-bindings: arm: rockchip: Add " dennis
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: dennis @ 2026-04-11 2:47 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner
Cc: FUKAUMI Naoki, Hsun Lai, Jonas Karlman, Chaoyi Chen, John Clark,
Michael Opdenacker, Quentin Schulz, Andrew Lunn, Chukun Pan,
Alexey Charkov, Peter Robinson, Dennis Gilmore, Michael Riesch,
Mykola Kvach, Jimmy Hon, devicetree, linux-arm-kernel,
linux-rockchip, linux-kernel
From: Dennis Gilmore <dennis@ausil.us>
This series adds initial support for Orange Pi 5 Pro. The PCIe attached network
driver(dwmac-motorcomm) was just added.
The series was tested against Linux 7.0-rc7
Please take a look.
Thank you,
Dennis Gilmore
Changes in v6:
- Move the shared configs for the Orange Pi 5 and Orange Pi 5b from each
devices dts to a shared rk3588s-orangepi-5-5b.dtsi to avoid duplication
- Remove empty ports subnodeis from typea_con
- Move i2s2m1_mclk pinctrl from &i2s2 to the es8388 codec node
- Add dp-con, dp0_out, dp0_in, and vp1 nodes, plus the vcc3v3_dp regulator
in order to get the second HDMI port working via its transparent
LT8711UXD DP to HDMI bridge
- link to v5 https://lore.kernel.org/linux-devicetree/20260401010707.2584962-1-dennis@ausil.us/
Changes in v5:
- define a connector node for Type-A port, and list the regulator as its VBUS supply explicitly.
- Requires https://lore.kernel.org/all/20260217-typea-vbus-v1-1-657b4e55a4c2@flipper.net/
- link to v4 https://lore.kernel.org/linux-devicetree/20260310031002.3921234-1-dennis@ausil.us/
Changes in v4:
- rename vcc3v3_pcie20 copied from rk3588s-orangepi-5.dts to vcc3v3_phy1 to match the schematic
- use vcc_3v3_s3 as the supply not vcc5v0_sys for PCIe
- remove the definition for vcc3v3_pcie_m2 as it does not really exist
as a regulator
- link to v3 https://lore.kernel.org/linux-devicetree/20260306024634.239614-1-dennis@ausil.us/
Changes in v3:
- moved leds from gpio-leds to pwm-leds
- remove disable-wp from sdio
- rename vcc3v3_pcie_eth regulator to vcc3v3_pcie_m2 to reflect the
purppose
- actually clean up the delete lines and comments missed in v2
- link to v2 https://lore.kernel.org/linux-devicetree/20260304025521.210377-1-dennis@ausil.us/
Changes in v2:
- moved items not shared by orangepi 5/5b/5 Pro from dtsi to 5 and 5b
dts files
- removed all the comments and deleted properties from 5 Pro dts
- Link to v1 https://lore.kernel.org/linux-devicetree/20260228205418.2944620-1-dennis@ausil.us/
Dennis Gilmore (3):
dt-bindings: arm: rockchip: Add Orange Pi 5 Pro
arm64: dts: rockchip: refactor items from Orange Pi 5/b to prep for
Pro
arm64: dts: rockchip: Add Orange Pi 5 Pro board support
.../devicetree/bindings/arm/rockchip.yaml | 1 +
.../display/rockchip/rockchip,dw-dp.yaml | 7 +
arch/arm64/boot/dts/rockchip/Makefile | 1 +
.../dts/rockchip/rk3588s-orangepi-5-5b.dtsi | 192 ++++++++++
.../dts/rockchip/rk3588s-orangepi-5-pro.dts | 352 ++++++++++++++++++
.../boot/dts/rockchip/rk3588s-orangepi-5.dts | 6 +-
.../boot/dts/rockchip/rk3588s-orangepi-5.dtsi | 198 +---------
.../boot/dts/rockchip/rk3588s-orangepi-5b.dts | 2 +-
drivers/gpu/drm/bridge/synopsys/dw-dp.c | 12 +
9 files changed, 582 insertions(+), 189 deletions(-)
create mode 100644 arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5-5b.dtsi
create mode 100644 arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5-pro.dts
--
2.53.0
^ permalink raw reply [flat|nested] 5+ messages in thread* [PATCH v6 1/3] dt-bindings: arm: rockchip: Add Orange Pi 5 Pro 2026-04-11 2:47 [PATCH v6 0/3] Add support for Orange Pi 5 Pro dennis @ 2026-04-11 2:47 ` dennis 2026-04-11 2:47 ` [PATCH v6 2/3] arm64: dts: rockchip: refactor items from Orange Pi 5/b to prep for Pro dennis 2026-04-11 2:47 ` [PATCH v6 3/3] arm64: dts: rockchip: Add Orange Pi 5 Pro board support dennis 2 siblings, 0 replies; 5+ messages in thread From: dennis @ 2026-04-11 2:47 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner Cc: FUKAUMI Naoki, Hsun Lai, Jonas Karlman, Chaoyi Chen, John Clark, Michael Opdenacker, Quentin Schulz, Andrew Lunn, Chukun Pan, Alexey Charkov, Peter Robinson, Dennis Gilmore, Michael Riesch, Mykola Kvach, Jimmy Hon, devicetree, linux-arm-kernel, linux-rockchip, linux-kernel, Krzysztof Kozlowski From: Dennis Gilmore <dennis@ausil.us> Add compatible string for the Orange Pi 5 Pro. Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com> Signed-off-by: Dennis Gilmore <dennis@ausil.us> --- Documentation/devicetree/bindings/arm/rockchip.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/arm/rockchip.yaml b/Documentation/devicetree/bindings/arm/rockchip.yaml index ae77ded9fe47..3c6b83a84463 100644 --- a/Documentation/devicetree/bindings/arm/rockchip.yaml +++ b/Documentation/devicetree/bindings/arm/rockchip.yaml @@ -1320,6 +1320,7 @@ properties: items: - enum: - xunlong,orangepi-5 + - xunlong,orangepi-5-pro - xunlong,orangepi-5b - const: rockchip,rk3588s -- 2.53.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v6 2/3] arm64: dts: rockchip: refactor items from Orange Pi 5/b to prep for Pro 2026-04-11 2:47 [PATCH v6 0/3] Add support for Orange Pi 5 Pro dennis 2026-04-11 2:47 ` [PATCH v6 1/3] dt-bindings: arm: rockchip: Add " dennis @ 2026-04-11 2:47 ` dennis 2026-04-11 11:58 ` Jimmy Hon 2026-04-11 2:47 ` [PATCH v6 3/3] arm64: dts: rockchip: Add Orange Pi 5 Pro board support dennis 2 siblings, 1 reply; 5+ messages in thread From: dennis @ 2026-04-11 2:47 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner Cc: FUKAUMI Naoki, Hsun Lai, Jonas Karlman, Chaoyi Chen, John Clark, Michael Opdenacker, Quentin Schulz, Andrew Lunn, Chukun Pan, Alexey Charkov, Peter Robinson, Dennis Gilmore, Michael Riesch, Mykola Kvach, Jimmy Hon, devicetree, linux-arm-kernel, linux-rockchip, linux-kernel From: Dennis Gilmore <dennis@ausil.us> The Orange Pi 5 Pro uses the same SoC and base as the Orange Pi 5 and Orange Pi 5B but has had sound, USB, and leds wired up differently. The boards also use gmac for ethernet where the Pro has a PCIe attached NIC. I have not changed the definitions from what was in rk3588s-orangepi-5.dtsi Signed-off-by: Dennis Gilmore <dennis@ausil.us> --- .../dts/rockchip/rk3588s-orangepi-5-5b.dtsi | 192 +++++++++++++++++ .../boot/dts/rockchip/rk3588s-orangepi-5.dts | 6 +- .../boot/dts/rockchip/rk3588s-orangepi-5.dtsi | 198 +----------------- .../boot/dts/rockchip/rk3588s-orangepi-5b.dts | 2 +- 4 files changed, 209 insertions(+), 189 deletions(-) create mode 100644 arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5-5b.dtsi diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5-5b.dtsi b/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5-5b.dtsi new file mode 100644 index 000000000000..b04dd667605d --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5-5b.dtsi @@ -0,0 +1,192 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) +/* + * Device tree definitions shared by the Orange Pi 5 and Orange Pi 5B + * but not the Orange Pi 5 Pro. + */ + +#include <dt-bindings/usb/pd.h> +#include "rk3588s-orangepi-5.dtsi" + +/ { + aliases { + ethernet0 = &gmac1; + }; + + analog-sound { + compatible = "simple-audio-card"; + pinctrl-names = "default"; + pinctrl-0 = <&hp_detect>; + simple-audio-card,name = "rockchip,es8388"; + simple-audio-card,bitclock-master = <&masterdai>; + simple-audio-card,format = "i2s"; + simple-audio-card,frame-master = <&masterdai>; + simple-audio-card,hp-det-gpios = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>; + simple-audio-card,mclk-fs = <256>; + 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 = <&i2s1_8ch>; + }; + + masterdai: simple-audio-card,codec { + sound-dai = <&es8388>; + system-clock-frequency = <12288000>; + }; + }; + + pwm-leds { + compatible = "pwm-leds"; + + led { + color = <LED_COLOR_ID_GREEN>; + function = LED_FUNCTION_STATUS; + linux,default-trigger = "heartbeat"; + max-brightness = <255>; + pwms = <&pwm0 0 25000 0>; + }; + }; +}; + +&gmac1 { + clock_in_out = "output"; + phy-handle = <&rgmii_phy1>; + phy-mode = "rgmii-rxid"; + pinctrl-0 = <&gmac1_miim + &gmac1_tx_bus2 + &gmac1_rx_bus2 + &gmac1_rgmii_clk + &gmac1_rgmii_bus>; + pinctrl-names = "default"; + tx_delay = <0x42>; + status = "okay"; +}; + +&i2c6 { + es8388: audio-codec@10 { + compatible = "everest,es8388", "everest,es8328"; + reg = <0x10>; + clocks = <&cru I2S1_8CH_MCLKOUT>; + AVDD-supply = <&vcc_3v3_s0>; + DVDD-supply = <&vcc_1v8_s0>; + HPVDD-supply = <&vcc_3v3_s0>; + PVDD-supply = <&vcc_3v3_s0>; + assigned-clocks = <&cru I2S1_8CH_MCLKOUT>; + assigned-clock-rates = <12288000>; + #sound-dai-cells = <0>; + }; + + usbc0: usb-typec@22 { + compatible = "fcs,fusb302"; + reg = <0x22>; + interrupt-parent = <&gpio0>; + interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>; + pinctrl-names = "default"; + pinctrl-0 = <&usbc0_int>; + vbus-supply = <&vbus_typec>; + status = "okay"; + + usb_con: connector { + compatible = "usb-c-connector"; + label = "USB-C"; + data-role = "dual"; + op-sink-microwatt = <1000000>; + power-role = "dual"; + sink-pdos = + <PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>; + source-pdos = + <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>; + try-power-role = "source"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + usbc0_hs: endpoint { + remote-endpoint = <&usb_host0_xhci_drd_sw>; + }; + }; + + port@1 { + reg = <1>; + usbc0_ss: endpoint { + remote-endpoint = <&usbdp_phy0_typec_ss>; + }; + }; + + port@2 { + reg = <2>; + usbc0_sbu: endpoint { + remote-endpoint = <&usbdp_phy0_typec_sbu>; + }; + }; + }; + }; + }; +}; + +&i2s1_8ch { + rockchip,i2s-tx-route = <3 2 1 0>; + rockchip,i2s-rx-route = <1 3 2 0>; + pinctrl-names = "default"; + pinctrl-0 = <&i2s1m0_sclk + &i2s1m0_mclk + &i2s1m0_lrck + &i2s1m0_sdi1 + &i2s1m0_sdo3>; + status = "okay"; +}; + +&pwm0 { + pinctrl-0 = <&pwm0m2_pins>; + pinctrl-names = "default"; + status = "okay"; +}; + +&usb_host0_xhci { + dr_mode = "otg"; + usb-role-switch; + + port { + usb_host0_xhci_drd_sw: endpoint { + remote-endpoint = <&usbc0_hs>; + }; + }; +}; + +&usb_host2_xhci { + status = "okay"; +}; + +&usbdp_phy0 { + mode-switch; + orientation-switch; + sbu1-dc-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>; + sbu2-dc-gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_HIGH>; + + port { + #address-cells = <1>; + #size-cells = <0>; + + usbdp_phy0_typec_ss: endpoint@0 { + reg = <0>; + remote-endpoint = <&usbc0_ss>; + }; + + usbdp_phy0_typec_sbu: endpoint@1 { + reg = <1>; + remote-endpoint = <&usbc0_sbu>; + }; + }; +}; diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dts b/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dts index 83b9b6645a1e..d76bdf1b5e90 100644 --- a/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dts +++ b/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dts @@ -2,12 +2,16 @@ /dts-v1/; -#include "rk3588s-orangepi-5.dtsi" +#include "rk3588s-orangepi-5-5b.dtsi" / { model = "Xunlong Orange Pi 5"; compatible = "xunlong,orangepi-5", "rockchip,rk3588s"; + aliases { + mmc0 = &sdmmc; + }; + vcc3v3_pcie20: regulator-vcc3v3-pcie20 { compatible = "regulator-fixed"; enable-active-high; diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dtsi b/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dtsi index dafad29f9854..5c154cc6c62a 100644 --- a/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dtsi @@ -3,19 +3,13 @@ /dts-v1/; #include <dt-bindings/gpio/gpio.h> -#include <dt-bindings/leds/common.h> #include <dt-bindings/input/input.h> +#include <dt-bindings/leds/common.h> #include <dt-bindings/pinctrl/rockchip.h> #include <dt-bindings/soc/rockchip,vop2.h> -#include <dt-bindings/usb/pd.h> #include "rk3588s.dtsi" / { - aliases { - ethernet0 = &gmac1; - mmc0 = &sdmmc; - }; - chosen { stdout-path = "serial2:1500000n8"; }; @@ -34,38 +28,6 @@ button-recovery { }; }; - analog-sound { - compatible = "simple-audio-card"; - pinctrl-names = "default"; - pinctrl-0 = <&hp_detect>; - simple-audio-card,name = "rockchip,es8388"; - simple-audio-card,bitclock-master = <&masterdai>; - simple-audio-card,format = "i2s"; - simple-audio-card,frame-master = <&masterdai>; - simple-audio-card,hp-det-gpios = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>; - simple-audio-card,mclk-fs = <256>; - 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 = <&i2s1_8ch>; - }; - - masterdai: simple-audio-card,codec { - sound-dai = <&es8388>; - system-clock-frequency = <12288000>; - }; - }; - hdmi0-con { compatible = "hdmi-connector"; type = "a"; @@ -77,18 +39,6 @@ hdmi0_con_in: endpoint { }; }; - pwm-leds { - compatible = "pwm-leds"; - - led { - color = <LED_COLOR_ID_GREEN>; - function = LED_FUNCTION_STATUS; - linux,default-trigger = "heartbeat"; - max-brightness = <255>; - pwms = <&pwm0 0 25000 0>; - }; - }; - vbus_typec: regulator-vbus-typec { compatible = "regulator-fixed"; enable-active-high; @@ -101,15 +51,6 @@ vbus_typec: regulator-vbus-typec { vin-supply = <&vcc5v0_sys>; }; - vcc5v0_sys: regulator-vcc5v0-sys { - compatible = "regulator-fixed"; - regulator-name = "vcc5v0_sys"; - regulator-always-on; - regulator-boot-on; - regulator-min-microvolt = <5000000>; - regulator-max-microvolt = <5000000>; - }; - vcc_3v3_sd_s0: regulator-vcc-3v3-sd-s0 { compatible = "regulator-fixed"; gpios = <&gpio4 RK_PB5 GPIO_ACTIVE_LOW>; @@ -119,6 +60,15 @@ vcc_3v3_sd_s0: regulator-vcc-3v3-sd-s0 { regulator-max-microvolt = <3300000>; vin-supply = <&vcc_3v3_s3>; }; + + vcc5v0_sys: regulator-vcc5v0-sys { + compatible = "regulator-fixed"; + regulator-name = "vcc5v0_sys"; + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + }; }; &combphy0_ps { @@ -161,20 +111,6 @@ &cpu_l3 { cpu-supply = <&vdd_cpu_lit_s0>; }; -&gmac1 { - clock_in_out = "output"; - phy-handle = <&rgmii_phy1>; - phy-mode = "rgmii-rxid"; - pinctrl-0 = <&gmac1_miim - &gmac1_tx_bus2 - &gmac1_rx_bus2 - &gmac1_rgmii_clk - &gmac1_rgmii_bus>; - pinctrl-names = "default"; - tx_delay = <0x42>; - status = "okay"; -}; - &gpu { mali-supply = <&vdd_gpu_s0>; status = "okay"; @@ -270,69 +206,6 @@ &i2c6 { pinctrl-0 = <&i2c6m3_xfer>; status = "okay"; - es8388: audio-codec@10 { - compatible = "everest,es8388", "everest,es8328"; - reg = <0x10>; - clocks = <&cru I2S1_8CH_MCLKOUT>; - AVDD-supply = <&vcc_3v3_s0>; - DVDD-supply = <&vcc_1v8_s0>; - HPVDD-supply = <&vcc_3v3_s0>; - PVDD-supply = <&vcc_3v3_s0>; - assigned-clocks = <&cru I2S1_8CH_MCLKOUT>; - assigned-clock-rates = <12288000>; - #sound-dai-cells = <0>; - }; - - usbc0: usb-typec@22 { - compatible = "fcs,fusb302"; - reg = <0x22>; - interrupt-parent = <&gpio0>; - interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>; - pinctrl-names = "default"; - pinctrl-0 = <&usbc0_int>; - vbus-supply = <&vbus_typec>; - status = "okay"; - - usb_con: connector { - compatible = "usb-c-connector"; - label = "USB-C"; - data-role = "dual"; - op-sink-microwatt = <1000000>; - power-role = "dual"; - sink-pdos = - <PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>; - source-pdos = - <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>; - try-power-role = "source"; - - ports { - #address-cells = <1>; - #size-cells = <0>; - - port@0 { - reg = <0>; - usbc0_hs: endpoint { - remote-endpoint = <&usb_host0_xhci_drd_sw>; - }; - }; - - port@1 { - reg = <1>; - usbc0_ss: endpoint { - remote-endpoint = <&usbdp_phy0_typec_ss>; - }; - }; - - port@2 { - reg = <2>; - usbc0_sbu: endpoint { - remote-endpoint = <&usbdp_phy0_typec_sbu>; - }; - }; - }; - }; - }; - hym8563: rtc@51 { compatible = "haoyu,hym8563"; reg = <0x51>; @@ -346,18 +219,6 @@ hym8563: rtc@51 { }; }; -&i2s1_8ch { - rockchip,i2s-tx-route = <3 2 1 0>; - rockchip,i2s-rx-route = <1 3 2 0>; - pinctrl-names = "default"; - pinctrl-0 = <&i2s1m0_sclk - &i2s1m0_mclk - &i2s1m0_lrck - &i2s1m0_sdi1 - &i2s1m0_sdo3>; - status = "okay"; -}; - &i2s5_8ch { status = "okay"; }; @@ -404,12 +265,6 @@ typec5v_pwren: typec5v-pwren { }; }; -&pwm0 { - pinctrl-0 = <&pwm0m2_pins>; - pinctrl-names = "default"; - status = "okay"; -}; - &rknn_core_0 { npu-supply = <&vdd_npu_s0>; sram-supply = <&vdd_npu_s0>; @@ -841,26 +696,7 @@ &uart2 { }; &usbdp_phy0 { - mode-switch; - orientation-switch; - sbu1-dc-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>; - sbu2-dc-gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_HIGH>; status = "okay"; - - port { - #address-cells = <1>; - #size-cells = <0>; - - usbdp_phy0_typec_ss: endpoint@0 { - reg = <0>; - remote-endpoint = <&usbc0_ss>; - }; - - usbdp_phy0_typec_sbu: endpoint@1 { - reg = <1>; - remote-endpoint = <&usbc0_sbu>; - }; - }; }; &usb_host0_ehci { @@ -872,15 +708,7 @@ &usb_host0_ohci { }; &usb_host0_xhci { - dr_mode = "otg"; - usb-role-switch; status = "okay"; - - port { - usb_host0_xhci_drd_sw: endpoint { - remote-endpoint = <&usbc0_hs>; - }; - }; }; &usb_host1_ehci { @@ -891,7 +719,7 @@ &usb_host1_ohci { status = "okay"; }; -&usb_host2_xhci { +&vop { status = "okay"; }; @@ -899,10 +727,6 @@ &vop_mmu { status = "okay"; }; -&vop { - status = "okay"; -}; - &vp0 { vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { reg = <ROCKCHIP_VOP2_EP_HDMI0>; diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5b.dts b/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5b.dts index d21ec320d295..8af174777809 100644 --- a/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5b.dts +++ b/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5b.dts @@ -2,7 +2,7 @@ /dts-v1/; -#include "rk3588s-orangepi-5.dtsi" +#include "rk3588s-orangepi-5-5b.dtsi" / { model = "Xunlong Orange Pi 5B"; -- 2.53.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH v6 2/3] arm64: dts: rockchip: refactor items from Orange Pi 5/b to prep for Pro 2026-04-11 2:47 ` [PATCH v6 2/3] arm64: dts: rockchip: refactor items from Orange Pi 5/b to prep for Pro dennis @ 2026-04-11 11:58 ` Jimmy Hon 0 siblings, 0 replies; 5+ messages in thread From: Jimmy Hon @ 2026-04-11 11:58 UTC (permalink / raw) To: dennis Cc: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner, FUKAUMI Naoki, Hsun Lai, Jonas Karlman, Chaoyi Chen, John Clark, Michael Opdenacker, Quentin Schulz, Andrew Lunn, Chukun Pan, Alexey Charkov, Peter Robinson, Michael Riesch, Mykola Kvach, devicetree, linux-arm-kernel, linux-rockchip, linux-kernel On Fri, Apr 10, 2026 at 9:47 PM <dennis@ausil.us> wrote: > > From: Dennis Gilmore <dennis@ausil.us> > > The Orange Pi 5 Pro uses the same SoC and base as the Orange Pi 5 and > Orange Pi 5B but has had sound, USB, and leds wired up differently. The > boards also use gmac for ethernet where the Pro has a PCIe attached NIC. > > I have not changed the definitions from what was in rk3588s-orangepi-5.dtsi > > Signed-off-by: Dennis Gilmore <dennis@ausil.us> Still works on Orange Pi 5. Having the 5 and 5B share a dtsi is similar to how the 5 Max and 5 Ultra share a dtsi while the 5 Plus has more differences. Tested-By: Jimmy Hon <honyuenkwun@gmail.com> Reviewed-By: Jimmy Hon <honyuenkwun@gmail.com> > --- > .../dts/rockchip/rk3588s-orangepi-5-5b.dtsi | 192 +++++++++++++++++ > .../boot/dts/rockchip/rk3588s-orangepi-5.dts | 6 +- > .../boot/dts/rockchip/rk3588s-orangepi-5.dtsi | 198 +----------------- > .../boot/dts/rockchip/rk3588s-orangepi-5b.dts | 2 +- > 4 files changed, 209 insertions(+), 189 deletions(-) > create mode 100644 arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5-5b.dtsi > > diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5-5b.dtsi b/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5-5b.dtsi > new file mode 100644 > index 000000000000..b04dd667605d > --- /dev/null > +++ b/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5-5b.dtsi > @@ -0,0 +1,192 @@ > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) > +/* > + * Device tree definitions shared by the Orange Pi 5 and Orange Pi 5B > + * but not the Orange Pi 5 Pro. > + */ > + > +#include <dt-bindings/usb/pd.h> > +#include "rk3588s-orangepi-5.dtsi" > + > +/ { > + aliases { > + ethernet0 = &gmac1; > + }; > + > + analog-sound { > + compatible = "simple-audio-card"; > + pinctrl-names = "default"; > + pinctrl-0 = <&hp_detect>; > + simple-audio-card,name = "rockchip,es8388"; > + simple-audio-card,bitclock-master = <&masterdai>; > + simple-audio-card,format = "i2s"; > + simple-audio-card,frame-master = <&masterdai>; > + simple-audio-card,hp-det-gpios = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>; > + simple-audio-card,mclk-fs = <256>; > + 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 = <&i2s1_8ch>; > + }; > + > + masterdai: simple-audio-card,codec { > + sound-dai = <&es8388>; > + system-clock-frequency = <12288000>; > + }; > + }; > + > + pwm-leds { > + compatible = "pwm-leds"; > + > + led { > + color = <LED_COLOR_ID_GREEN>; > + function = LED_FUNCTION_STATUS; > + linux,default-trigger = "heartbeat"; > + max-brightness = <255>; > + pwms = <&pwm0 0 25000 0>; > + }; > + }; > +}; > + > +&gmac1 { > + clock_in_out = "output"; > + phy-handle = <&rgmii_phy1>; > + phy-mode = "rgmii-rxid"; > + pinctrl-0 = <&gmac1_miim > + &gmac1_tx_bus2 > + &gmac1_rx_bus2 > + &gmac1_rgmii_clk > + &gmac1_rgmii_bus>; > + pinctrl-names = "default"; > + tx_delay = <0x42>; > + status = "okay"; > +}; > + > +&i2c6 { > + es8388: audio-codec@10 { > + compatible = "everest,es8388", "everest,es8328"; > + reg = <0x10>; > + clocks = <&cru I2S1_8CH_MCLKOUT>; > + AVDD-supply = <&vcc_3v3_s0>; > + DVDD-supply = <&vcc_1v8_s0>; > + HPVDD-supply = <&vcc_3v3_s0>; > + PVDD-supply = <&vcc_3v3_s0>; > + assigned-clocks = <&cru I2S1_8CH_MCLKOUT>; > + assigned-clock-rates = <12288000>; > + #sound-dai-cells = <0>; > + }; > + > + usbc0: usb-typec@22 { > + compatible = "fcs,fusb302"; > + reg = <0x22>; > + interrupt-parent = <&gpio0>; > + interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>; > + pinctrl-names = "default"; > + pinctrl-0 = <&usbc0_int>; > + vbus-supply = <&vbus_typec>; > + status = "okay"; > + > + usb_con: connector { > + compatible = "usb-c-connector"; > + label = "USB-C"; > + data-role = "dual"; > + op-sink-microwatt = <1000000>; > + power-role = "dual"; > + sink-pdos = > + <PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>; > + source-pdos = > + <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>; > + try-power-role = "source"; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + usbc0_hs: endpoint { > + remote-endpoint = <&usb_host0_xhci_drd_sw>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + usbc0_ss: endpoint { > + remote-endpoint = <&usbdp_phy0_typec_ss>; > + }; > + }; > + > + port@2 { > + reg = <2>; > + usbc0_sbu: endpoint { > + remote-endpoint = <&usbdp_phy0_typec_sbu>; > + }; > + }; > + }; > + }; > + }; > +}; > + > +&i2s1_8ch { > + rockchip,i2s-tx-route = <3 2 1 0>; > + rockchip,i2s-rx-route = <1 3 2 0>; > + pinctrl-names = "default"; > + pinctrl-0 = <&i2s1m0_sclk > + &i2s1m0_mclk > + &i2s1m0_lrck > + &i2s1m0_sdi1 > + &i2s1m0_sdo3>; > + status = "okay"; > +}; > + > +&pwm0 { > + pinctrl-0 = <&pwm0m2_pins>; > + pinctrl-names = "default"; > + status = "okay"; > +}; > + > +&usb_host0_xhci { > + dr_mode = "otg"; > + usb-role-switch; > + > + port { > + usb_host0_xhci_drd_sw: endpoint { > + remote-endpoint = <&usbc0_hs>; > + }; > + }; > +}; > + > +&usb_host2_xhci { > + status = "okay"; > +}; > + > +&usbdp_phy0 { > + mode-switch; > + orientation-switch; > + sbu1-dc-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>; > + sbu2-dc-gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_HIGH>; > + > + port { > + #address-cells = <1>; > + #size-cells = <0>; > + > + usbdp_phy0_typec_ss: endpoint@0 { > + reg = <0>; > + remote-endpoint = <&usbc0_ss>; > + }; > + > + usbdp_phy0_typec_sbu: endpoint@1 { > + reg = <1>; > + remote-endpoint = <&usbc0_sbu>; > + }; > + }; > +}; > diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dts b/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dts > index 83b9b6645a1e..d76bdf1b5e90 100644 > --- a/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dts > +++ b/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dts > @@ -2,12 +2,16 @@ > > /dts-v1/; > > -#include "rk3588s-orangepi-5.dtsi" > +#include "rk3588s-orangepi-5-5b.dtsi" > > / { > model = "Xunlong Orange Pi 5"; > compatible = "xunlong,orangepi-5", "rockchip,rk3588s"; > > + aliases { > + mmc0 = &sdmmc; > + }; > + > vcc3v3_pcie20: regulator-vcc3v3-pcie20 { > compatible = "regulator-fixed"; > enable-active-high; > diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dtsi b/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dtsi > index dafad29f9854..5c154cc6c62a 100644 > --- a/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dtsi > +++ b/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5.dtsi > @@ -3,19 +3,13 @@ > /dts-v1/; > > #include <dt-bindings/gpio/gpio.h> > -#include <dt-bindings/leds/common.h> > #include <dt-bindings/input/input.h> > +#include <dt-bindings/leds/common.h> > #include <dt-bindings/pinctrl/rockchip.h> > #include <dt-bindings/soc/rockchip,vop2.h> > -#include <dt-bindings/usb/pd.h> > #include "rk3588s.dtsi" > > / { > - aliases { > - ethernet0 = &gmac1; > - mmc0 = &sdmmc; > - }; > - > chosen { > stdout-path = "serial2:1500000n8"; > }; > @@ -34,38 +28,6 @@ button-recovery { > }; > }; > > - analog-sound { > - compatible = "simple-audio-card"; > - pinctrl-names = "default"; > - pinctrl-0 = <&hp_detect>; > - simple-audio-card,name = "rockchip,es8388"; > - simple-audio-card,bitclock-master = <&masterdai>; > - simple-audio-card,format = "i2s"; > - simple-audio-card,frame-master = <&masterdai>; > - simple-audio-card,hp-det-gpios = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>; > - simple-audio-card,mclk-fs = <256>; > - 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 = <&i2s1_8ch>; > - }; > - > - masterdai: simple-audio-card,codec { > - sound-dai = <&es8388>; > - system-clock-frequency = <12288000>; > - }; > - }; > - > hdmi0-con { > compatible = "hdmi-connector"; > type = "a"; > @@ -77,18 +39,6 @@ hdmi0_con_in: endpoint { > }; > }; > > - pwm-leds { > - compatible = "pwm-leds"; > - > - led { > - color = <LED_COLOR_ID_GREEN>; > - function = LED_FUNCTION_STATUS; > - linux,default-trigger = "heartbeat"; > - max-brightness = <255>; > - pwms = <&pwm0 0 25000 0>; > - }; > - }; > - > vbus_typec: regulator-vbus-typec { > compatible = "regulator-fixed"; > enable-active-high; > @@ -101,15 +51,6 @@ vbus_typec: regulator-vbus-typec { > vin-supply = <&vcc5v0_sys>; > }; > > - vcc5v0_sys: regulator-vcc5v0-sys { > - compatible = "regulator-fixed"; > - regulator-name = "vcc5v0_sys"; > - regulator-always-on; > - regulator-boot-on; > - regulator-min-microvolt = <5000000>; > - regulator-max-microvolt = <5000000>; > - }; > - > vcc_3v3_sd_s0: regulator-vcc-3v3-sd-s0 { > compatible = "regulator-fixed"; > gpios = <&gpio4 RK_PB5 GPIO_ACTIVE_LOW>; > @@ -119,6 +60,15 @@ vcc_3v3_sd_s0: regulator-vcc-3v3-sd-s0 { > regulator-max-microvolt = <3300000>; > vin-supply = <&vcc_3v3_s3>; > }; > + > + vcc5v0_sys: regulator-vcc5v0-sys { > + compatible = "regulator-fixed"; > + regulator-name = "vcc5v0_sys"; > + regulator-always-on; > + regulator-boot-on; > + regulator-min-microvolt = <5000000>; > + regulator-max-microvolt = <5000000>; > + }; > }; > > &combphy0_ps { > @@ -161,20 +111,6 @@ &cpu_l3 { > cpu-supply = <&vdd_cpu_lit_s0>; > }; > > -&gmac1 { > - clock_in_out = "output"; > - phy-handle = <&rgmii_phy1>; > - phy-mode = "rgmii-rxid"; > - pinctrl-0 = <&gmac1_miim > - &gmac1_tx_bus2 > - &gmac1_rx_bus2 > - &gmac1_rgmii_clk > - &gmac1_rgmii_bus>; > - pinctrl-names = "default"; > - tx_delay = <0x42>; > - status = "okay"; > -}; > - > &gpu { > mali-supply = <&vdd_gpu_s0>; > status = "okay"; > @@ -270,69 +206,6 @@ &i2c6 { > pinctrl-0 = <&i2c6m3_xfer>; > status = "okay"; > > - es8388: audio-codec@10 { > - compatible = "everest,es8388", "everest,es8328"; > - reg = <0x10>; > - clocks = <&cru I2S1_8CH_MCLKOUT>; > - AVDD-supply = <&vcc_3v3_s0>; > - DVDD-supply = <&vcc_1v8_s0>; > - HPVDD-supply = <&vcc_3v3_s0>; > - PVDD-supply = <&vcc_3v3_s0>; > - assigned-clocks = <&cru I2S1_8CH_MCLKOUT>; > - assigned-clock-rates = <12288000>; > - #sound-dai-cells = <0>; > - }; > - > - usbc0: usb-typec@22 { > - compatible = "fcs,fusb302"; > - reg = <0x22>; > - interrupt-parent = <&gpio0>; > - interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>; > - pinctrl-names = "default"; > - pinctrl-0 = <&usbc0_int>; > - vbus-supply = <&vbus_typec>; > - status = "okay"; > - > - usb_con: connector { > - compatible = "usb-c-connector"; > - label = "USB-C"; > - data-role = "dual"; > - op-sink-microwatt = <1000000>; > - power-role = "dual"; > - sink-pdos = > - <PDO_FIXED(5000, 1000, PDO_FIXED_USB_COMM)>; > - source-pdos = > - <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>; > - try-power-role = "source"; > - > - ports { > - #address-cells = <1>; > - #size-cells = <0>; > - > - port@0 { > - reg = <0>; > - usbc0_hs: endpoint { > - remote-endpoint = <&usb_host0_xhci_drd_sw>; > - }; > - }; > - > - port@1 { > - reg = <1>; > - usbc0_ss: endpoint { > - remote-endpoint = <&usbdp_phy0_typec_ss>; > - }; > - }; > - > - port@2 { > - reg = <2>; > - usbc0_sbu: endpoint { > - remote-endpoint = <&usbdp_phy0_typec_sbu>; > - }; > - }; > - }; > - }; > - }; > - > hym8563: rtc@51 { > compatible = "haoyu,hym8563"; > reg = <0x51>; > @@ -346,18 +219,6 @@ hym8563: rtc@51 { > }; > }; > > -&i2s1_8ch { > - rockchip,i2s-tx-route = <3 2 1 0>; > - rockchip,i2s-rx-route = <1 3 2 0>; > - pinctrl-names = "default"; > - pinctrl-0 = <&i2s1m0_sclk > - &i2s1m0_mclk > - &i2s1m0_lrck > - &i2s1m0_sdi1 > - &i2s1m0_sdo3>; > - status = "okay"; > -}; > - > &i2s5_8ch { > status = "okay"; > }; > @@ -404,12 +265,6 @@ typec5v_pwren: typec5v-pwren { > }; > }; > > -&pwm0 { > - pinctrl-0 = <&pwm0m2_pins>; > - pinctrl-names = "default"; > - status = "okay"; > -}; > - > &rknn_core_0 { > npu-supply = <&vdd_npu_s0>; > sram-supply = <&vdd_npu_s0>; > @@ -841,26 +696,7 @@ &uart2 { > }; > > &usbdp_phy0 { > - mode-switch; > - orientation-switch; > - sbu1-dc-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>; > - sbu2-dc-gpios = <&gpio4 RK_PA7 GPIO_ACTIVE_HIGH>; > status = "okay"; > - > - port { > - #address-cells = <1>; > - #size-cells = <0>; > - > - usbdp_phy0_typec_ss: endpoint@0 { > - reg = <0>; > - remote-endpoint = <&usbc0_ss>; > - }; > - > - usbdp_phy0_typec_sbu: endpoint@1 { > - reg = <1>; > - remote-endpoint = <&usbc0_sbu>; > - }; > - }; > }; > > &usb_host0_ehci { > @@ -872,15 +708,7 @@ &usb_host0_ohci { > }; > > &usb_host0_xhci { > - dr_mode = "otg"; > - usb-role-switch; > status = "okay"; > - > - port { > - usb_host0_xhci_drd_sw: endpoint { > - remote-endpoint = <&usbc0_hs>; > - }; > - }; > }; > > &usb_host1_ehci { > @@ -891,7 +719,7 @@ &usb_host1_ohci { > status = "okay"; > }; > > -&usb_host2_xhci { > +&vop { > status = "okay"; > }; > > @@ -899,10 +727,6 @@ &vop_mmu { > status = "okay"; > }; > > -&vop { > - status = "okay"; > -}; > - > &vp0 { > vp0_out_hdmi0: endpoint@ROCKCHIP_VOP2_EP_HDMI0 { > reg = <ROCKCHIP_VOP2_EP_HDMI0>; > diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5b.dts b/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5b.dts > index d21ec320d295..8af174777809 100644 > --- a/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5b.dts > +++ b/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5b.dts > @@ -2,7 +2,7 @@ > > /dts-v1/; > > -#include "rk3588s-orangepi-5.dtsi" > +#include "rk3588s-orangepi-5-5b.dtsi" > > / { > model = "Xunlong Orange Pi 5B"; > -- > 2.53.0 > ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v6 3/3] arm64: dts: rockchip: Add Orange Pi 5 Pro board support 2026-04-11 2:47 [PATCH v6 0/3] Add support for Orange Pi 5 Pro dennis 2026-04-11 2:47 ` [PATCH v6 1/3] dt-bindings: arm: rockchip: Add " dennis 2026-04-11 2:47 ` [PATCH v6 2/3] arm64: dts: rockchip: refactor items from Orange Pi 5/b to prep for Pro dennis @ 2026-04-11 2:47 ` dennis 2 siblings, 0 replies; 5+ messages in thread From: dennis @ 2026-04-11 2:47 UTC (permalink / raw) To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Heiko Stuebner Cc: FUKAUMI Naoki, Hsun Lai, Jonas Karlman, Chaoyi Chen, John Clark, Michael Opdenacker, Quentin Schulz, Andrew Lunn, Chukun Pan, Alexey Charkov, Peter Robinson, Dennis Gilmore, Michael Riesch, Mykola Kvach, Jimmy Hon, devicetree, linux-arm-kernel, linux-rockchip, linux-kernel From: Dennis Gilmore <dennis@ausil.us> 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 (pcie2x1l1) - PCIe NVMe slot (pcie2x1l2) - AP6256 WiFi (BCM43456) via SDIO with mmc-pwrseq - BCM4345C5 Bluetooth - es8388 audio - USB 2.0 and USB 3.0 - Two HDMI ports, the second is connected to the SoC's DP controller driven by a transparent LT8711UXD bridge that has firmware onboard and needs no node defined. Vendors description and links to schematics available: http://www.orangepi.org/html/hardWare/computerAndMicrocontrollers/details/Orange-Pi-5-Pro.html Signed-off-by: Dennis Gilmore <dennis@ausil.us> --- .../display/rockchip/rockchip,dw-dp.yaml | 7 + arch/arm64/boot/dts/rockchip/Makefile | 1 + .../dts/rockchip/rk3588s-orangepi-5-pro.dts | 352 ++++++++++++++++++ drivers/gpu/drm/bridge/synopsys/dw-dp.c | 12 + 4 files changed, 372 insertions(+) create mode 100644 arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5-pro.dts diff --git a/Documentation/devicetree/bindings/display/rockchip/rockchip,dw-dp.yaml b/Documentation/devicetree/bindings/display/rockchip/rockchip,dw-dp.yaml index 6345f0132d43..079a912d97f1 100644 --- a/Documentation/devicetree/bindings/display/rockchip/rockchip,dw-dp.yaml +++ b/Documentation/devicetree/bindings/display/rockchip/rockchip,dw-dp.yaml @@ -57,6 +57,13 @@ properties: - const: i2s - const: spdif + hpd-gpios: + maxItems: 1 + description: + GPIO used for hot plug detection when the controller's native HPD + input is not connected. If not specified, the controller uses its + internal HPD detection mechanism. + phys: maxItems: 1 diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile index 4d384f153c13..c99dca2ae9e7 100644 --- a/arch/arm64/boot/dts/rockchip/Makefile +++ b/arch/arm64/boot/dts/rockchip/Makefile @@ -214,6 +214,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 diff --git a/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5-pro.dts b/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5-pro.dts new file mode 100644 index 000000000000..84c83aa69f63 --- /dev/null +++ b/arch/arm64/boot/dts/rockchip/rk3588s-orangepi-5-pro.dts @@ -0,0 +1,352 @@ +// 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; + }; + + dp-con { + compatible = "dp-connector"; + + port { + dp_con_in: endpoint { + remote-endpoint = <&dp0_out_con>; + }; + }; + }; + + analog-sound { + compatible = "simple-audio-card"; + pinctrl-names = "default"; + pinctrl-0 = <&hp_detect>; + simple-audio-card,bitclock-master = <&masterdai>; + simple-audio-card,format = "i2s"; + simple-audio-card,frame-master = <&masterdai>; + 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>; + }; + + masterdai: 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_dp: regulator-vcc3v3-dp { + compatible = "regulator-fixed"; + enable-active-high; + gpios = <&gpio3 RK_PC2 GPIO_ACTIVE_HIGH>; + regulator-always-on; + regulator-boot-on; + regulator-max-microvolt = <3300000>; + regulator-min-microvolt = <3300000>; + regulator-name = "vcc3v3_dp"; + vin-supply = <&vcc_3v3_s3>; + }; + + vcc3v3_phy1: regulator-vcc3v3-phy1 { + compatible = "regulator-fixed"; + enable-active-high; + gpios = <&gpio3 RK_PB7 GPIO_ACTIVE_HIGH>; + regulator-boot-on; + regulator-max-microvolt = <3300000>; + regulator-min-microvolt = <3300000>; + regulator-name = "vcc3v3_phy1"; + 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"; + 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>; + }; +}; + +&dp0 { + pinctrl-names = "default"; + pinctrl-0 = <&dp0m0_pins>; + status = "okay"; +}; + +&dp0_in { + dp0_in_vp1: endpoint { + remote-endpoint = <&vp1_out_dp0>; + }; +}; + +&dp0_out { + dp0_out_con: endpoint { + remote-endpoint = <&dp_con_in>; + }; +}; + +&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 = <&vcc_3v3_s0>; + DVDD-supply = <&vcc_1v8_s0>; + HPVDD-supply = <&vcc_3v3_s0>; + PVDD-supply = <&vcc_3v3_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_clkreqn &pcie30x1m1_1_waken>; + reset-gpios = <&gpio4 RK_PA2 GPIO_ACTIVE_HIGH>; + supports-clkreq; + vpcie3v3-supply = <&vcc_3v3_s3>; + status = "okay"; +}; + +/* NIC */ +&pcie2x1l2 { + reset-gpios = <&gpio3 RK_PD1 GPIO_ACTIVE_HIGH>; + vpcie3v3-supply = <&vcc3v3_phy1>; + status = "okay"; +}; + +&pinctrl { + bluetooth { + bt_wake_gpio: bt-wake-pin { + rockchip,pins = <0 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>; + }; + + bt_wake_host_irq: bt-wake-host-irq { + rockchip,pins = <0 RK_PC5 RK_FUNC_GPIO &pcfg_pull_down>; + }; + }; + + usb { + vcc5v0_otg_en: vcc5v0-otg-en { + rockchip,pins = <0 RK_PC4 RK_FUNC_GPIO &pcfg_pull_none>; + }; + }; + + wlan { + 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"; +}; + +&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>; + }; +}; + +&usb_host0_xhci { + dr_mode = "host"; +}; + +&usbdp_phy0 { + rockchip,dp-lane-mux = <0 1>; +}; + +&vp1 { + vp1_out_dp0: endpoint@a { + reg = <ROCKCHIP_VOP2_EP_DP0>; + remote-endpoint = <&dp0_in_vp1>; + }; +}; diff --git a/drivers/gpu/drm/bridge/synopsys/dw-dp.c b/drivers/gpu/drm/bridge/synopsys/dw-dp.c index fd23ca2834b0..b58f57b69b22 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-dp.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-dp.c @@ -8,6 +8,7 @@ */ #include <linux/bitfield.h> #include <linux/clk.h> +#include <linux/gpio/consumer.h> #include <linux/iopoll.h> #include <linux/irq.h> #include <linux/media-bus-format.h> @@ -330,6 +331,8 @@ struct dw_dp { u8 pixel_mode; DECLARE_BITMAP(sdp_reg_bank, SDP_REG_BANK_SIZE); + + struct gpio_desc *hpd_gpiod; }; enum { @@ -481,6 +484,9 @@ static bool dw_dp_hpd_detect(struct dw_dp *dp) { u32 value; + if (dp->hpd_gpiod) + return gpiod_get_value_cansleep(dp->hpd_gpiod); + regmap_read(dp->regmap, DW_DP_HPD_STATUS, &value); return FIELD_GET(HPD_STATE, value) == DW_DP_HPD_STATE_PLUG; @@ -2002,6 +2008,12 @@ struct dw_dp *dw_dp_bind(struct device *dev, struct drm_encoder *encoder, return ERR_CAST(dp->regmap); } + dp->hpd_gpiod = devm_gpiod_get_optional(dev, "hpd", GPIOD_IN); + if (IS_ERR(dp->hpd_gpiod)) { + dev_err_probe(dev, PTR_ERR(dp->hpd_gpiod), "failed to get hpd GPIO\n"); + return ERR_CAST(dp->hpd_gpiod); + } + dp->phy = devm_of_phy_get(dev, dev->of_node, NULL); if (IS_ERR(dp->phy)) { dev_err_probe(dev, PTR_ERR(dp->phy), "failed to get phy\n"); -- 2.53.0 ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-04-11 11:58 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-04-11 2:47 [PATCH v6 0/3] Add support for Orange Pi 5 Pro dennis 2026-04-11 2:47 ` [PATCH v6 1/3] dt-bindings: arm: rockchip: Add " dennis 2026-04-11 2:47 ` [PATCH v6 2/3] arm64: dts: rockchip: refactor items from Orange Pi 5/b to prep for Pro dennis 2026-04-11 11:58 ` Jimmy Hon 2026-04-11 2:47 ` [PATCH v6 3/3] arm64: dts: rockchip: Add Orange Pi 5 Pro board support dennis
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox