mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-19 13:48:06 +00:00
generic: ar8216: use bus->mdio_lock directly in ar8216_mii_{read,write}
SVN-Revision: 30837
This commit is contained in:
parent
a31e090255
commit
7112130105
@ -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…
Reference in New Issue
Block a user