| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- From: Jonas Gorski <[email protected]>
- Subject: ar71xx: add a workaround for ar8316 not always driving the TA bit to low
- AR8316 behind a GPIO bitbanged MDIO bus fails to drive the turnaround bit
- to low despite returning a valid value. Ignore it and just use the
- returned value anyway.
- SVN-Revision: 28422
- ---
- drivers/net/mdio/mdio-bitbang.c | 16 ++-----------------
- 1 file changed, 2 insertions(+), 14 deletions(-)
- --- a/drivers/net/mdio/mdio-bitbang.c
- +++ b/drivers/net/mdio/mdio-bitbang.c
- @@ -152,7 +152,7 @@ static int mdiobb_cmd_addr(struct mdiobb
- int mdiobb_read(struct mii_bus *bus, int phy, int reg)
- {
- struct mdiobb_ctrl *ctrl = bus->priv;
- - int ret, i;
- + int ret;
-
- if (reg & MII_ADDR_C45) {
- reg = mdiobb_cmd_addr(ctrl, phy, reg);
- @@ -162,19 +162,7 @@ int mdiobb_read(struct mii_bus *bus, int
-
- ctrl->ops->set_mdio_dir(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.
- - */
- - for (i = 0; i < 32; i++)
- - mdiobb_get_bit(ctrl);
- -
- - return 0xffff;
- - }
- + mdiobb_get_bit(ctrl);
-
- ret = mdiobb_get_num(ctrl, 16);
- mdiobb_get_bit(ctrl);
|