generic: ar8216: do a software reset for switch during hw_init
authorChuanhong Guo <gch981213@gmail.com>
Sun, 20 Jan 2019 14:25:25 +0000 (22:25 +0800)
committerPetr Štetiar <ynezz@true.cz>
Sun, 24 Mar 2019 00:44:27 +0000 (01:44 +0100)
This applies to ar8216 and ar8236. QCA's newer U-boot will enable
the switch mdio master for FE switches which makes phy inaccessible
from CPU mdio. (e.g. on TP-Link TL-WR941N v7 Chinese version which
uses QCA9558+AR8236.) For these devices PHY probing is broken and
mdio device probing is a must. We also need to disable switch mdio
master in driver for later PHY initialization.

Do a soft reset during hw_init so that mdio master can be disabled
and expose PHYs to CPU mdio for later PHY accessing.

Signed-off-by: Chuanhong Guo <gch981213@gmail.com>
target/linux/generic/files/drivers/net/phy/ar8216.c

index a33d4b31fe2ebcaffb721f14ed906c5fc0ebd587..259adef8225901dc1b8cc7df4341a87ecd3f4a43 100644 (file)
@@ -705,6 +705,9 @@ ar8216_hw_init(struct ar8xxx_priv *priv)
        if (priv->initialized)
                return 0;
 
+       ar8xxx_write(priv, AR8216_REG_CTRL, AR8216_CTRL_RESET);
+       ar8xxx_reg_wait(priv, AR8216_REG_CTRL, AR8216_CTRL_RESET, 0, 1000);
+
        ar8xxx_phy_init(priv);
 
        priv->initialized = true;