diff options
author | Florian Fainelli <f.fainelli@gmail.com> | 2015-05-12 20:33:26 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-05-14 20:40:55 +0300 |
commit | ea48b2b8ada594e985b86da98b0c966d1ae23a4b (patch) | |
tree | babdeed65a31a527da58bc173cc5e1eee83b35c9 | |
parent | ab6016e0c134c3a564e6750f5b246ba17ada4686 (diff) | |
download | linux-ea48b2b8ada594e985b86da98b0c966d1ae23a4b.tar.xz |
net: phy: mdio-gpio: Handle phy_ignore_ta_mask
Update mdiobb_read() to read whether the PHY has a broken turn-around,
and if it does, ignore it to make the read succeeed.
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/phy/mdio-bitbang.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/phy/mdio-bitbang.c b/drivers/net/phy/mdio-bitbang.c index daec9b05d168..61a543c788cc 100644 --- a/drivers/net/phy/mdio-bitbang.c +++ b/drivers/net/phy/mdio-bitbang.c @@ -165,8 +165,11 @@ static int mdiobb_read(struct mii_bus *bus, int phy, int reg) ctrl->ops->set_mdio_dir(ctrl, 0); - /* check the turnaround bit: the PHY should be driving it to zero */ - if (mdiobb_get_bit(ctrl) != 0) { + /* check the turnaround bit: the PHY should be driving it to zero, if this + * PHY is listed in phy_ignore_ta_mask as having broken TA, skip that + */ + if (mdiobb_get_bit(ctrl) != 0 && + !(bus->phy_ignore_ta_mask & (1 << phy))) { /* PHY didn't drive TA low -- flush any bits it * may be trying to send. */ |