Add initial Milk-V Duo S board support
Subsystems (6)
v3 cover Add initial Milk-V Duo S board support
This adds an initial device tree for the Milk-V Duo S board with support for reading from the SD card and network over Ethernet. This is continued work from Michael Opdenacker's v6 series [1] on the ARM64 and RISCV side. It has been tested with ARM64 and RISCV64 to boot from an SD card, have networking, and read I2C slave devices over i2c4.
v3
- Added sg2000 interrupt controller and timer to documentation
- Added sg2000.dtsi for RISCV and moved DTS over to use it
- remove devices from DTS's to match what is available in the default pinmux config. spi0-2, i2c0-3, uart1-4
- Added i2c4 and spi3 aliases
v2: http s://lore.kernel.org/sophgo/[email protected]/
- Made new entry in docs to avoid DTC error
- "Milk-V DuoS" -> "Milk-V Duo S"
- Sorting of aliases
- Added uart*, emmc, mdio, gmac0, i2c*, spi*, dmac, saradc to device tree matching what is available on the pinout [2]
- Added riscv device tree
v1: https://lore.kernel.org/sophgo/[email protected]/
Joshua Milas (5):
dt-bindings: soc: sophgo: add Milk-V Duo S board compatibles
arm64: dts: sophgo: add initial Milk-V Duo S board support
dt-bindings: soc: sophgo: add sg2000 plic and clint documentation
riscv64: dts: sophgo: add SG2000 dtsi
riscv64: dts: sophgo: add initial Milk-V Duo S board support
.../sifive,plic-1.0.0.yaml | 1 + .../bindings/soc/sophgo/sophgo.yaml | 4 + .../bindings/timer/sifive,clint.yaml | 1 + arch/arm64/boot/dts/sophgo/Makefile | 1 + .../boot/dts/sophgo/sg2000-milkv-duo-s.dts | 80 +++++++++++++++++++ arch/riscv/boot/dts/sophgo/Makefile | 1 + .../boot/dts/sophgo/sg2000-milkv-duo-s.dts | 80 +++++++++++++++++++ arch/riscv/boot/dts/sophgo/sg2000.dtsi | 53 ++++++++++++ 8 files changed, 221 insertions(+) create mode 100644 arch/arm64/boot/dts/sophgo/sg2000-milkv-duo-s.dts create mode 100644 arch/riscv/boot/dts/sophgo/sg2000-milkv-duo-s.dts create mode 100644 arch/riscv/boot/dts/sophgo/sg2000.dtsi
base-commit: 0251a1deaec78252cb311fc8305d3670bc5eee0e
Signature · 1 line
2.51.1
PATCH v3 1/5 dt-bindings: soc: sophgo: add Milk-V Duo S board compatibles
Document the compatible strings for the Milk-V Duo S board [1] which uses the SOPHGO SG2000 SoC [2].
--- Documentation/devicetree/bindings/soc/sophgo/sophgo.yaml | 4 ++++ 1 file changed, 4 insertions(+)
Documentation/devicetree/bindings/soc/sophgo/sophgo.yaml +4 -0
@@ -31,6 +31,10 @@ properties: - milkv,duo-module-01-evb - const: milkv,duo-module-01 - const: sophgo,sg2000 + - items: + - enum: + - milkv,duo-s + - const: sophgo,sg2000 - items: - enum: - sipeed,licheerv-nano-b
Signature · 1 line
2.51.1
Re: [PATCH v3 1/5] dt-bindings: soc: sophgo: add Milk-V Duo S board compatibles
Quoted 5 lines · Joshua Milas
Document the compatible strings for the Milk-V Duo S board [1] which uses the SOPHGO SG2000 SoC [2].
Drop second link, not relevant. You are not adding new SoC here, are you?
Quoted 3 lines
Signed-off-by Joshua Milas <[email protected]>---
No changes against v2? You received comments, didn't you?
Best regards,
Krzysztof
Re: [PATCH v3 1/5] dt-bindings: soc: sophgo: add Milk-V Duo S board compatibles
Hi Krzysztof,
Apologies for missing the change, I got ahead of myself. I updated my changelog for an upcoming v4 patch.
Quoted 2 lines
How did you resolve previous comments on bindings? Nothing mentioned here.
Which issues specifically? i2c issues were resolved by updating the .config for drivers. I have yet to resolve the spi issues.
Have a good day,
- Joshua Milas
Re: [PATCH v3 1/5] dt-bindings: soc: sophgo: add Milk-V Duo S board compatibles
Quoted 10 lines · Joshua Milas
Hi Krzysztof,
Apologies for missing the change, I got ahead of myself. I updated my changelog for an upcoming v4 patch.
Quoted 2 lines
How did you resolve previous comments on bindings? Nothing mentioned here.
Which issues specifically? i2c issues were resolved by updating the .config for drivers. I have yet to resolve the spi issues.
Each issue you received comment on. You received review and asking now to repeat is basically asking us to do same work twice which wastes our time.
Best regards,
Krzysztof
PATCH v3 2/5 arm64: dts: sophgo: add initial Milk-V Duo S board support
In reply to Joshua MilasAdds initial arm64 support for the Milk-V Duo S board
[1] making it possible to boot Linux to the command line.
--- arch/arm64/boot/dts/sophgo/Makefile | 1 + .../boot/dts/sophgo/sg2000-milkv-duo-s.dts | 80 +++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 arch/arm64/boot/dts/sophgo/sg2000-milkv-duo-s.dts
arch/arm64/boot/dts/sophgo/Makefile +1 -0
@@ -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
arch/arm64/boot/dts/sophgo/sg2000-milkv-duo-s.dts new file +80 -0
80 lines not on this page · raw message
Signature · 1 line
2.51.1
Re: [PATCH v3 2/5] arm64: dts: sophgo: add initial Milk-V Duo S board support
Hi Joshua
Many thanks for this update! I'd love to have this board supported in mainline, and when this happens, I'll add it to Yocto's meta-riscv layer to make it easy to use.
Quoted 96 lines · Joshua Milas
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 <[email protected]>--- arch/arm64/boot/dts/sophgo/Makefile | 1 + .../boot/dts/sophgo/sg2000-milkv-duo-s.dts | 80 +++++++++++++++++++ 2 files changed, 81 insertions(+)create mode 100644
arch/arm64/boot/dts/sophgo/sg2000-milkv-duo-s.dtsarch/arm64/boot/dts/sophgo/Makefile +1
-0@@ -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.dtbarch/arm64/boot/dts/sophgo/sg2000-milkv-duo-s.dts new file +70
-0@@ -0,0 +1,80 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) + +/dts-v1/; + +#include "sg2000.dtsi" + +/ { + model = "Milk-V Duo S"; + compatible = "milkv,duo-s", "sophgo,sg2000"; + + aliases { + i2c4 = &i2c4; + mmc0 = &sdhci0; + serial0 = &uart0; + spi3 = &spi3; + }; + + 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"; +}; + +&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";
arch/arm64/boot/dts/sophgo/sg2000-milkv-duo-s.dts line 80
Quoted 10 lines
arch/arm64/boot/dts/sophgo/sg2000-milkv-duo-s.dts new file +10
-0+}; + +&spi3 { + status = "okay"; +}; + +&uart0 { + status = "okay"; +}; +
I managed to boot the board and run tests:
Tested successfully:
* uart0: boot console
* mmc0 (sdhci0?): root filesystem
Issues
*
eth0:
ifconfig eth0 172.24.0.2
[ 48.893725] stmmaceth 4070000.ethernet eth0: Register MEM_TYPE_PAGE_POOL RxQ-0 [ 48.903077] stmmaceth 4070000.ethernet eth0: cannot attach to PHY (error: -ENODEV) ifconfig: SIOCSIFFLAGS: No such device
I believe I have all drivers enabled though...
* emmc:
[ 2.730194] mmc2: Failed to initialize a non-removable card [ 2.764843] mmc1: Failed to initialize a non-removable card
I tested with a board that has an eMMC
* i2c4: detected by "i2cdetect -l"
but no devices found by "i2cdetect -r 4"
I tried both pins 3/4 and pins 50/48, with two different devices connected to the bus.
Which pins did you use? I could check the SoC pin muxing, but your answer will save me time :D
Would you mind sharing your defconfig file ("make savedefconfig") via a private message or through a link (to avoid sending the entire file to the list)? Thanks again
Cheers
Michael.
Signature · 4 lines
Michael Opdenacker Root Commit Yocto Project and OpenEmbedded Training course - Learn by doing: https://rootcommit.com/training/yocto/
Re: [PATCH v3 2/5] arm64: dts: sophgo: add initial Milk-V Duo S board support
Greetings,
Quoted 9 lines · Michael Opdenacker
I managed to boot the board and run tests:
Tested successfully:
* uart0: boot console
* mmc0 (sdhci0?): root filesystemIssues
...
I realize I replied to the arm64 part of the thread, but indeed I ran my tests on riscv. Michael.
Signature · 10 lines
Michael Opdenacker Root Commit Yocto Project and OpenEmbedded Training course - Learn by doing: https://rootcommit.com/training/yocto/ _______________________________________________ linux-riscv mailing list [email protected] http://lists.infradead.org/mailman/listinfo/linux-riscv
Re: [PATCH v3 2/5] arm64: dts: sophgo: add initial Milk-V Duo S board support
Hi Michael,
Not sure what is going on with your eth or i2c as I donyt see those errors, let me try testing the riscv side as I have been running most of my tests on the arm64 side and have not run the riscv tests in a bit.
I used pins 3/5 for i2c4 using i2cdetect -y -a -r 4. It seems the docs might have SDA and SCL reversed, unless my i2c test device has it backwards I have SCL connected to pin 3 and SDA connected to pin 5.
I am using an SD card variant and have not touched emmc myself.
Take care,
- Joshua Milas
PATCH v3 3/5 dt-bindings: soc: sophgo: add sg2000 plic and clint documentation
In reply to Joshua MilasDocument the compatible strings for the sg2000 [1] interrupt controller and timer.
--- .../bindings/interrupt-controller/sifive,plic-1.0.0.yaml | 1 + Documentation/devicetree/bindings/timer/sifive,clint.yaml | 1 + 2 files changed, 2 insertions(+)
Documentation/devicetree/bindings/interrupt-controller/sifive,plic-1.0.0.yaml +1 -0
@@ -69,6 +69,7 @@ properties: - allwinner,sun20i-d1-plic - sophgo,cv1800b-plic - sophgo,cv1812h-plic + - sophgo,sg2000-plic - sophgo,sg2002-plic - sophgo,sg2042-plic - sophgo,sg2044-plic
Documentation/devicetree/bindings/timer/sifive,clint.yaml +1 -0
@@ -48,6 +48,7 @@ properties: - allwinner,sun20i-d1-clint - sophgo,cv1800b-clint - sophgo,cv1812h-clint + - sophgo,sg2000-clint - sophgo,sg2002-clint - thead,th1520-clint - const: thead,c900-clint
Signature · 1 line
2.51.1
PATCH v3 4/5 riscv64: dts: sophgo: add SG2000 dtsi
In reply to Joshua MilasAdds sg2000.dtsi on the RISCV side.
--- arch/riscv/boot/dts/sophgo/sg2000.dtsi | 53 ++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 arch/riscv/boot/dts/sophgo/sg2000.dtsi
arch/riscv/boot/dts/sophgo/sg2000.dtsi new file +53 -0
@@ -0,0 +1,53 @@ +// SPDX-License-Identifier: (GPL-2.0 OR MIT) + +#define SOC_PERIPHERAL_IRQ(nr) ((nr) + 16) + +#include <dt-bindings/interrupt-controller/irq.h> +#include <dt-bindings/pinctrl/pinctrl-sg2000.h> +#include "cv180x-cpus.dtsi" +#include "cv180x.dtsi" +#include "cv181x.dtsi" + +/ { + compatible = "sophgo,sg2000"; + + memory@80000000 { + device_type = "memory"; + reg = <0x80000000 0x10000000>; + }; + + soc { + interrupt-parent = <&plic>; + dma-noncoherent; + + pinctrl: pinctrl@3001000 { + compatible = "sophgo,sg2000-pinctrl"; + reg = <0x03001000 0x1000>, + <0x05027000 0x1000>; + reg-names = "sys", "rtc"; + }; + + clk: clock-controller@3002000 { + compatible = "sophgo,sg2000-clk"; + reg = <0x03002000 0x1000>; + clocks = <&osc>; + #clock-cells = <1>; + }; + + plic: interrupt-controller@70000000 { + compatible = "sophgo,sg2000-plic", "thead,c900-plic"; + reg = <0x70000000 0x4000000>; + interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>; + interrupt-controller; + #address-cells = <0>; + #interrupt-cells = <2>; + riscv,ndev = <101>; + }; + + clint: timer@74000000 { + compatible = "sophgo,sg2000-clint", "thead,c900-clint"; + reg = <0x74000000 0x10000>; + interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>; + }; + }; +};
Signature · 1 line
2.51.1
PATCH v3 5/5 riscv64: dts: sophgo: add initial Milk-V Duo S board support
In reply to Joshua MilasThis adds initial riscv support for the Milk-V Duo S board
[1] making it possible to boot Linux to the command line.
--- arch/riscv/boot/dts/sophgo/Makefile | 1 + .../boot/dts/sophgo/sg2000-milkv-duo-s.dts | 80 +++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 arch/riscv/boot/dts/sophgo/sg2000-milkv-duo-s.dts
arch/riscv/boot/dts/sophgo/Makefile +1 -0
@@ -1,6 +1,7 @@ # SPDX-License-Identifier: GPL-2.0 dtb-$(CONFIG_ARCH_SOPHGO) += cv1800b-milkv-duo.dtb dtb-$(CONFIG_ARCH_SOPHGO) += cv1812h-huashan-pi.dtb +dtb-$(CONFIG_ARCH_SOPHGO) += sg2000-milkv-duo-s.dtb dtb-$(CONFIG_ARCH_SOPHGO) += sg2002-licheerv-nano-b.dtb dtb-$(CONFIG_ARCH_SOPHGO) += sg2042-milkv-pioneer.dtb dtb-$(CONFIG_ARCH_SOPHGO) += sg2042-evb-v1.dtb
arch/riscv/boot/dts/sophgo/sg2000-milkv-duo-s.dts new file +80 -0
80 lines not on this page · raw message
Signature · 1 line
2.51.1
Quoted 7 lines · Joshua Milas
This adds an initial device tree for the Milk-V Duo S board with support for reading from the SD card and network over Ethernet. This is continued work from Michael Opdenacker's v6 series [1] on the ARM64 and RISCV side. It has been tested with ARM64 and RISCV64 to boot from an SD card, have networking, and read I2C slave devices over i2c4.
Quoted 6 lines
v3
- Added sg2000 interrupt controller and timer to documentation
- Addedsg2000.dtsifor RISCV and moved DTS over to use it
- remove devices from DTS's to match what is available in the default pinmux config. spi0-2, i2c0-3, uart1-4
- Added i2c4 and spi3 aliases
How did you resolve previous comments on bindings? Nothing mentioned here.
Best regards,
Krzysztof