diff --git a/target/linux/generic/files/drivers/net/phy/ar8216.c b/target/linux/generic/files/drivers/net/phy/ar8216.c index 130ebf7126..8a40a322b5 100644 --- a/target/linux/generic/files/drivers/net/phy/ar8216.c +++ b/target/linux/generic/files/drivers/net/phy/ar8216.c @@ -260,7 +260,7 @@ ar8xxx_read(struct ar8xxx_priv *priv, int reg) mutex_lock(&bus->mdio_lock); bus->write(bus, 0x18, 0, page); - usleep_range(1000, 2000); /* wait for the page switch to propagate */ + wait_for_page_switch(); val = mii_read32(priv, 0x10 | r2, r1); mutex_unlock(&bus->mdio_lock); @@ -279,7 +279,7 @@ ar8xxx_write(struct ar8xxx_priv *priv, int reg, u32 val) mutex_lock(&bus->mdio_lock); bus->write(bus, 0x18, 0, page); - usleep_range(1000, 2000); /* wait for the page switch to propagate */ + wait_for_page_switch(); mii_write32(priv, 0x10 | r2, r1, val); mutex_unlock(&bus->mdio_lock); @@ -297,7 +297,7 @@ ar8xxx_rmw(struct ar8xxx_priv *priv, int reg, u32 mask, u32 val) mutex_lock(&bus->mdio_lock); bus->write(bus, 0x18, 0, page); - usleep_range(1000, 2000); /* wait for the page switch to propagate */ + wait_for_page_switch(); ret = mii_read32(priv, 0x10 | r2, r1); ret &= ~mask; diff --git a/target/linux/generic/files/drivers/net/phy/ar8216.h b/target/linux/generic/files/drivers/net/phy/ar8216.h index 2d025ae835..77df506256 100644 --- a/target/linux/generic/files/drivers/net/phy/ar8216.h +++ b/target/linux/generic/files/drivers/net/phy/ar8216.h @@ -555,4 +555,10 @@ ar8xxx_reg_clear(struct ar8xxx_priv *priv, int reg, u32 val) ar8xxx_rmw(priv, reg, val, 0); } +static inline void +wait_for_page_switch(void) +{ + udelay(5); +} + #endif