generic: phy-mediatek-xfi-tphy: fix SGMII issue
authorDaniel Golle <daniel@makrotopia.org>
Mon, 25 Mar 2024 21:58:49 +0000 (21:58 +0000)
committerDaniel Golle <daniel@makrotopia.org>
Mon, 25 Mar 2024 22:00:37 +0000 (22:00 +0000)
Fix issue of transmitting abnormal data which leads to link problems
in 1G and 2.5G SerDes modes (SGMII, 1000Base-X, 2500Base-X) on the
MediaTek MT7988 SoC.

Link: https://git01.mediatek.com/plugins/gitiles/openwrt/feeds/mtk-openwrt-feeds/+/b72d6cba92bf9e29fb035c03052fa1e86664a25b
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
target/linux/generic/pending-6.1/739-02-phy-add-driver-for-MediaTek-XFI-T-PHY.patch
target/linux/generic/pending-6.6/739-02-phy-add-driver-for-MediaTek-XFI-T-PHY.patch

index d7424020a783277876b601a4ccc047227a9bf663..1aa36fcd3dc4f0cccfa29fadfc8f582bc89b8464 100644 (file)
@@ -102,7 +102,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  phy-mtk-hdmi-drv-y                    += phy-mtk-hdmi-mt2701.o
 --- /dev/null
 +++ b/drivers/phy/mediatek/phy-mtk-xfi-tphy.c
-@@ -0,0 +1,392 @@
+@@ -0,0 +1,393 @@
 +// SPDX-License-Identifier: GPL-2.0-or-later
 +/* MediaTek 10GE SerDes PHY driver
 + *
@@ -272,6 +272,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 +                         XTP_PCS_PWD_ASYNC(2));
 +
 +      usleep_range(1, 5);
++      writel(XTP_LN_FRC_TX_DATA_EN, xfi_tphy->base + REG_DIG_LN_TRX_40);
 +
 +      /* Setup TX DA default value */
 +      mtk_xfi_tphy_rmw(xfi_tphy, 0x30b0, 0x30, 0x20);
index d7424020a783277876b601a4ccc047227a9bf663..1aa36fcd3dc4f0cccfa29fadfc8f582bc89b8464 100644 (file)
@@ -102,7 +102,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
  phy-mtk-hdmi-drv-y                    += phy-mtk-hdmi-mt2701.o
 --- /dev/null
 +++ b/drivers/phy/mediatek/phy-mtk-xfi-tphy.c
-@@ -0,0 +1,392 @@
+@@ -0,0 +1,393 @@
 +// SPDX-License-Identifier: GPL-2.0-or-later
 +/* MediaTek 10GE SerDes PHY driver
 + *
@@ -272,6 +272,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 +                         XTP_PCS_PWD_ASYNC(2));
 +
 +      usleep_range(1, 5);
++      writel(XTP_LN_FRC_TX_DATA_EN, xfi_tphy->base + REG_DIG_LN_TRX_40);
 +
 +      /* Setup TX DA default value */
 +      mtk_xfi_tphy_rmw(xfi_tphy, 0x30b0, 0x30, 0x20);