[][kernel][mt7988][eth][mediatek-ge: Add finetune for TCT, TX power saving & slave mode]

[Description]
Add finetune for TCT, TX power saving & slave mode

[Release-log]
N/A

Change-Id: Ib6413ce30ec2bfa5386f30985fd0e41e24a46af4
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/6615934
Build: srv_hbgsm110
diff --git a/target/linux/mediatek/files-5.4/drivers/net/phy/mediatek-ge.c b/target/linux/mediatek/files-5.4/drivers/net/phy/mediatek-ge.c
index 062abae..27d13b9 100644
--- a/target/linux/mediatek/files-5.4/drivers/net/phy/mediatek-ge.c
+++ b/target/linux/mediatek/files-5.4/drivers/net/phy/mediatek-ge.c
@@ -77,6 +77,9 @@
 #define MTK_PHY_TANA_CAL_MODE		(0xc1)
 #define MTK_PHY_TANA_CAL_MODE_SHIFT	(8)
 
+#define MTK_PHY_RXADC_CTRL_RG7		(0xc6)
+#define   MTK_PHY_DA_AD_BUF_BIAS_LP_MASK	GENMASK(9, 8)
+
 #define MTK_PHY_RXADC_CTRL_RG9		(0xc8)
 #define   MTK_PHY_DA_RX_PSBN_TBT_MASK	GENMASK(14, 12)
 #define   MTK_PHY_DA_RX_PSBN_HBT_MASK	GENMASK(10, 8)
@@ -885,7 +888,24 @@
 		phy_write_mmd(phydev, MDIO_MMD_VEND1, i, val[i]);
 	}
 
+	/* TCT finetune */
 	phy_write_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RG_TX_FILTER, 0x5);
+
+	/* Disable TX power saving */
+	phy_modify_mmd(phydev, MDIO_MMD_VEND1, MTK_PHY_RXADC_CTRL_RG7,
+			MTK_PHY_DA_AD_BUF_BIAS_LP_MASK, 0x3);
+
+	/* Slave mode finetune*/
+	phy_select_page(phydev, MTK_PHY_PAGE_EXTENDED_52B5);
+	__phy_write(phydev, 0x12, 0x0);
+	__phy_write(phydev, 0x11, 0x700);
+	__phy_write(phydev, 0x10, 0x9686);
+
+	__phy_write(phydev, 0x12, 0x0);
+	__phy_write(phydev, 0x11, 0x64);
+	__phy_write(phydev, 0x10, 0x8f82);
+	phy_restore_page(phydev, MTK_PHY_PAGE_STANDARD, 0);
+
 }
 
 static int mt798x_phy_calibration(struct phy_device *phydev)