From d5e1ea5b05fe62c296701251c628ced6c68a6a80 Mon Sep 17 00:00:00 2001 From: Joshua Milas Date: Mon, 15 Jun 2026 08:03:22 -0400 Subject: [PATCH] arm64: dts: sophgo: add initial Milk-V Duo S board support 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 Link: https://milkv.io/duo-s [1] Link: https://patch.msgid.link/20260615120324.1527881-2-josh.milas@gmail.com Signed-off-by: Inochi Amaoto # Trim empty line Signed-off-by: Chen Wang --- arch/arm64/boot/dts/sophgo/Makefile | 1 + .../boot/dts/sophgo/sg2000-milkv-duo-s.dts | 244 ++++++++++++++++++ 2 files changed, 245 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..78a257839f6f --- /dev/null +++ b/arch/arm64/boot/dts/sophgo/sg2000-milkv-duo-s.dts @@ -0,0 +1,244 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) + +/dts-v1/; + +#include +#include "sg2000.dtsi" + +/ { + model = "Milk-V Duo S"; + compatible = "milkv,duo-s", "sophgo,sg2000"; + + aliases { + i2c4 = &i2c4; + mmc0 = &sdhci0; + mmc1 = &emmc; + mmc2 = &sdhci1; + serial0 = &uart0; + serial4 = &uart4; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + wifi_pwrseq: wifi-pwrseq { + compatible = "mmc-pwrseq-simple"; + reset-gpios = <&porta 15 GPIO_ACTIVE_LOW>; + power-off-delay-us = <50000>; + post-power-on-delay-ms = <200>; + }; +}; + +&osc { + clock-frequency = <25000000>; +}; + +&pinctrl { + emmc_cfg: emmc-cfg { + emmc-rstn-pins { + pinmux = ; + bias-pull-up; + drive-strength-microamp = <10800>; + power-source = <1800>; + }; + + emmc-clk-pins { + pinmux = ; + bias-pull-up; + drive-strength-microamp = <10800>; + power-source = <1800>; + }; + + emmc-cmd-pins { + pinmux = ; + bias-pull-up; + drive-strength-microamp = <10800>; + power-source = <1800>; + }; + + emmc-data-pins { + pinmux = , + , + , + ; + bias-pull-up; + drive-strength-microamp = <10800>; + power-source = <1800>; + }; + }; + + i2c4_cfg: i2c4-cfg { + i2c4-pins { + pinmux = , + ; + bias-pull-up; + drive-strength-microamp = <4000>; + power-source = <1800>; + }; + }; + + sdhci0_cfg: sdhci0-cfg { + sdhci0-cd-pins { + pinmux = ; + bias-pull-up; + drive-strength-microamp = <10800>; + power-source = <3300>; + }; + + sdhci0-clk-pins { + pinmux = ; + bias-pull-up; + drive-strength-microamp = <16100>; + power-source = <3300>; + }; + + sdhci0-cmd-pins { + pinmux = ; + bias-pull-up; + drive-strength-microamp = <10800>; + power-source = <3300>; + }; + + sdhci0-data-pins { + pinmux = , + , + , + ; + bias-pull-up; + drive-strength-microamp = <10800>; + power-source = <3300>; + }; + }; + + sdhci1_cfg: sdhci1-cfg { + sdhci1-clk-pins { + pinmux = ; + bias-pull-up; + drive-strength-microamp = <10800>; + power-source = <1800>; + }; + + sdhci1-cmd-pins { + pinmux = ; + bias-pull-up; + drive-strength-microamp = <10800>; + power-source = <1800>; + }; + + sdhci1-data-pins { + pinmux = , + , + , + ; + bias-pull-up; + drive-strength-microamp = <10800>; + power-source = <1800>; + }; + }; + + uart0_cfg: uart0-cfg { + uart0-pins { + pinmux = , + ; + bias-pull-up; + drive-strength-microamp = <10800>; + power-source = <3300>; + }; + }; + + uart4_cfg: uart4-cfg { + uart4-data-pins { + pinmux = , + ; + drive-strength-microamp = <10800>; + power-source = <3300>; + }; + + uart4-control-pins { + pinmux = , + ; + bias-pull-up; + drive-strength-microamp = <10800>; + power-source = <3300>; + }; + }; +}; + +&dmac { + status = "okay"; +}; + +&emmc { + bus-width = <4>; + no-1-8-v; + cap-mmc-hw-reset; + no-sd; + no-sdio; + non-removable; + pinctrl-0 = <&emmc_cfg>; + pinctrl-names = "default"; + status = "okay"; +}; + +&gmac0 { + status = "okay"; +}; + +&i2c4 { + pinctrl-0 = <&i2c4_cfg>; + pinctrl-names = "default"; + status = "okay"; +}; + +&mdio { + status = "okay"; +}; + +&saradc { + status = "okay"; +}; + +&sdhci0 { + bus-width = <4>; + disable-wp; + no-1-8-v; + pinctrl-0 = <&sdhci0_cfg>; + pinctrl-names = "default"; + status = "okay"; +}; + +&sdhci1 { + bus-width = <4>; + cap-sdio-irq; + cap-sd-highspeed; + keep-power-in-suspend; + no-mmc; + no-sd; + non-removable; + max-frequency = <150000000>; + mmc-pwrseq = <&wifi_pwrseq>; + pinctrl-0 = <&sdhci1_cfg>; + pinctrl-names = "default"; + sd-uhs-sdr50; + sd-uhs-sdr104; + status = "okay"; +}; + +&uart0 { + pinctrl-0 = <&uart0_cfg>; + pinctrl-names = "default"; + status = "okay"; +}; + +&uart4 { + pinctrl-0 = <&uart4_cfg>; + pinctrl-names = "default"; + uart-has-rtscts; + status = "okay"; +}; + +&usb { + dr_mode = "host"; + status = "okay"; +};