generic: ar8216: use bus->mdio_lock directly in ar8216_mii_{read,write}
SVN-Revision: 30837
This commit is contained in:
parent
a31e090255
commit
7112130105
1 changed files with 19 additions and 8 deletions
|
@ -77,14 +77,20 @@ static u32
|
||||||
ar8216_mii_read(struct ar8216_priv *priv, int reg)
|
ar8216_mii_read(struct ar8216_priv *priv, int reg)
|
||||||
{
|
{
|
||||||
struct phy_device *phy = priv->phy;
|
struct phy_device *phy = priv->phy;
|
||||||
|
struct mii_bus *bus = phy->bus;
|
||||||
u16 r1, r2, page;
|
u16 r1, r2, page;
|
||||||
u16 lo, hi;
|
u16 lo, hi;
|
||||||
|
|
||||||
split_addr((u32) reg, &r1, &r2, &page);
|
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 */
|
msleep(1); /* wait for the page switch to propagate */
|
||||||
lo = mdiobus_read(phy->bus, 0x10 | r2, r1);
|
lo = bus->read(bus, 0x10 | r2, r1);
|
||||||
hi = mdiobus_read(phy->bus, 0x10 | r2, r1 + 1);
|
hi = bus->read(bus, 0x10 | r2, r1 + 1);
|
||||||
|
|
||||||
|
mutex_unlock(&bus->mdio_lock);
|
||||||
|
|
||||||
return (hi << 16) | lo;
|
return (hi << 16) | lo;
|
||||||
}
|
}
|
||||||
|
@ -93,17 +99,22 @@ static void
|
||||||
ar8216_mii_write(struct ar8216_priv *priv, int reg, u32 val)
|
ar8216_mii_write(struct ar8216_priv *priv, int reg, u32 val)
|
||||||
{
|
{
|
||||||
struct phy_device *phy = priv->phy;
|
struct phy_device *phy = priv->phy;
|
||||||
|
struct mii_bus *bus = phy->bus;
|
||||||
u16 r1, r2, r3;
|
u16 r1, r2, r3;
|
||||||
u16 lo, hi;
|
u16 lo, hi;
|
||||||
|
|
||||||
split_addr((u32) reg, &r1, &r2, &r3);
|
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;
|
lo = val & 0xffff;
|
||||||
hi = (u16) (val >> 16);
|
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
|
static u32
|
||||||
|
|
Loading…
Reference in a new issue