* [PATCH v5 0/3] riscv: dts: sophgo: Add Milk-V Duo 256M board support
@ 2026-07-25 17:53 Chen-Yu Yeh
2026-07-25 17:53 ` [PATCH v5 2/3] riscv: dts: sophgo: cv180x: Add PWR_GPIO controller Chen-Yu Yeh
2026-07-25 17:53 ` [PATCH v5 3/3] riscv: dts: sophgo: Add Milk-V Duo 256M board support Chen-Yu Yeh
0 siblings, 2 replies; 3+ messages in thread
From: Chen-Yu Yeh @ 2026-07-25 17:53 UTC (permalink / raw)
To: Paul Walmsley, Palmer Dabbelt, Albert Ou, Alexandre Ghiti,
Chen Wang, Inochi Amaoto, linux-riscv, sophgo
Cc: Chen Wang, Chen-Yu Yeh
The Milk-V Duo 256M is a small form factor development board based on
the Sophgo SG2002 SoC.
This series adds the board binding, the PWR_GPIO controller node for
the CV180x/CV181x family, and the board device tree with support for
the UART console, SD/MMC, USB host and the onboard blue status LED.
Tested on actual Milk-V Duo 256M hardware: verified boot to shell,
SD card rootfs mount, USB host (root hub detected) and the heartbeat
LED, both via the default heartbeat trigger and manual sysfs control.
A U-Boot series adding support for the same board [0] refers to this
series as the canonical device tree, and intends to switch to the
upstream kernel DT once this lands.
[0] https://lore.kernel.org/u-boot/20260710-add-milkv-duo256m-v1-0-0f761100361d@baylibre.com/
Changes since v4:
- Fix the coprocessor RTOS reserved region in the board dts. v4 carried
over the address from the 64M Duo (0x83f40000/0xc0000), which sits at
the top of 64MB and is wrong for this board. The vendor device tree
passed by the bootloader declares memory as <0x80000000 0x0fe00000>,
i.e. the firmware keeps the top 2MB of the 256MB DRAM for the RTOS, so
the region is 0x8fe00000/0x200000. This matches cv1812h-huashan-pi,
which has the same amount of DRAM. Verified on hardware:
OF: reserved mem: 0x000000008fe00000..0x000000008fffffff (2048 KiB)
nomap non-reusable region@8fe00000
(Reported by sashiko-bot)
Changes since v3:
- Move the pwr_gpio node in cv180x.dtsi to follow unit-address ordering,
placing it between usb@4340000 and rtc@5025000 (Inochi Amaoto)
Changes since v2:
- Add the PWR_GPIO (porte) controller node to cv180x.dtsi as a new
patch, instead of dropping the LED node (Inochi Amaoto)
- Restore the gpio-leds node for the onboard blue status LED
- Add my copyright to the new board dts
- Drop the unrelated Makefile trailing-newline change
Changes since v1:
- Removed the leds node because &porte was not supported in cv180x.dtsi
(reworked in v3)
- Retained the &usb node because it is already defined in cv180x.dtsi
Chen-Yu Yeh (3):
dt-bindings: soc: sophgo: add Milk-V Duo 256M board
riscv: dts: sophgo: cv180x: Add PWR_GPIO controller
riscv: dts: sophgo: Add Milk-V Duo 256M board support
.../bindings/soc/sophgo/sophgo.yaml | 4 +
arch/riscv/boot/dts/sophgo/Makefile | 1 +
arch/riscv/boot/dts/sophgo/cv180x.dtsi | 18 +++
.../boot/dts/sophgo/sg2002-milkv-duo256m.dts | 121 ++++++++++++++++++
4 files changed, 144 insertions(+)
create mode 100644 arch/riscv/boot/dts/sophgo/sg2002-milkv-duo256m.dts
--
2.43.0
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH v5 2/3] riscv: dts: sophgo: cv180x: Add PWR_GPIO controller
2026-07-25 17:53 [PATCH v5 0/3] riscv: dts: sophgo: Add Milk-V Duo 256M board support Chen-Yu Yeh
@ 2026-07-25 17:53 ` Chen-Yu Yeh
2026-07-25 17:53 ` [PATCH v5 3/3] riscv: dts: sophgo: Add Milk-V Duo 256M board support Chen-Yu Yeh
1 sibling, 0 replies; 3+ messages in thread
From: Chen-Yu Yeh @ 2026-07-25 17:53 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Alexandre Ghiti, Chen Wang,
Inochi Amaoto, devicetree, linux-riscv, sophgo, linux-kernel
Cc: Chen Wang, Chen-Yu Yeh
The CV180x/CV181x family has an additional DesignWare APB GPIO
controller (PWR_GPIO) located in the always-on power domain at
0x5021000. Add the node so that boards can reference GPIOs in this
bank, such as status LEDs.
Signed-off-by: Chen-Yu Yeh <chenyou910331@gmail.com>
---
arch/riscv/boot/dts/sophgo/cv180x.dtsi | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/arch/riscv/boot/dts/sophgo/cv180x.dtsi b/arch/riscv/boot/dts/sophgo/cv180x.dtsi
index 06b0ce5a2db7..8bf67ee4eca5 100644
--- a/arch/riscv/boot/dts/sophgo/cv180x.dtsi
+++ b/arch/riscv/boot/dts/sophgo/cv180x.dtsi
@@ -448,6 +448,24 @@ usb: usb@4340000 {
status = "disabled";
};
+ gpio4: gpio@5021000 {
+ compatible = "snps,dw-apb-gpio";
+ reg = <0x5021000 0x1000>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ porte: gpio-controller@0 {
+ compatible = "snps,dw-apb-gpio-port";
+ gpio-controller;
+ #gpio-cells = <2>;
+ ngpios = <32>;
+ reg = <0>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ interrupts = <SOC_PERIPHERAL_IRQ(54) IRQ_TYPE_LEVEL_HIGH>;
+ };
+ };
+
rtc@5025000 {
compatible = "sophgo,cv1800b-rtc", "syscon";
reg = <0x5025000 0x2000>;
--
2.43.0
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [PATCH v5 3/3] riscv: dts: sophgo: Add Milk-V Duo 256M board support
2026-07-25 17:53 [PATCH v5 0/3] riscv: dts: sophgo: Add Milk-V Duo 256M board support Chen-Yu Yeh
2026-07-25 17:53 ` [PATCH v5 2/3] riscv: dts: sophgo: cv180x: Add PWR_GPIO controller Chen-Yu Yeh
@ 2026-07-25 17:53 ` Chen-Yu Yeh
1 sibling, 0 replies; 3+ messages in thread
From: Chen-Yu Yeh @ 2026-07-25 17:53 UTC (permalink / raw)
To: Rob Herring, Krzysztof Kozlowski, Conor Dooley, Paul Walmsley,
Palmer Dabbelt, Albert Ou, Alexandre Ghiti, Chen Wang,
Inochi Amaoto, devicetree, linux-riscv, sophgo, linux-kernel
Cc: Chen Wang, Chen-Yu Yeh
The Milk-V Duo 256M is a small form factor development board based on
the Sophgo SG2002 SoC.
This patch adds basic device tree support for the board, including:
- UART console
- SD/MMC controller
- USB host
- Onboard blue status LED (connected to PWR_GPIO[2] / porte 2)
Tested on actual Milk-V Duo 256M hardware, verified boot to shell and
heartbeat LED functionality.
Signed-off-by: Chen-Yu Yeh <chenyou910331@gmail.com>
---
arch/riscv/boot/dts/sophgo/Makefile | 1 +
.../boot/dts/sophgo/sg2002-milkv-duo256m.dts | 121 ++++++++++++++++++
2 files changed, 122 insertions(+)
create mode 100644 arch/riscv/boot/dts/sophgo/sg2002-milkv-duo256m.dts
diff --git a/arch/riscv/boot/dts/sophgo/Makefile b/arch/riscv/boot/dts/sophgo/Makefile
index 6f65526d4193..1ff69cf7f178 100644
--- a/arch/riscv/boot/dts/sophgo/Makefile
+++ b/arch/riscv/boot/dts/sophgo/Makefile
@@ -2,6 +2,7 @@
dtb-$(CONFIG_ARCH_SOPHGO) += cv1800b-milkv-duo.dtb
dtb-$(CONFIG_ARCH_SOPHGO) += cv1812h-huashan-pi.dtb
dtb-$(CONFIG_ARCH_SOPHGO) += sg2002-licheerv-nano-b.dtb
+dtb-$(CONFIG_ARCH_SOPHGO) += sg2002-milkv-duo256m.dtb
dtb-$(CONFIG_ARCH_SOPHGO) += sg2042-milkv-pioneer.dtb
dtb-$(CONFIG_ARCH_SOPHGO) += sg2042-evb-v1.dtb
dtb-$(CONFIG_ARCH_SOPHGO) += sg2042-evb-v2.dtb
diff --git a/arch/riscv/boot/dts/sophgo/sg2002-milkv-duo256m.dts b/arch/riscv/boot/dts/sophgo/sg2002-milkv-duo256m.dts
new file mode 100644
index 000000000000..a2797c0bd767
--- /dev/null
+++ b/arch/riscv/boot/dts/sophgo/sg2002-milkv-duo256m.dts
@@ -0,0 +1,121 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright (C) 2023 Jisheng Zhang <jszhang@kernel.org>
+ * Copyright (C) 2026 Chen-Yu Yeh <chenyou910331@gmail.com>
+ */
+
+/dts-v1/;
+
+#include "sg2002.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/leds/common.h>
+
+/ {
+ model = "Milk-V Duo 256M";
+ compatible = "milkv,duo256m", "sophgo,sg2002";
+
+ aliases {
+ serial0 = &uart0;
+ serial1 = &uart1;
+ serial2 = &uart2;
+ serial3 = &uart3;
+ serial4 = &uart4;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+ };
+
+ leds {
+ compatible = "gpio-leds";
+
+ led-0 {
+ gpios = <&porte 2 GPIO_ACTIVE_HIGH>;
+ color = <LED_COLOR_ID_BLUE>;
+ function = LED_FUNCTION_STATUS;
+ linux,default-trigger = "heartbeat";
+ };
+ };
+
+ reserved-memory {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ coprocessor_rtos: region@8fe00000 {
+ reg = <0x8fe00000 0x200000>;
+ no-map;
+ };
+ };
+};
+
+&osc {
+ clock-frequency = <25000000>;
+};
+
+&pinctrl {
+ uart0_cfg: uart0-cfg {
+ uart0-pins {
+ pinmux = <PINMUX(PIN_UART0_TX, 0)>,
+ <PINMUX(PIN_UART0_RX, 0)>;
+ bias-pull-up;
+ drive-strength-microamp = <10800>;
+ power-source = <3300>;
+ };
+ };
+
+ sdhci0_cfg: sdhci0-cfg {
+ sdhci0-clk-pins {
+ pinmux = <PINMUX(PIN_SD0_CLK, 0)>;
+ bias-pull-up;
+ drive-strength-microamp = <16100>;
+ power-source = <3300>;
+ };
+
+ sdhci0-cmd-pins {
+ pinmux = <PINMUX(PIN_SD0_CMD, 0)>;
+ bias-pull-up;
+ drive-strength-microamp = <10800>;
+ power-source = <3300>;
+ };
+
+ sdhci0-data-pins {
+ pinmux = <PINMUX(PIN_SD0_D0, 0)>,
+ <PINMUX(PIN_SD0_D1, 0)>,
+ <PINMUX(PIN_SD0_D2, 0)>,
+ <PINMUX(PIN_SD0_D3, 0)>;
+ bias-pull-up;
+ drive-strength-microamp = <10800>;
+ power-source = <3300>;
+ };
+
+ sdhci0-cd-pins {
+ pinmux = <PINMUX(PIN_SD0_CD, 0)>;
+ bias-pull-up;
+ drive-strength-microamp = <10800>;
+ power-source = <3300>;
+ };
+ };
+};
+
+&sdhci0 {
+ pinctrl-0 = <&sdhci0_cfg>;
+ pinctrl-names = "default";
+ status = "okay";
+ bus-width = <4>;
+ no-1-8-v;
+ no-mmc;
+ no-sdio;
+ disable-wp;
+};
+
+&uart0 {
+ pinctrl-0 = <&uart0_cfg>;
+ pinctrl-names = "default";
+ status = "okay";
+};
+
+&usb {
+ dr_mode = "host";
+ status = "okay";
+};
--
2.43.0
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-07-25 17:54 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-25 17:53 [PATCH v5 0/3] riscv: dts: sophgo: Add Milk-V Duo 256M board support Chen-Yu Yeh
2026-07-25 17:53 ` [PATCH v5 2/3] riscv: dts: sophgo: cv180x: Add PWR_GPIO controller Chen-Yu Yeh
2026-07-25 17:53 ` [PATCH v5 3/3] riscv: dts: sophgo: Add Milk-V Duo 256M board support Chen-Yu Yeh
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox