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>
This commit is contained in:
parent
0c9f79be29
commit
80928805ba
|
@ -184,7 +184,7 @@ static int smsc95xx_mdio_read(struct net_device *netdev, int phy_id, int idx)
|
||||||
/* set the address, index & direction (read from PHY) */
|
/* set the address, index & direction (read from PHY) */
|
||||||
phy_id &= dev->mii.phy_id_mask;
|
phy_id &= dev->mii.phy_id_mask;
|
||||||
idx &= dev->mii.reg_num_mask;
|
idx &= dev->mii.reg_num_mask;
|
||||||
addr = (phy_id << 11) | (idx << 6) | MII_READ_;
|
addr = (phy_id << 11) | (idx << 6) | MII_READ_ | MII_BUSY_;
|
||||||
ret = smsc95xx_write_reg(dev, MII_ADDR, addr);
|
ret = smsc95xx_write_reg(dev, MII_ADDR, addr);
|
||||||
check_warn_goto_done(ret, "Error writing MII_ADDR");
|
check_warn_goto_done(ret, "Error writing MII_ADDR");
|
||||||
|
|
||||||
|
@ -221,7 +221,7 @@ static void smsc95xx_mdio_write(struct net_device *netdev, int phy_id, int idx,
|
||||||
/* set the address, index & direction (write to PHY) */
|
/* set the address, index & direction (write to PHY) */
|
||||||
phy_id &= dev->mii.phy_id_mask;
|
phy_id &= dev->mii.phy_id_mask;
|
||||||
idx &= dev->mii.reg_num_mask;
|
idx &= dev->mii.reg_num_mask;
|
||||||
addr = (phy_id << 11) | (idx << 6) | MII_WRITE_;
|
addr = (phy_id << 11) | (idx << 6) | MII_WRITE_ | MII_BUSY_;
|
||||||
ret = smsc95xx_write_reg(dev, MII_ADDR, addr);
|
ret = smsc95xx_write_reg(dev, MII_ADDR, addr);
|
||||||
check_warn_goto_done(ret, "Error writing MII_ADDR");
|
check_warn_goto_done(ret, "Error writing MII_ADDR");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue