Milk-V Jupiter uses an RGMII PHY for each port and uses GPIO for PHY
reset.
Signed-off-by: Vivian Wang <wangruikang@iscas.ac.cn>
---
arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts | 46 +++++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts b/arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts
index 4483192141049caa201c093fb206b6134a064f42..c5933555c06b66f40e61fe2b9c159ba0770c2fa1 100644
--- a/arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts
+++ b/arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts
@@ -20,6 +20,52 @@ chosen {
};
};
+ð0 {
+ phy-handle = <&rgmii0>;
+ phy-mode = "rgmii-id";
+ pinctrl-names = "default";
+ pinctrl-0 = <&gmac0_cfg>;
+ rx-internal-delay-ps = <0>;
+ tx-internal-delay-ps = <0>;
+ status = "okay";
+
+ mdio-bus {
+ #address-cells = <0x1>;
+ #size-cells = <0x0>;
+
+ reset-gpios = <&gpio K1_GPIO(110) GPIO_ACTIVE_LOW>;
+ reset-delay-us = <10000>;
+ reset-post-delay-us = <100000>;
+
+ rgmii0: phy@1 {
+ reg = <0x1>;
+ };
+ };
+};
+
+ð1 {
+ phy-handle = <&rgmii1>;
+ phy-mode = "rgmii-id";
+ pinctrl-names = "default";
+ pinctrl-0 = <&gmac1_cfg>;
+ rx-internal-delay-ps = <0>;
+ tx-internal-delay-ps = <250>;
+ status = "okay";
+
+ mdio-bus {
+ #address-cells = <0x1>;
+ #size-cells = <0x0>;
+
+ reset-gpios = <&gpio K1_GPIO(115) GPIO_ACTIVE_LOW>;
+ reset-delay-us = <10000>;
+ reset-post-delay-us = <100000>;
+
+ rgmii1: phy@1 {
+ reg = <0x1>;
+ };
+ };
+};
+
&uart0 {
pinctrl-names = "default";
pinctrl-0 = <&uart0_2_cfg>;
--
2.49.0
Hi Vivian, Thanks for you work! On 2025/7/2 14:01, Vivian Wang wrote: > Milk-V Jupiter uses an RGMII PHY for each port and uses GPIO for PHY > reset. > > Signed-off-by: Vivian Wang <wangruikang@iscas.ac.cn> Successfully tested with iperf3 on Milk-V Jupiter. TCP Rx: 941 Mbits/sec TCP Tx: 943 Mbits/sec UDP Rx: 956 Mbits/sec UDP Tx: 956 Mbits/sec Tested-by: Junhui Liu <junhui.liu@pigmoral.tech> > --- > arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts | 46 +++++++++++++++++++++++ > 1 file changed, 46 insertions(+) > > diff --git a/arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts b/arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts > index 4483192141049caa201c093fb206b6134a064f42..c5933555c06b66f40e61fe2b9c159ba0770c2fa1 100644 > --- a/arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts > +++ b/arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts > @@ -20,6 +20,52 @@ chosen { > }; > }; > > +ð0 { > + phy-handle = <&rgmii0>; > + phy-mode = "rgmii-id"; > + pinctrl-names = "default"; > + pinctrl-0 = <&gmac0_cfg>; > + rx-internal-delay-ps = <0>; > + tx-internal-delay-ps = <0>; > + status = "okay"; > + > + mdio-bus { > + #address-cells = <0x1>; > + #size-cells = <0x0>; > + > + reset-gpios = <&gpio K1_GPIO(110) GPIO_ACTIVE_LOW>; > + reset-delay-us = <10000>; > + reset-post-delay-us = <100000>; > + > + rgmii0: phy@1 { > + reg = <0x1>; > + }; > + }; > +}; > + > +ð1 { > + phy-handle = <&rgmii1>; > + phy-mode = "rgmii-id"; > + pinctrl-names = "default"; > + pinctrl-0 = <&gmac1_cfg>; > + rx-internal-delay-ps = <0>; > + tx-internal-delay-ps = <250>; > + status = "okay"; > + > + mdio-bus { > + #address-cells = <0x1>; > + #size-cells = <0x0>; > + > + reset-gpios = <&gpio K1_GPIO(115) GPIO_ACTIVE_LOW>; > + reset-delay-us = <10000>; > + reset-post-delay-us = <100000>; > + > + rgmii1: phy@1 { > + reg = <0x1>; > + }; > + }; > +}; > + > &uart0 { > pinctrl-names = "default"; > pinctrl-0 = <&uart0_2_cfg>; > -- Best regards, Junhui Liu
Hi Junhui, On 7/3/25 14:48, Junhui Liu wrote: > Hi Vivian, > Thanks for you work! > > On 2025/7/2 14:01, Vivian Wang wrote: >> Milk-V Jupiter uses an RGMII PHY for each port and uses GPIO for PHY >> reset. >> >> Signed-off-by: Vivian Wang <wangruikang@iscas.ac.cn> > > Successfully tested with iperf3 on Milk-V Jupiter. > > TCP Rx: 941 Mbits/sec > TCP Tx: 943 Mbits/sec > UDP Rx: 956 Mbits/sec > UDP Tx: 956 Mbits/sec > > Tested-by: Junhui Liu <junhui.liu@pigmoral.tech> > Thanks for the testing! I do not have a Milk-V Jupiter handy, so that was very helpful. As discussed [1], I will post a v4 soon with minor fixes and also sans the DTS changes. I will put your Tested-by on the driver patch instead of this DTS patch, so it will show up in v4. Are you okay with this? If you don't like it feel free to tell me. Regards, Vivian "dramforever" Wang [1]: https://lore.kernel.org/spacemit/a9cad07c-0973-43c3-89f3-95b856b575df@iscas.ac.cn/ >> --- >> arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts | 46 >> +++++++++++++++++++++++ >> 1 file changed, 46 insertions(+) >> >> diff --git a/arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts >> b/arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts >> index >> 4483192141049caa201c093fb206b6134a064f42..c5933555c06b66f40e61fe2b9c159ba0770c2fa1 >> 100644 >> --- a/arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts >> +++ b/arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts >> @@ -20,6 +20,52 @@ chosen { >> }; >> }; >> +ð0 { >> + phy-handle = <&rgmii0>; >> + phy-mode = "rgmii-id"; >> + pinctrl-names = "default"; >> + pinctrl-0 = <&gmac0_cfg>; >> + rx-internal-delay-ps = <0>; >> + tx-internal-delay-ps = <0>; >> + status = "okay"; >> + >> + mdio-bus { >> + #address-cells = <0x1>; >> + #size-cells = <0x0>; >> + >> + reset-gpios = <&gpio K1_GPIO(110) GPIO_ACTIVE_LOW>; >> + reset-delay-us = <10000>; >> + reset-post-delay-us = <100000>; >> + >> + rgmii0: phy@1 { >> + reg = <0x1>; >> + }; >> + }; >> +}; >> + >> +ð1 { >> + phy-handle = <&rgmii1>; >> + phy-mode = "rgmii-id"; >> + pinctrl-names = "default"; >> + pinctrl-0 = <&gmac1_cfg>; >> + rx-internal-delay-ps = <0>; >> + tx-internal-delay-ps = <250>; >> + status = "okay"; >> + >> + mdio-bus { >> + #address-cells = <0x1>; >> + #size-cells = <0x0>; >> + >> + reset-gpios = <&gpio K1_GPIO(115) GPIO_ACTIVE_LOW>; >> + reset-delay-us = <10000>; >> + reset-post-delay-us = <100000>; >> + >> + rgmii1: phy@1 { >> + reg = <0x1>; >> + }; >> + }; >> +}; >> + >> &uart0 { >> pinctrl-names = "default"; >> pinctrl-0 = <&uart0_2_cfg>; >>
Hi Vivian, On 03/07/2025 15:46, Vivian Wang wrote: > Hi Junhui, > > On 7/3/25 14:48, Junhui Liu wrote: >> Hi Vivian, >> Thanks for you work! >> >> On 2025/7/2 14:01, Vivian Wang wrote: >>> Milk-V Jupiter uses an RGMII PHY for each port and uses GPIO for PHY >>> reset. >>> >>> Signed-off-by: Vivian Wang <wangruikang@iscas.ac.cn> >> >> Successfully tested with iperf3 on Milk-V Jupiter. >> >> TCP Rx: 941 Mbits/sec >> TCP Tx: 943 Mbits/sec >> UDP Rx: 956 Mbits/sec >> UDP Tx: 956 Mbits/sec >> >> Tested-by: Junhui Liu <junhui.liu@pigmoral.tech> >> > Thanks for the testing! I do not have a Milk-V Jupiter handy, so that > was very helpful. > > As discussed [1], I will post a v4 soon with minor fixes and also sans > the DTS changes. I will put your Tested-by on the driver patch instead > of this DTS patch, so it will show up in v4. > > Are you okay with this? If you don't like it feel free to tell me. It's okay to me. Thanks! > > Regards, > Vivian "dramforever" Wang > > [1]: https://lore.kernel.org/spacemit/a9cad07c-0973-43c3-89f3-95b856b575df@iscas.ac.cn/ > >>> --- >>> arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts | 46 >>> +++++++++++++++++++++++ >>> 1 file changed, 46 insertions(+) >>> >>> diff --git a/arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts >>> b/arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts >>> index >>> 4483192141049caa201c093fb206b6134a064f42..c5933555c06b66f40e61fe2b9c159ba0770c2fa1 >>> 100644 >>> --- a/arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts >>> +++ b/arch/riscv/boot/dts/spacemit/k1-milkv-jupiter.dts >>> @@ -20,6 +20,52 @@ chosen { >>> }; >>> }; >>> +ð0 { >>> + phy-handle = <&rgmii0>; >>> + phy-mode = "rgmii-id"; >>> + pinctrl-names = "default"; >>> + pinctrl-0 = <&gmac0_cfg>; >>> + rx-internal-delay-ps = <0>; >>> + tx-internal-delay-ps = <0>; >>> + status = "okay"; >>> + >>> + mdio-bus { >>> + #address-cells = <0x1>; >>> + #size-cells = <0x0>; >>> + >>> + reset-gpios = <&gpio K1_GPIO(110) GPIO_ACTIVE_LOW>; >>> + reset-delay-us = <10000>; >>> + reset-post-delay-us = <100000>; >>> + >>> + rgmii0: phy@1 { >>> + reg = <0x1>; >>> + }; >>> + }; >>> +}; >>> + >>> +ð1 { >>> + phy-handle = <&rgmii1>; >>> + phy-mode = "rgmii-id"; >>> + pinctrl-names = "default"; >>> + pinctrl-0 = <&gmac1_cfg>; >>> + rx-internal-delay-ps = <0>; >>> + tx-internal-delay-ps = <250>; >>> + status = "okay"; >>> + >>> + mdio-bus { >>> + #address-cells = <0x1>; >>> + #size-cells = <0x0>; >>> + >>> + reset-gpios = <&gpio K1_GPIO(115) GPIO_ACTIVE_LOW>; >>> + reset-delay-us = <10000>; >>> + reset-post-delay-us = <100000>; >>> + >>> + rgmii1: phy@1 { >>> + reg = <0x1>; >>> + }; >>> + }; >>> +}; >>> + >>> &uart0 { >>> pinctrl-names = "default"; >>> pinctrl-0 = <&uart0_2_cfg>; >>> -- Best regards, Junhui Liu
© 2016 - 2025 Red Hat, Inc.