1
0
mirror of git://projects.qi-hardware.com/openwrt-xburst.git synced 2024-07-07 13:55:28 +03:00

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

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@30837 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
juhosg 2012-03-07 16:32:30 +00:00
parent 6ac61155e0
commit 044f0f9c5a

View File

@ -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