mt7620: gsw: make IntPHY and ExtPHY share mdio addr 4 possible
authorChen Minqiang <ptpt52@gmail.com>
Fri, 3 Aug 2018 17:14:07 +0000 (01:14 +0800)
committerJohn Crispin <john@phrozen.org>
Mon, 6 Aug 2018 05:12:31 +0000 (07:12 +0200)
To share mdio addr for IntPHY and ExtPHY,
as described in the documentation (MT7620_ProgrammingGuide.pdf).
(refer: http://download.villagetelco.org/hardware/MT7620/MT7620_ProgrammingGuide.pdf)

when port4 setup to work as gmac mode, dts like:

&gsw {
    mediatek,port4 = "gmac";
};

we should set SYSCFG1.GE2_MODE==0x0 (RGMII).
but SYSCFG1.GE2_MODE may have been set to 3(RJ-45) by uboot/default
so we need to re-set it to 0x0

before this changes:
gsw: 4FE + 2GE may not work correctly and MDIO addr 4 cannot be used by ExtPHY

after this changes:
gsw: 4FE + 2GE works and MDIO addr 4 can be used by ExtPHY

Signed-off-by: Chen Minqiang <ptpt52@gmail.com>
target/linux/ramips/files-4.14/drivers/net/ethernet/mediatek/gsw_mt7620.c

index 192603a68c89ca32e7b3425135434149f0812398..b1f1794bc98bb2ed27bd8e13b03fa3cbabad2345 100644 (file)
@@ -189,6 +189,12 @@ static void mt7620_hw_init(struct mt7620_gsw *gsw, int mdio_mode)
                _mt7620_mii_write(gsw, 4, 16, 0x1313);
                _mt7620_mii_write(gsw, 4, 0, 0x3100);
                pr_info("gsw: setting port4 to ephy mode\n");
+       } else if (!mdio_mode) {
+               u32 val = rt_sysc_r32(SYSC_REG_CFG1);
+
+               val &= ~(3 << 14);
+               rt_sysc_w32(val, SYSC_REG_CFG1);
+               pr_info("gsw: setting port4 to gmac mode\n");
        }
 }