mvebu: uDPU: switch default kernel and U-Boot PHY mode
authorJakov Petrina <jakov.petrina@sartura.hr>
Fri, 24 Apr 2020 12:38:58 +0000 (14:38 +0200)
committerLuka Perkov <luka.perkov@sartura.hr>
Sat, 9 May 2020 12:34:23 +0000 (14:34 +0200)
Certain SFP modules (most notably Nokia GPON ones) first check
connectivity on 1000base-x, and switch to 2500base-x afterwards. This
is considered a quirk so the phylink switches the interface to
2500base-x as well.

However, after power-cycling the uDPU device, network interface/SFP module
will not work correctly until the module is re-seated. This patch
resolves this issue by forcing the interface to be brought up in
2500base-x mode by default.

Signed-off-by: Jakov Petrina <jakov.petrina@sartura.hr>
Signed-off-by: Vladimir Vid <vladimir.vid@sartura.hr>
Cc: Luka Perkov <luka.perkov@sartura.hr>
package/boot/uboot-mvebu/patches/220-arm-dts-uDPU-switch-default-PHY-speed-to-3.125Gbit.patch [new file with mode: 0644]
target/linux/mvebu/patches-4.19/550-arm64-dts-uDPU-switch-PHY-operation-mode-to-2500base.patch [new file with mode: 0644]
target/linux/mvebu/patches-5.4/550-arm64-dts-uDPU-switch-PHY-operation-mode-to-2500base.patch [new file with mode: 0644]

diff --git a/package/boot/uboot-mvebu/patches/220-arm-dts-uDPU-switch-default-PHY-speed-to-3.125Gbit.patch b/package/boot/uboot-mvebu/patches/220-arm-dts-uDPU-switch-default-PHY-speed-to-3.125Gbit.patch
new file mode 100644 (file)
index 0000000..0e10b2c
--- /dev/null
@@ -0,0 +1,43 @@
+--- a/arch/arm/dts/armada-3720-uDPU.dts
++++ b/arch/arm/dts/armada-3720-uDPU.dts
+@@ -109,11 +109,11 @@
+ &comphy {
+       phy0 {
+               phy-type = <PHY_TYPE_SGMII1>;
+-              phy-speed = <PHY_SPEED_1_25G>;
++              phy-speed = <PHY_SPEED_3_125G>;
+       };
+         phy1 {
+                 phy-type = <PHY_TYPE_SGMII0>;
+-                phy-speed = <PHY_SPEED_1_25G>;
++                phy-speed = <PHY_SPEED_3_125G>;
+         };
+         phy2 {
+@@ -125,22 +125,16 @@
+ &eth0 {
+       pinctrl-0 = <&pcie_pins>;
+       status = "okay";
+-      phy-mode = "sgmii";
++      phy-mode = "sgmii-2500";
++      managed = "in-band-status";
+       phy = <&ethphy0>;
+-      fixed-link {
+-              speed = <1000>;
+-              full-duplex;
+-      };
+ };
+ &eth1 {
+       status = "okay";
+-      phy-mode = "sgmii";
++      phy-mode = "sgmii-2500";
++      managed = "in-band-status";
+       phy = <&ethphy1>;
+-      fixed-link {
+-              speed = <1000>;
+-              full-duplex;
+-      };
+ };
+ &i2c0 {
diff --git a/target/linux/mvebu/patches-4.19/550-arm64-dts-uDPU-switch-PHY-operation-mode-to-2500base.patch b/target/linux/mvebu/patches-4.19/550-arm64-dts-uDPU-switch-PHY-operation-mode-to-2500base.patch
new file mode 100644 (file)
index 0000000..7ed0a54
--- /dev/null
@@ -0,0 +1,20 @@
+--- a/arch/arm64/boot/dts/marvell/armada-3720-uDPU.dts
++++ b/arch/arm64/boot/dts/marvell/armada-3720-uDPU.dts
+@@ -145,7 +145,7 @@
+ &eth0 {
+       status = "okay";
+-      phy-mode = "sgmii";
++      phy-mode = "2500base-x";
+       managed = "in-band-status";
+       phys = <&comphy1 0>;
+       sfp = <&sfp_eth0>;
+@@ -153,7 +153,7 @@
+ &eth1 {
+       status = "okay";
+-      phy-mode = "sgmii";
++      phy-mode = "2500base-x";
+       managed = "in-band-status";
+       phys = <&comphy0 1>;
+       sfp = <&sfp_eth1>;
diff --git a/target/linux/mvebu/patches-5.4/550-arm64-dts-uDPU-switch-PHY-operation-mode-to-2500base.patch b/target/linux/mvebu/patches-5.4/550-arm64-dts-uDPU-switch-PHY-operation-mode-to-2500base.patch
new file mode 100644 (file)
index 0000000..8271531
--- /dev/null
@@ -0,0 +1,20 @@
+--- a/arch/arm64/boot/dts/marvell/armada-3720-uDPU.dts
++++ b/arch/arm64/boot/dts/marvell/armada-3720-uDPU.dts
+@@ -144,7 +144,7 @@
+ };
+ &eth0 {
+-      phy-mode = "sgmii";
++      phy-mode = "2500base-x";
+       status = "okay";
+       managed = "in-band-status";
+       phys = <&comphy1 0>;
+@@ -152,7 +152,7 @@
+ };
+ &eth1 {
+-      phy-mode = "sgmii";
++      phy-mode = "2500base-x";
+       status = "okay";
+       managed = "in-band-status";
+       phys = <&comphy0 1>;