[PATCH 2/3] arm64: dts: sophgo: add initial Milk-V Duo S board support
Inochi Amaoto
inochiama at gmail.com
Fri Oct 10 18:56:28 PDT 2025
On Fri, Oct 10, 2025 at 09:48:10PM -0400, Joshua Milas wrote:
> This adds initial arm64 support for the Milk-V Duo S board
> [1] making it possible to boot Linux to the command line.
>
> Link: https://milkv.io/duo-s [1]
>
> Signed-off-by: Joshua Milas <josh.milas at gmail.com>
> ---
> arch/arm64/boot/dts/sophgo/Makefile | 1 +
> .../boot/dts/sophgo/sg2000-milkv-duo-s.dts | 110 ++++++++++++++++++
> 2 files changed, 111 insertions(+)
> create mode 100644 arch/arm64/boot/dts/sophgo/sg2000-milkv-duo-s.dts
>
> diff --git a/arch/arm64/boot/dts/sophgo/Makefile b/arch/arm64/boot/dts/sophgo/Makefile
> index 94f52cd7d994..68aace728223 100644
> --- a/arch/arm64/boot/dts/sophgo/Makefile
> +++ b/arch/arm64/boot/dts/sophgo/Makefile
> @@ -1,2 +1,3 @@
> # SPDX-License-Identifier: GPL-2.0
> dtb-$(CONFIG_ARCH_SOPHGO) += sg2000-milkv-duo-module-01-evb.dtb
> +dtb-$(CONFIG_ARCH_SOPHGO) += sg2000-milkv-duo-s.dtb
> diff --git a/arch/arm64/boot/dts/sophgo/sg2000-milkv-duo-s.dts b/arch/arm64/boot/dts/sophgo/sg2000-milkv-duo-s.dts
> new file mode 100644
> index 000000000000..e9afad6fd106
> --- /dev/null
> +++ b/arch/arm64/boot/dts/sophgo/sg2000-milkv-duo-s.dts
> @@ -0,0 +1,110 @@
> +// SPDX-License-Identifier: (GPL-2.0 OR MIT)
> +
> +/dts-v1/;
> +
> +#include <dt-bindings/pinctrl/pinctrl-sg2000.h>
> +#include "sg2000.dtsi"
> +
> +/ {
> + model = "Milk-V Duo S";
> + compatible = "milkv,duo-s", "sophgo,sg2000";
> +
> + aliases {
> + mmc0 = &sdhci0;
> + serial0 = &uart0;
> + serial1 = &uart1;
> + serial2 = &uart2;
> + serial3 = &uart3;
> + };
> +
> + chosen {
> + stdout-path = "serial0:115200n8";
> + };
> +};
> +
> +&osc {
> + clock-frequency = <25000000>;
> +};
> +
> +&dmac {
> + status = "okay";
> +};
> +
> +&emmc {
> + bus-width = <4>;
> + no-1-8-v;
> + cap-mmc-hw-reset;
> + no-sd;
> + no-sdio;
> + non-removable;
> + status = "okay";
> +};
> +
> +&gmac0 {
> + status = "okay";
> +};
> +
> +&i2c1 {
> + status = "okay";
> +};
> +
> +&i2c2 {
> + status = "okay";
> +};
> +
> +&i2c3 {
> + status = "okay";
> +};
> +
> +&i2c4 {
> + status = "okay";
> +};
> +
> +&mdio {
> + status = "okay";
> +};
> +
> +&saradc {
> + status = "okay";
> +};
> +
> +&sdhci0 {
> + bus-width = <4>;
> + no-1-8-v;
> + disable-wp;
> + status = "okay";
> +};
> +
> +&sdhci1 {
> + bus-width = <4>;
> + cap-sdio-irq;
> + no-mmc;
> + no-sd;
> + non-removable;
> + status = "okay";
> +};
> +
> +&spi0 {
> + status = "okay";
> +};
> +
> +&spi3 {
> + status = "okay";
> +};
> +
> +&uart0 {
> + status = "okay";
> +};
> +
> +&uart1 {
> + status = "okay";
> +};
> +
> +&uart2 {
> + status = "okay";
> +};
> +
> +&uart3 {
> + status = "okay";
> +};
> +
> --
> 2.51.0
>
Only enable device that can be accessed directly. These devices share
some pins and only one of them can be used. I suggest enabling devices
that are accessed by default (which means it is compatible with the
vendor kernel).
This advice also applys to the riscv dts.
Regards,
Inochi
More information about the linux-riscv
mailing list