From b1cfbff0a7d386a7b3d3aa19b9971e0ea6d1db65 Mon Sep 17 00:00:00 2001 From: Jakov Petrina Date: Fri, 24 Apr 2020 14:38:58 +0200 Subject: [PATCH] mvebu: uDPU: switch default kernel and U-Boot PHY mode 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 Signed-off-by: Vladimir Vid Cc: Luka Perkov --- ...witch-default-PHY-speed-to-3.125Gbit.patch | 43 +++++++++++++++++++ ...witch-PHY-operation-mode-to-2500base.patch | 20 +++++++++ ...witch-PHY-operation-mode-to-2500base.patch | 20 +++++++++ 3 files changed, 83 insertions(+) create mode 100644 package/boot/uboot-mvebu/patches/220-arm-dts-uDPU-switch-default-PHY-speed-to-3.125Gbit.patch create mode 100644 target/linux/mvebu/patches-4.19/550-arm64-dts-uDPU-switch-PHY-operation-mode-to-2500base.patch create mode 100644 target/linux/mvebu/patches-5.4/550-arm64-dts-uDPU-switch-PHY-operation-mode-to-2500base.patch 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 index 0000000000..0e10b2c767 --- /dev/null +++ b/package/boot/uboot-mvebu/patches/220-arm-dts-uDPU-switch-default-PHY-speed-to-3.125Gbit.patch @@ -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-speed = ; ++ phy-speed = ; + }; + phy1 { + phy-type = ; +- phy-speed = ; ++ phy-speed = ; + }; + + phy2 { +@@ -125,22 +125,16 @@ + ð0 { + pinctrl-0 = <&pcie_pins>; + status = "okay"; +- phy-mode = "sgmii"; ++ phy-mode = "sgmii-2500"; ++ managed = "in-band-status"; + phy = <ðphy0>; +- fixed-link { +- speed = <1000>; +- full-duplex; +- }; + }; + + ð1 { + status = "okay"; +- phy-mode = "sgmii"; ++ phy-mode = "sgmii-2500"; ++ managed = "in-band-status"; + phy = <ðphy1>; +- 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 index 0000000000..7ed0a54344 --- /dev/null +++ b/target/linux/mvebu/patches-4.19/550-arm64-dts-uDPU-switch-PHY-operation-mode-to-2500base.patch @@ -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 @@ + + ð0 { + status = "okay"; +- phy-mode = "sgmii"; ++ phy-mode = "2500base-x"; + managed = "in-band-status"; + phys = <&comphy1 0>; + sfp = <&sfp_eth0>; +@@ -153,7 +153,7 @@ + + ð1 { + 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 index 0000000000..82715312d8 --- /dev/null +++ b/target/linux/mvebu/patches-5.4/550-arm64-dts-uDPU-switch-PHY-operation-mode-to-2500base.patch @@ -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 @@ + }; + + ð0 { +- phy-mode = "sgmii"; ++ phy-mode = "2500base-x"; + status = "okay"; + managed = "in-band-status"; + phys = <&comphy1 0>; +@@ -152,7 +152,7 @@ + }; + + ð1 { +- phy-mode = "sgmii"; ++ phy-mode = "2500base-x"; + status = "okay"; + managed = "in-band-status"; + phys = <&comphy0 1>;