Hi Frieder, > Hi, > > I recently tested a board with SMSC9730 connected via USB HSIC to an > i.MX6S SOC. I used these patches on top of v4.14-rc8 for the USB HSIC > support: [1]. > > When I turned on autosuspend, the smsc95xx stopped in the middle of the > suspending routine and /sys/bus/usb/devices/usb3/3- > 1/power/runtime_status reported "suspending" > forever. > > With some debug logs I found out, that the last line of code that was > executed is [2], after that I didn't get any further messages. > > Then I applied the following diff and the suspend/resume started to work > reliably: > > @@ -1382,10 +1385,11 @@ static int smsc95xx_link_ok_nopm(struct usbnet > *dev) > ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, MII_BMSR); > if (ret < 0) > return ret; > - > + /* > ret = smsc95xx_mdio_read_nopm(dev->net, mii->phy_id, MII_BMSR); > if (ret < 0) > return ret; > + */ > > return !!(ret & BMSR_LSTATUS); > } > > So it seems like the dummy read, that is commented with "first, a dummy > read, needed to latch some MII phys" causes problems in my setup. Do you > have an idea what could be the reason? Is this a proper fix? > Link status bit is latch low register and needs to be read twice. You may get wrong Link status with this fix. - Nisar