]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
riscv: dts: starfive: add Orange Pi RV
authorIcenowy Zheng <uwu@icenowy.me>
Sun, 23 Nov 2025 22:50:45 +0000 (14:50 -0800)
committerConor Dooley <conor.dooley@microchip.com>
Tue, 25 Nov 2025 22:20:54 +0000 (22:20 +0000)
Orange Pi RV is a SBC based on the StarFive VisionFive 2 board.

Orange Pi RV features:

- StarFive JH7110 SoC
- GbE port connected to JH7110 GMAC0 via YT8531 PHY
- 4x USB ports via VL805 PCIe USB controller connected to JH7110 pcie0
- M.2 M-key slot connected to JH7110 pcie1
- HDMI video output
- 3.5mm audio output
- Ampak AP6256 SDIO Wi-Fi/Bluetooth module on mmc0
- microSD slot on mmc1
- SPI NOR flash memory
- 24c02 EEPROM (read only by default)

Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
Signed-off-by: E Shattow <e@freeshell.de>
[conor: amend comment to say what's missing]
Signed-off-by: Conor Dooley <conor.dooley@microchip.com>
arch/riscv/boot/dts/starfive/Makefile
arch/riscv/boot/dts/starfive/jh7110-orangepi-rv.dts [new file with mode: 0644]

index a640ed5dc5a1aa9a4bbf97504f1605a107bb6f32..3dd1f05283f742d70dd68690ad7649cfda8bcc3e 100644 (file)
@@ -12,6 +12,7 @@ dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-deepcomputing-fml13v01.dtb
 dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-milkv-mars.dtb
 dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-milkv-marscm-emmc.dtb
 dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-milkv-marscm-lite.dtb
+dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-orangepi-rv.dtb
 dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-pine64-star64.dtb
 dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-lite.dtb
 dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-lite-emmc.dtb
diff --git a/arch/riscv/boot/dts/starfive/jh7110-orangepi-rv.dts b/arch/riscv/boot/dts/starfive/jh7110-orangepi-rv.dts
new file mode 100644 (file)
index 0000000..053c359
--- /dev/null
@@ -0,0 +1,76 @@
+// SPDX-License-Identifier: GPL-2.0 OR MIT
+/*
+ * Copyright (C) 2025 Icenowy Zheng <uwu@icenowy.me>
+ */
+
+/dts-v1/;
+#include "jh7110-common.dtsi"
+
+/ {
+       model = "Xunlong Orange Pi RV";
+       compatible = "xunlong,orangepi-rv", "starfive,jh7110";
+
+       /* This regulator is always on by hardware */
+       reg_vcc3v3_pcie: regulator-vcc3v3-pcie {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc3v3-pcie";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
+       wifi_pwrseq: wifi-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               reset-gpios = <&sysgpio 62 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&gmac0 {
+       assigned-clocks = <&aoncrg JH7110_AONCLK_GMAC0_TX>;
+       assigned-clock-parents = <&aoncrg JH7110_AONCLK_GMAC0_RMII_RTX>;
+       starfive,tx-use-rgmii-clk;
+       status = "okay";
+};
+
+&mmc0 {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       cap-sd-highspeed;
+       mmc-pwrseq = <&wifi_pwrseq>;
+       vmmc-supply = <&reg_vcc3v3_pcie>;
+       vqmmc-supply = <&vcc_3v3>;
+       status = "okay";
+
+       ap6256: wifi@1 {
+               compatible = "brcm,bcm43456-fmac", "brcm,bcm4329-fmac";
+               reg = <1>;
+               /* TODO: out-of-band IRQ on GPIO21, lacking pinctrl support */
+       };
+};
+
+&mmc1 {
+       cd-gpios = <&sysgpio 41 GPIO_ACTIVE_HIGH>;
+};
+
+&pcie0 {
+       status = "okay";
+};
+
+&pcie1 {
+       status = "okay";
+};
+
+&phy0 {
+       rx-internal-delay-ps = <1500>;
+       tx-internal-delay-ps = <1500>;
+       motorcomm,rx-clk-drv-microamp = <3970>;
+       motorcomm,rx-data-drv-microamp = <2910>;
+       motorcomm,tx-clk-adj-enabled;
+       motorcomm,tx-clk-10-inverted;
+       motorcomm,tx-clk-100-inverted;
+       motorcomm,tx-clk-1000-inverted;
+};
+
+&pwmdac {
+       status = "okay";
+};