generic: ar8216: use bus->mdio_lock directly in ar8216_mii_{read,write}

SVN-Revision: 30837
master
Gabor Juhos 13 years ago
parent a31e090255
commit 7112130105
  1. 27
      target/linux/generic/files/drivers/net/phy/ar8216.c

@ -77,14 +77,20 @@ static u32
ar8216_mii_read(struct ar8216_priv *priv, int reg)
{
struct phy_device *phy = priv->phy;
struct mii_bus *bus = phy->bus;
u16 r1, r2, page;
u16 lo, hi;
split_addr((u32) reg, &r1, &r2, &page);
mdiobus_write(phy->bus, 0x18, 0, page);
mutex_lock(&bus->mdio_lock);
bus->write(bus, 0x18, 0, page);
msleep(1); /* wait for the page switch to propagate */
lo = mdiobus_read(phy->bus, 0x10 | r2, r1);
hi = mdiobus_read(phy->bus, 0x10 | r2, r1 + 1);
lo = bus->read(bus, 0x10 | r2, r1);
hi = bus->read(bus, 0x10 | r2, r1 + 1);
mutex_unlock(&bus->mdio_lock);
return (hi << 16) | lo;
}
@ -93,17 +99,22 @@ static void
ar8216_mii_write(struct ar8216_priv *priv, int reg, u32 val)
{
struct phy_device *phy = priv->phy;
struct mii_bus *bus = phy->bus;
u16 r1, r2, r3;
u16 lo, hi;
split_addr((u32) reg, &r1, &r2, &r3);
mdiobus_write(phy->bus, 0x18, 0, r3);
msleep(1); /* wait for the page switch to propagate */
lo = val & 0xffff;
hi = (u16) (val >> 16);
mdiobus_write(phy->bus, 0x10 | r2, r1 + 1, hi);
mdiobus_write(phy->bus, 0x10 | r2, r1, lo);
mutex_lock(&bus->mdio_lock);
bus->write(bus, 0x18, 0, r3);
msleep(1); /* wait for the page switch to propagate */
bus->write(bus, 0x10 | r2, r1 + 1, hi);
bus->write(bus, 0x10 | r2, r1, lo);
mutex_unlock(&bus->mdio_lock);
}
static u32

Loading…
Cancel
Save