All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Mack <zonque@gmail.com>
To: balbi@ti.com
Cc: bigeasy@linutronix.de, linux-usb@vger.kernel.org,
	linux-omap@vger.kernel.org, neumann@teufel.de
Subject: Re: [PATCH 4/5] usb: musb: dsps: add support for suspend and resume
Date: Mon, 25 Nov 2013 21:54:56 +0100	[thread overview]
Message-ID: <5293B920.30401@gmail.com> (raw)
In-Reply-To: <20131125204641.GM18046@saruman.home>

On 11/25/2013 09:46 PM, Felipe Balbi wrote:
> Hi,
> 
> On Mon, Nov 25, 2013 at 09:26:55PM +0100, Daniel Mack wrote:
>> On 11/25/2013 09:08 PM, Felipe Balbi wrote:
>>> On Mon, Nov 25, 2013 at 09:04:16PM +0100, Daniel Mack wrote:
>>>>>> diff --git a/drivers/usb/musb/musb_virthub.c b/drivers/usb/musb/musb_virthub.c
>>>>>> index e977441..24e46c0 100644
>>>>>> --- a/drivers/usb/musb/musb_virthub.c
>>>>>> +++ b/drivers/usb/musb/musb_virthub.c
>>>>>> @@ -109,7 +109,7 @@ void musb_port_suspend(struct musb *musb, bool do_suspend)
>>>>>>  	}
>>>>>>  }
>>>>>>  
>>>>>> -static void musb_port_reset(struct musb *musb, bool do_reset)
>>>>>> +void musb_port_reset(struct musb *musb, bool do_reset)
>>>>>
>>>>> NAK, this should not be called from the glue layers at all. If anything
>>>>> call from musb_core's resume callback. That will only be called after
>>>>> parent's resume has been called anyway.
>>>>
>>>> Given that this driver is successfully used with suspend/resume on other
>>>> platforms without that reset, but it's clearly needed for dsps, I'm
>>>> fairly sure this should be a glue-layer specific thing. Hence the change.
>>>>
>>>> I think it'll break things on other platforms if we unconditionally
>>>> reset the port after resume, but I can't test it. Anyone?
>>>
>>> your original commit log only says "we need to issue port reset" but it
>>> never explains why. It could very well be you just found a device which
>>> needs to be reset when coming out of suspend and it misses a quirk flag ?
>>
>> I think I can really rule that out, as I tested with multiple USB sticks
>> and also tested the same sticks on other embedded platforms.
>>
>>> In any case, those functions should never be called by the glue, if
>>> reset needs to be called, it must be called by musb-hdrc.ko, if you need
>>> a flag, pass a flag but I need a really good explanation in your commit
>>> log of why that's necessary.
>>
>> Well, if I'd only knew exactly why. All these patches are really the
>> result of many days of trial and error, with multiple drivers (musb,
>> cppi41, ...) involved. And as I said - I have no documentation of the
>> musb core itself.
>>
>> So yes, I can do it the other way around and pass a flag, but what I
>> can't provide is a good explanantion why the dsps glue behaves
>> differently here than others. I'm curious myself, and all I know is that
>> with this reset in place, things work as expected on AM33xx.
> 
> ok, then let's pass a flag. Meanwhile I'll try to figure out internally
> why we need that reset.

Well, we don't need a reset, I wasn't quite precise here. What we need
is to manually *de*assert the reset when we resume. Note the 'false'
flag that is passed to musb_port_reset().

> As Alan said, usb-persist should already for a
> bus-reset when resuming, right ?

The explicit un-reset is really needed, otherwise the port will
reenumerate the device, and a previously mounted filesystem will become
invalid of course. The log looks like this in that case:

[   17.045641] PM: resume of devices complete after 166.084 msecs
[   17.056461] PM: Sending message for resetting M3 state machine
[   17.063451] Restarting tasks ... [   17.071767] usb 1-1: USB
disconnect, device number 2
done.
[   17.403402] usb 1-1: new high-speed USB device number 3 using musb-hdrc
[   17.766959] usb 1-1: New USB device found, idVendor=058f, idProduct=6387
[   17.774849] usb 1-1: New USB device strings: Mfr=1, Product=2,
SerialNumber=3



Thanks,
Daniel


  reply	other threads:[~2013-11-25 20:54 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-25 19:39 [PATCH 0/5] musb/dsps: suspend related patches for 3.14 (rebased) Daniel Mack
2013-11-25 19:39 ` [PATCH 1/5] usb: musb: conditionally save and restore the context on suspend Daniel Mack
2013-11-25 19:44   ` Felipe Balbi
2013-11-25 20:08     ` Daniel Mack
2013-11-25 20:13       ` Felipe Balbi
     [not found]         ` <20131125201339.GH18046-HgARHv6XitL9zxVx7UNMDg@public.gmane.org>
2013-11-25 20:27           ` Daniel Mack
2013-11-26 10:50   ` Sergei Shtylyov
2013-11-26 10:58     ` Daniel Mack
2013-11-25 19:39 ` [PATCH 2/5] usb: musb: call musb_port_suspend from musb_bus_suspend Daniel Mack
     [not found]   ` <1385408393-19707-3-git-send-email-zonque-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-11-25 19:46     ` Felipe Balbi
     [not found]       ` <20131125194629.GA18046-HgARHv6XitL9zxVx7UNMDg@public.gmane.org>
2013-11-25 19:58         ` Daniel Mack
2013-11-25 20:01           ` Felipe Balbi
2013-11-25 20:21             ` Daniel Mack
     [not found]               ` <5293B144.10006-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-11-25 20:41                 ` Alan Stern
     [not found]                   ` <Pine.LNX.4.44L0.1311251534260.1172-100000-IYeN2dnnYyZXsRXLowluHWD2FQJk+8+b@public.gmane.org>
2013-11-25 20:44                     ` Daniel Mack
2013-11-25 20:45                     ` Felipe Balbi
     [not found]             ` <20131125200121.GE18046-HgARHv6XitL9zxVx7UNMDg@public.gmane.org>
2013-11-25 20:47               ` Daniel Mack
     [not found]                 ` <5293B754.9050406-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-11-25 20:49                   ` Felipe Balbi
2013-11-25 20:34         ` Alan Stern
     [not found] ` <1385408393-19707-1-git-send-email-zonque-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-11-25 19:39   ` [PATCH 3/5] usb: musb: dsps: add {tx,rx}_mode to wrapper Daniel Mack
2013-11-25 19:39 ` [PATCH 4/5] usb: musb: dsps: add support for suspend and resume Daniel Mack
     [not found]   ` <1385408393-19707-5-git-send-email-zonque-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-11-25 19:48     ` Felipe Balbi
2013-11-25 20:04       ` Daniel Mack
     [not found]         ` <5293AD40.6060607-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-11-25 20:08           ` Felipe Balbi
2013-11-25 20:26             ` Daniel Mack
2013-11-25 20:46               ` Felipe Balbi
2013-11-25 20:54                 ` Daniel Mack [this message]
2013-11-25 20:55                   ` Felipe Balbi
2013-11-25 19:39 ` [PATCH 5/5] usb: musb: dsps: indentation and whitespace fixes Daniel Mack
     [not found]   ` <1385408393-19707-6-git-send-email-zonque-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2013-11-25 19:49     ` Felipe Balbi
2013-11-25 19:59       ` Daniel Mack

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5293B920.30401@gmail.com \
    --to=zonque@gmail.com \
    --cc=balbi@ti.com \
    --cc=bigeasy@linutronix.de \
    --cc=linux-omap@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=neumann@teufel.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.