linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* SMSC9730 Autosuspend/Resume Questions
@ 2018-10-17 15:21 Frieder Schrempf
  2018-10-22  7:03 ` Nisar.Sayed
  0 siblings, 1 reply; 3+ messages in thread
From: Frieder Schrempf @ 2018-10-17 15:21 UTC (permalink / raw)
  To: Steve Glendinning, Microchip Linux Driver Support,
	David S. Miller, netdev
  Cc: Oliver Neukum, linux-usb, linux-kernel

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?

Thanks,
Frieder

[1] https://patchwork.kernel.org/cover/10643089/
[2] 
https://github.com/torvalds/linux/blob/bab5c80b211035739997ebd361a679fa85b39465/drivers/net/usb/smsc95xx.c#L1382

^ permalink raw reply	[flat|nested] 3+ messages in thread

* RE: SMSC9730 Autosuspend/Resume Questions
  2018-10-17 15:21 SMSC9730 Autosuspend/Resume Questions Frieder Schrempf
@ 2018-10-22  7:03 ` Nisar.Sayed
  2018-10-22  7:14   ` Frieder Schrempf
  0 siblings, 1 reply; 3+ messages in thread
From: Nisar.Sayed @ 2018-10-22  7:03 UTC (permalink / raw)
  To: frieder.schrempf, steve.glendinning, UNGLinuxDriver, davem, netdev
  Cc: oneukum, linux-usb, linux-kernel

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

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: SMSC9730 Autosuspend/Resume Questions
  2018-10-22  7:03 ` Nisar.Sayed
@ 2018-10-22  7:14   ` Frieder Schrempf
  0 siblings, 0 replies; 3+ messages in thread
From: Frieder Schrempf @ 2018-10-22  7:14 UTC (permalink / raw)
  To: Nisar.Sayed, steve.glendinning, UNGLinuxDriver, davem, netdev
  Cc: oneukum, linux-usb, linux-kernel

Hi Nisar,

On 22.10.18 09:03, Nisar.Sayed@microchip.com wrote:
> 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.

Ok, thanks for the information. I guess I'll have to do some more 
debugging to find out why the second read fails in my case.

Frieder

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-10-22  7:15 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-17 15:21 SMSC9730 Autosuspend/Resume Questions Frieder Schrempf
2018-10-22  7:03 ` Nisar.Sayed
2018-10-22  7:14   ` Frieder Schrempf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).