Author: nbd Date: 2015-01-24 20:42:01 +0100 (Sat, 24 Jan 2015) New Revision: 44103
Modified: trunk/target/linux/generic/files/drivers/net/phy/ar8216.c trunk/target/linux/generic/files/drivers/net/phy/ar8216.h Log: ar8216: decrease page switch wait time Until a few years ago the page switch wait time was set to msleep(1) what was changed to usleep_range(1000, 2000) later. I can not imagine that a low-level operation like switching page on register level takes so much time. Most likely the value of 1ms was initially set to check whether it fixes an issue and then remained w/o further checking whether also a smaller value would be sufficient. Now the wait time is set to 5us and I successfully tested this on AR8327. IMHO 5us should be plenty of time for all supported chips. However I couldn't test this due to missing hardware. If other chips should need a longer wait time we can add the wait time as a parameter to the ar8xxx_chip struct. Signed-off-by: Heiner Kallweit <[email protected]> Modified: trunk/target/linux/generic/files/drivers/net/phy/ar8216.c =================================================================== --- trunk/target/linux/generic/files/drivers/net/phy/ar8216.c 2015-01-24 19:41:55 UTC (rev 44102) +++ trunk/target/linux/generic/files/drivers/net/phy/ar8216.c 2015-01-24 19:42:01 UTC (rev 44103) @@ -260,7 +260,7 @@ 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 @@ 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 @@ 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; Modified: trunk/target/linux/generic/files/drivers/net/phy/ar8216.h =================================================================== --- trunk/target/linux/generic/files/drivers/net/phy/ar8216.h 2015-01-24 19:41:55 UTC (rev 44102) +++ trunk/target/linux/generic/files/drivers/net/phy/ar8216.h 2015-01-24 19:42:01 UTC (rev 44103) @@ -555,4 +555,10 @@ ar8xxx_rmw(priv, reg, val, 0); } +static inline void +wait_for_page_switch(void) +{ + udelay(5); +} + #endif _______________________________________________ openwrt-commits mailing list [email protected] https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-commits
