[][[openwrt][mt7988][config][GDM/GMAC FSM poll update]]

[Description]
Change check condition on GDM1/2/3 path

[Release-log]
-there is no GMAC FSM on 7988 GDM1 path
-take too much time after write CR


Change-Id: I23c207badb11a494bfc2377c538d790a96693f1b
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/7936185
diff --git a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index 4fbf87f..e804ef8 100644
--- a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -878,18 +878,26 @@
 static int mtk_gdm_fsm_get(struct mtk_mac *mac, u32 gdm)
 {
 	u32 fsm = mtk_r32(mac->hw, gdm);
-	u32 ret = 0;
+	u32 ret = 0, val = 0;
 
-	if (mac->type == MTK_GDM_TYPE)
+	switch (mac->type) {
+	case MTK_GDM_TYPE:
 		ret = fsm == 0;
-	else if (mac->type == MTK_XGDM_TYPE) {
-		if (mac->id == MTK_GMAC1_ID) {
-			if (((fsm & 0x7ffffff) == 0) &&
-				(mtk_r32(mac->hw, MTK_MAC_FSM(mac->id)) == 0x1010000))
-				ret = 1;
+		break;
+	case MTK_XGDM_TYPE:
+		ret = fsm == 0x10000000;
+		break;
+	default:
+		break;
+	}
+
+	if ((mac->type == MTK_XGDM_TYPE) && (mac->id != MTK_GMAC1_ID)) {
+		val = mtk_r32(mac->hw, MTK_MAC_FSM(mac->id));
+		if ((val == 0x02010100) || (val == 0x01010100)) {
+			ret = (mac->interface == PHY_INTERFACE_MODE_XGMII) ?
+				((fsm & 0x0fffffff) == 0) : ((fsm & 0x00ffffff) == 0);
 		} else
-			ret = ((mac->interface == PHY_INTERFACE_MODE_XGMII) ?
-				((fsm & 0xfffffff) == 0) : ((fsm & 0x0ffffff) == 0));
+			ret = 0;
 	}
 
 	return ret;
@@ -913,7 +921,7 @@
 		pr_info("%s mac id invalid", __func__);
 		break;
 	}
-	msleep(500);
+
 	while (i < 3) {
 		if (mtk_gdm_fsm_get(mac, gdm))
 			break;