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 = <®_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
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 = <®_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
>
在 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 = <®_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
> >
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 = <®_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
> > >
>
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 = <®_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
>>>>
>>
© 2016 - 2025 Red Hat, Inc.