From: Chuanhong Guo Date: Sun, 20 Jan 2019 14:25:25 +0000 (+0800) Subject: generic: ar8216: do a software reset for switch during hw_init X-Git-Url: http://git.lede-project.org./?a=commitdiff_plain;h=c8c2ef1d495dd3fd3096ac508e91a02f9c583ea8;p=openwrt%2Fstaging%2Fadrian.git generic: ar8216: do a software reset for switch during hw_init 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 --- diff --git a/target/linux/generic/files/drivers/net/phy/ar8216.c b/target/linux/generic/files/drivers/net/phy/ar8216.c index a33d4b31fe..259adef822 100644 --- a/target/linux/generic/files/drivers/net/phy/ar8216.c +++ b/target/linux/generic/files/drivers/net/phy/ar8216.c @@ -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;