smsc75xx: fix mdio reads and writes
smsc75xx needs MII_ACCESS_BUSY to be set to correctly trigger mdio I/O. Note smsc75xx is different from smsc95xx in this regard. Signed-off-by: Stephane Fillod <fillods@users.sf.net> Signed-off-by: Steve Glendinning <steve.glendinning@shawell.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7bdd305e02
commit
cb8722d30c
|
@ -171,7 +171,7 @@ static int smsc75xx_mdio_read(struct net_device *netdev, int phy_id, int idx)
|
||||||
idx &= dev->mii.reg_num_mask;
|
idx &= dev->mii.reg_num_mask;
|
||||||
addr = ((phy_id << MII_ACCESS_PHY_ADDR_SHIFT) & MII_ACCESS_PHY_ADDR)
|
addr = ((phy_id << MII_ACCESS_PHY_ADDR_SHIFT) & MII_ACCESS_PHY_ADDR)
|
||||||
| ((idx << MII_ACCESS_REG_ADDR_SHIFT) & MII_ACCESS_REG_ADDR)
|
| ((idx << MII_ACCESS_REG_ADDR_SHIFT) & MII_ACCESS_REG_ADDR)
|
||||||
| MII_ACCESS_READ;
|
| MII_ACCESS_READ | MII_ACCESS_BUSY;
|
||||||
ret = smsc75xx_write_reg(dev, MII_ACCESS, addr);
|
ret = smsc75xx_write_reg(dev, MII_ACCESS, addr);
|
||||||
check_warn_goto_done(ret, "Error writing MII_ACCESS");
|
check_warn_goto_done(ret, "Error writing MII_ACCESS");
|
||||||
|
|
||||||
|
@ -210,7 +210,7 @@ static void smsc75xx_mdio_write(struct net_device *netdev, int phy_id, int idx,
|
||||||
idx &= dev->mii.reg_num_mask;
|
idx &= dev->mii.reg_num_mask;
|
||||||
addr = ((phy_id << MII_ACCESS_PHY_ADDR_SHIFT) & MII_ACCESS_PHY_ADDR)
|
addr = ((phy_id << MII_ACCESS_PHY_ADDR_SHIFT) & MII_ACCESS_PHY_ADDR)
|
||||||
| ((idx << MII_ACCESS_REG_ADDR_SHIFT) & MII_ACCESS_REG_ADDR)
|
| ((idx << MII_ACCESS_REG_ADDR_SHIFT) & MII_ACCESS_REG_ADDR)
|
||||||
| MII_ACCESS_WRITE;
|
| MII_ACCESS_WRITE | MII_ACCESS_BUSY;
|
||||||
ret = smsc75xx_write_reg(dev, MII_ACCESS, addr);
|
ret = smsc75xx_write_reg(dev, MII_ACCESS, addr);
|
||||||
check_warn_goto_done(ret, "Error writing MII_ACCESS");
|
check_warn_goto_done(ret, "Error writing MII_ACCESS");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue