Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

smsc95xx: set MII_BUSY bit to read/write PHY regs

The device datasheet specifies the BUSY bit must be set when reading
or writing phy registers. This patch ensures we do that.

Signed-off-by: Steve Glendinning <steve.glendinning@shawell.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Steve Glendinning and committed by
David S. Miller
80928805 0c9f79be

+2 -2
+2 -2
drivers/net/usb/smsc95xx.c
··· 184 184 /* set the address, index & direction (read from PHY) */ 185 185 phy_id &= dev->mii.phy_id_mask; 186 186 idx &= dev->mii.reg_num_mask; 187 - addr = (phy_id << 11) | (idx << 6) | MII_READ_; 187 + addr = (phy_id << 11) | (idx << 6) | MII_READ_ | MII_BUSY_; 188 188 ret = smsc95xx_write_reg(dev, MII_ADDR, addr); 189 189 check_warn_goto_done(ret, "Error writing MII_ADDR"); 190 190 ··· 221 221 /* set the address, index & direction (write to PHY) */ 222 222 phy_id &= dev->mii.phy_id_mask; 223 223 idx &= dev->mii.reg_num_mask; 224 - addr = (phy_id << 11) | (idx << 6) | MII_WRITE_; 224 + addr = (phy_id << 11) | (idx << 6) | MII_WRITE_ | MII_BUSY_; 225 225 ret = smsc95xx_write_reg(dev, MII_ADDR, addr); 226 226 check_warn_goto_done(ret, "Error writing MII_ADDR"); 227 227