[PATCH v3 2/2] riscv: dts: starfive: add Orange Pi RV

E Shattow posted 2 patches 1 week, 1 day ago
[PATCH v3 2/2] riscv: dts: starfive: add Orange Pi RV
Posted by E Shattow 1 week, 1 day ago
From: Icenowy Zheng <uwu@icenowy.me>

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>
---
 arch/riscv/boot/dts/starfive/Makefile         |  1 +
 .../boot/dts/starfive/jh7110-orangepi-rv.dts  | 76 +++++++++++++++++++
 2 files changed, 77 insertions(+)
 create mode 100644 arch/riscv/boot/dts/starfive/jh7110-orangepi-rv.dts

diff --git a/arch/riscv/boot/dts/starfive/Makefile b/arch/riscv/boot/dts/starfive/Makefile
index 62b659f89ba7..d34c8c79bc10 100644
--- a/arch/riscv/boot/dts/starfive/Makefile
+++ b/arch/riscv/boot/dts/starfive/Makefile
@@ -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-v1.2a.dtb
 dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-v1.3b.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
index 000000000000..16ec2767134e
--- /dev/null
+++ b/arch/riscv/boot/dts/starfive/jh7110-orangepi-rv.dts
@@ -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 */
+	};
+};
+
+&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";
+};
-- 
2.50.0
Re: [PATCH v3 2/2] riscv: dts: starfive: add Orange Pi RV
Posted by Conor Dooley 1 week ago
On Sun, Nov 23, 2025 at 02:50:45PM -0800, E Shattow wrote:
> From: Icenowy Zheng <uwu@icenowy.me>
> 
> 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>
> ---
>  arch/riscv/boot/dts/starfive/Makefile         |  1 +
>  .../boot/dts/starfive/jh7110-orangepi-rv.dts  | 76 +++++++++++++++++++
>  2 files changed, 77 insertions(+)
>  create mode 100644 arch/riscv/boot/dts/starfive/jh7110-orangepi-rv.dts
> 
> diff --git a/arch/riscv/boot/dts/starfive/Makefile b/arch/riscv/boot/dts/starfive/Makefile
> index 62b659f89ba7..d34c8c79bc10 100644
> --- a/arch/riscv/boot/dts/starfive/Makefile
> +++ b/arch/riscv/boot/dts/starfive/Makefile
> @@ -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-v1.2a.dtb
>  dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-v1.3b.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
> index 000000000000..16ec2767134e
> --- /dev/null
> +++ b/arch/riscv/boot/dts/starfive/jh7110-orangepi-rv.dts
> @@ -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 */

What's up with this TODO? Why's the gpio not here? Missing binding
support, missing driver 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";
> +};
> -- 
> 2.50.0
> 
Re: [PATCH v3 2/2] riscv: dts: starfive: add Orange Pi RV
Posted by Icenowy Zheng 1 week ago
在 2025-11-24星期一的 11:07 +0000,Conor Dooley写道:
> On Sun, Nov 23, 2025 at 02:50:45PM -0800, E Shattow wrote:
> > From: Icenowy Zheng <uwu@icenowy.me>
> > 
> > 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>
> > ---
> >  arch/riscv/boot/dts/starfive/Makefile         |  1 +
> >  .../boot/dts/starfive/jh7110-orangepi-rv.dts  | 76
> > +++++++++++++++++++
> >  2 files changed, 77 insertions(+)
> >  create mode 100644 arch/riscv/boot/dts/starfive/jh7110-orangepi-
> > rv.dts
> > 
> > diff --git a/arch/riscv/boot/dts/starfive/Makefile
> > b/arch/riscv/boot/dts/starfive/Makefile
> > index 62b659f89ba7..d34c8c79bc10 100644
> > --- a/arch/riscv/boot/dts/starfive/Makefile
> > +++ b/arch/riscv/boot/dts/starfive/Makefile
> > @@ -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-
> > v1.2a.dtb
> >  dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-
> > v1.3b.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
> > index 000000000000..16ec2767134e
> > --- /dev/null
> > +++ b/arch/riscv/boot/dts/starfive/jh7110-orangepi-rv.dts
> > @@ -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 */
> 
> What's up with this TODO? Why's the gpio not here? Missing binding
> support, missing driver support?

Missing driver support in the pinctrl driver.

