]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
net: mediatek: mt7988: restore PHY page on PHY setting exit
authorChristian Marangi <ansuelsmth@gmail.com>
Sat, 20 Sep 2025 16:09:42 +0000 (18:09 +0200)
committerJerome Forissier <jerome.forissier@linaro.org>
Wed, 22 Oct 2025 09:16:10 +0000 (11:16 +0200)
On exiting the phy_setting function for MT7988, the PHY page is never
restored to Page 0. This can cause all kind of problem with reading the
status of the PHY at runtime.

Correctly restore PHY page on exiting the PHY setting function.

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
drivers/net/mtk_eth/mt7988.c

index 87b6ed30cd00e75dfd2459806315a1381107f43a..06bbe049da3de9c98b2ca405e4d57af2c6fae917 100644 (file)
@@ -34,8 +34,10 @@ static void mt7988_phy_setting(struct mt753x_switch_priv *priv)
        u32 i;
 
        for (i = 0; i < MT753X_NUM_PHYS; i++) {
-               /* Enable HW auto downshift */
+               /* Set PHY to PHY page 1 */
                mt7531_mii_write(priv, i, 0x1f, 0x1);
+
+               /* Enable HW auto downshift */
                val = mt7531_mii_read(priv, i, PHY_EXT_REG_14);
                val |= PHY_EN_DOWN_SHFIT;
                mt7531_mii_write(priv, i, PHY_EXT_REG_14, val);
@@ -44,6 +46,9 @@ static void mt7988_phy_setting(struct mt753x_switch_priv *priv)
                val = mt7531_mii_read(priv, i, PHY_EXT_REG_17);
                val |= PHY_LINKDOWN_POWER_SAVING_EN;
                mt7531_mii_write(priv, i, PHY_EXT_REG_17, val);
+
+               /* Restore PHY to PHY page 0 */
+               mt7531_mii_write(priv, i, 0x1f, 0x0);
        }
 }