[][kernel][mt7986][eth][reset access invalid address]
[Description]
Fix issue that access invalid address(usxgmii)
move api:mtk_dump_usxgmii from mtk_sgmii.c to mtk_usxgmii.c
[Release-log]
N/A
Change-Id: I6d1caf7d935dfe361c0f035c5e322341fc3a05cf
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/7115763
diff --git a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_reset.c b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_reset.c
index e0955fc..f246e85 100644
--- a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_reset.c
+++ b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_eth_reset.c
@@ -206,10 +206,14 @@
mtk_dump_reg(eth, "WDMA", WDMA_BASE(0), 0x600);
mtk_dump_reg(eth, "PPE", 0x2200, 0x200);
mtk_dump_reg(eth, "GMAC", 0x10000, 0x300);
- mtk_dump_reg(eth, "XGMAC0", 0x12000, 0x300);
- mtk_dump_reg(eth, "XGMAC1", 0x13000, 0x300);
- mtk_dump_usxgmii(eth->xgmii->regmap_usxgmii[0], "USXGMII0", 0, 0x1000);
- mtk_dump_usxgmii(eth->xgmii->regmap_usxgmii[1], "USXGMII1", 0, 0x1000);
+ if (MTK_HAS_CAPS(eth->soc->caps, MTK_NETSYS_V3)) {
+ mtk_dump_reg(eth, "XGMAC0", 0x12000, 0x300);
+ mtk_dump_reg(eth, "XGMAC1", 0x13000, 0x300);
+ mtk_dump_usxgmii(eth->xgmii->regmap_usxgmii[0],
+ "USXGMII0", 0, 0x1000);
+ mtk_dump_usxgmii(eth->xgmii->regmap_usxgmii[1],
+ "USXGMII1", 0, 0x1000);
+ }
}
u32 mtk_monitor_wdma_tx(struct mtk_eth *eth)
diff --git a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_sgmii.c b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_sgmii.c
index 6c779cf..ac77ef2 100755
--- a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_sgmii.c
+++ b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_sgmii.c
@@ -375,21 +375,3 @@
val |= SGMII_AN_RESTART;
regmap_write(ss->regmap_sgmii[sid], SGMSYS_PCS_CONTROL_1, val);
}
-
-int mtk_dump_usxgmii(struct regmap *pmap, char *name, u32 offset, u32 range)
-{
- unsigned int cur = offset;
- unsigned int val1 = 0, val2 = 0, val3 = 0, val4 = 0;
-
- pr_info("\n============ %s ============ pmap:%x\n", name, pmap);
- while (cur < offset + range) {
- regmap_read(pmap, cur, &val1);
- regmap_read(pmap, cur + 0x4, &val2);
- regmap_read(pmap, cur + 0x8, &val3);
- regmap_read(pmap, cur + 0xc, &val4);
- pr_info("0x%x: %08x %08x %08x %08x\n", cur,
- val1, val2, val3, val4);
- cur += 0x10;
- }
- return 0;
-}
diff --git a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_usxgmii.c b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_usxgmii.c
index 08e1a7f..4a936ec 100644
--- a/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_usxgmii.c
+++ b/target/linux/mediatek/files-5.4/drivers/net/ethernet/mediatek/mtk_usxgmii.c
@@ -520,3 +520,22 @@
return 0;
}
+
+int mtk_dump_usxgmii(struct regmap *pmap, char *name, u32 offset, u32 range)
+{
+ unsigned int cur = offset;
+ unsigned int val1 = 0, val2 = 0, val3 = 0, val4 = 0;
+
+ pr_info("\n============ %s ============ pmap:%x\n", name, pmap);
+ while (cur < offset + range) {
+ regmap_read(pmap, cur, &val1);
+ regmap_read(pmap, cur + 0x4, &val2);
+ regmap_read(pmap, cur + 0x8, &val3);
+ regmap_read(pmap, cur + 0xc, &val4);
+ pr_info("0x%x: %08x %08x %08x %08x\n", cur,
+ val1, val2, val3, val4);
+ cur += 0x10;
+ }
+ return 0;
+}
+