mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2025-02-02 16:41:07 +02: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:
parent
6ac61155e0
commit
044f0f9c5a
@ -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…
x
Reference in New Issue
Block a user