diff options
author | Peter Korsgaard <jacmet@sunsite.dk> | 2011-03-10 01:52:13 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-03-14 18:02:14 -0400 |
commit | af1dc13e607c1d1a909e21ee87aafbe7b9d4ae81 (patch) | |
tree | f1651a8643c90b238b259c01dd91fa56fb9d632c /drivers/net/phy | |
parent | dc187cb381f1bceb30498861ece510245c43ed9f (diff) |
phylib: SIOCGMIIREG/SIOCSMIIREG: allow access to all mdio addresses
phylib would silently ignore the phy_id argument to these ioctls and
perform the read/write with the active phydev address, whereas most
non-phylib drivers seem to allow access to all mdio addresses
(E.G. pcnet_cs).
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/phy')
-rw-r--r-- | drivers/net/phy/phy.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c index a8445c72fc13..f7670330f988 100644 --- a/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c | |||
@@ -319,7 +319,8 @@ int phy_mii_ioctl(struct phy_device *phydev, | |||
319 | /* fall through */ | 319 | /* fall through */ |
320 | 320 | ||
321 | case SIOCGMIIREG: | 321 | case SIOCGMIIREG: |
322 | mii_data->val_out = phy_read(phydev, mii_data->reg_num); | 322 | mii_data->val_out = mdiobus_read(phydev->bus, mii_data->phy_id, |
323 | mii_data->reg_num); | ||
323 | break; | 324 | break; |
324 | 325 | ||
325 | case SIOCSMIIREG: | 326 | case SIOCSMIIREG: |
@@ -350,8 +351,9 @@ int phy_mii_ioctl(struct phy_device *phydev, | |||
350 | } | 351 | } |
351 | } | 352 | } |
352 | 353 | ||
353 | phy_write(phydev, mii_data->reg_num, val); | 354 | mdiobus_write(phydev->bus, mii_data->phy_id, |
354 | 355 | mii_data->reg_num, val); | |
356 | |||
355 | if (mii_data->reg_num == MII_BMCR && | 357 | if (mii_data->reg_num == MII_BMCR && |
356 | val & BMCR_RESET && | 358 | val & BMCR_RESET && |
357 | phydev->drv->config_init) { | 359 | phydev->drv->config_init) { |