> 
> > +       };
> > +};
> > +
> > +&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";
> > +};
> > -- 
> > 2.50.0
> > 
Re: [PATCH v3 2/2] riscv: dts: starfive: add Orange Pi RV
Posted by Conor Dooley 1 week ago
On Mon, Nov 24, 2025 at 07:08:55PM +0800, Icenowy Zheng wrote:
> 在 2025-11-24星期一的 11:07 +0000,Conor Dooley写道:
> > On Sun, Nov 23, 2025 at 02:50:45PM -0800, E Shattow wrote:
> > > From: Icenowy Zheng <uwu@icenowy.me>
> > > 
> > > 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>
> > > ---
> > >  arch/riscv/boot/dts/starfive/Makefile         |  1 +
> > >  .../boot/dts/starfive/jh7110-orangepi-rv.dts  | 76
> > > +++++++++++++++++++
> > >  2 files changed, 77 insertions(+)
> > >  create mode 100644 arch/riscv/boot/dts/starfive/jh7110-orangepi-
> > > rv.dts
> > > 
> > > diff --git a/arch/riscv/boot/dts/starfive/Makefile
> > > b/arch/riscv/boot/dts/starfive/Makefile
> > > index 62b659f89ba7..d34c8c79bc10 100644
> > > --- a/arch/riscv/boot/dts/starfive/Makefile
> > > +++ b/arch/riscv/boot/dts/starfive/Makefile
> > > @@ -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-
> > > v1.2a.dtb
> > >  dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-
> > > v1.3b.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
> > > index 000000000000..16ec2767134e
> > > --- /dev/null
> > > +++ b/arch/riscv/boot/dts/starfive/jh7110-orangepi-rv.dts
> > > @@ -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 */
> > 
> > What's up with this TODO? Why's the gpio not here? Missing binding
> > support, missing driver support?
> 
> Missing driver support in the pinctrl driver.

Provided Emil is okay with the patchset, I'll probably modify the
comment to mention what the todo depends on then.

> 
> > 
> > > +       };
> > > +};
> > > +
> > > +&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";
> > > +};
> > > -- 
> > > 2.50.0
> > > 
> 
Re: [PATCH v3 2/2] riscv: dts: starfive: add Orange Pi RV
Posted by E Shattow 1 week ago
On 11/24/25 05:21, Conor Dooley wrote:
> On Mon, Nov 24, 2025 at 07:08:55PM +0800, Icenowy Zheng wrote:
>> 在 2025-11-24星期一的 11:07 +0000,Conor Dooley写道:
>>> On Sun, Nov 23, 2025 at 02:50:45PM -0800, E Shattow wrote:
>>>> From: Icenowy Zheng <uwu@icenowy.me>
>>>>
>>>> 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

Discussion below about TODO comment and out-of-band IRQ applies to the
above featured device named in the commit message. I don't have this
board and so I reformat the commit message without adding statements
about what is working or not working compared to the VisionFive 2 common
features. There is certainly not a complete devicetree in this series to
enable the wireless connectivity features. I don't know about other
features, for example the audio and HDMI video output.

>>>> - 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>
>>>> ---
>>>>  arch/riscv/boot/dts/starfive/Makefile         |  1 +
>>>>  .../boot/dts/starfive/jh7110-orangepi-rv.dts  | 76
>>>> +++++++++++++++++++
>>>>  2 files changed, 77 insertions(+)
>>>>  create mode 100644 arch/riscv/boot/dts/starfive/jh7110-orangepi-
>>>> rv.dts
>>>>
>>>> diff --git a/arch/riscv/boot/dts/starfive/Makefile
>>>> b/arch/riscv/boot/dts/starfive/Makefile
>>>> index 62b659f89ba7..d34c8c79bc10 100644
>>>> --- a/arch/riscv/boot/dts/starfive/Makefile
>>>> +++ b/arch/riscv/boot/dts/starfive/Makefile
>>>> @@ -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-
>>>> v1.2a.dtb
>>>>  dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-
>>>> v1.3b.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
>>>> index 000000000000..16ec2767134e
>>>> --- /dev/null
>>>> +++ b/arch/riscv/boot/dts/starfive/jh7110-orangepi-rv.dts
>>>> @@ -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 */
>>>
>>> What's up with this TODO? Why's the gpio not here? Missing binding
>>> support, missing driver support?
>>
>> Missing driver support in the pinctrl driver.
> 
> Provided Emil is okay with the patchset, I'll probably modify the
> comment to mention what the todo depends on then.
> 

Conor, amending the TODO comment and/or commit message sounds good to me
if you want to.

The need for out-of-band IRQ also applies to Milk-V Mars CM of the same
AP6256 chipset SDIO functionality, where however, it does not appear to
me to be the same use of GPIO21.

Milk-V vendor board support package has compatible = "bcmdhd_wlan" for
an Android driver on the 5.15 kernel not present in mainline Linux today:

https://github.com/milkv-mars/mars-buildroot-sdk/blob/dev/linux/arch/riscv/boot/dts/starfive/jh7110-milkv-mars-cm.dtsi

So it's a different driver now than the vendor stuff and can likely be
improved to be functional but I'm not sure what to do. When Icenowy or
anyone will make suggestions I can test for Milk-V Mars CM, and add the
remaining devicetree description there too when it is known what to do.

-E

>>
>>>
>>>> +       };
>>>> +};
>>>> +
>>>> +&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";
>>>> +};
>>>> -- 
>>>> 2.50.0
>>>>
>>