Hi, I've found the problem and below is the fix. It appears your SMSC9200 is faster than mine ;-) Once in a while mine gets through the smsc911x_soft_reset() in 100 us but most of the time it takes a full 250 ms. Rick --- linux/drivers/net/smsc911x.c.~1~ 2010-11-08 19:53:03.000000000 -0800 +++ linux/drivers/net/smsc911x.c 2010-11-11 12:00:18.000000000 -0800 @@ -791,8 +791,8 @@ return -ENODEV; } - SMSC_TRACE(PROBE, "PHY %d: addr %d, phy_id 0x%08X", - phy_addr, phydev->addr, phydev->phy_id); + SMSC_TRACE(PROBE, "PHY %s: addr %d, phy_id 0x%08X", + dev_name(&phydev->dev), phydev->addr, phydev->phy_id); ret = phy_connect_direct(dev, phydev, &smsc911x_phy_adjust_link, 0, @@ -1124,11 +1124,11 @@ /* Reset the LAN911x */ smsc911x_reg_write(pdata, HW_CFG, HW_CFG_SRST_); - timeout = 10; - do { - udelay(10); - temp = smsc911x_reg_read(pdata, HW_CFG); - } while ((--timeout) && (temp & HW_CFG_SRST_)); + timeout = 10000; /* this can take up to 1/4 sec */ + while ((smsc911x_reg_read(pdata, HW_CFG) & HW_CFG_SRST_) && timeout) { + udelay(100); + timeout--; + } if (unlikely(temp & HW_CFG_SRST_)) { SMSC_WARNING(DRV, "Failed to complete reset"); -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html