2018-07-19 10:11:43

by Jagan Teki

[permalink] [raw]
Subject: [PATCH] usb: musb: Call musb_platform_exit from musb_stop

musb stop is musb core call during unregister or shutting down
gadget or host musb. For graceful exit add musb_platform_exit
on musb_stop so-that it can exit the musb platform driver as well.

Signed-off-by: Jagan Teki <[email protected]>
---
drivers/usb/musb/musb_core.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
index b7d56272f9d1..0b93b6384eda 100644
--- a/drivers/usb/musb/musb_core.c
+++ b/drivers/usb/musb/musb_core.c
@@ -1110,6 +1110,7 @@ void musb_stop(struct musb *musb)
* - ...
*/
musb_platform_try_idle(musb, 0);
+ musb_platform_exit(musb);
}

/*-------------------------------------------------------------------------*/
--
2.17.1



2018-07-19 15:38:38

by Bin Liu

[permalink] [raw]
Subject: Re: [PATCH] usb: musb: Call musb_platform_exit from musb_stop

Hi,

On Thu, Jul 19, 2018 at 03:40:38PM +0530, Jagan Teki wrote:
> musb stop is musb core call during unregister or shutting down
> gadget or host musb. For graceful exit add musb_platform_exit
> on musb_stop so-that it can exit the musb platform driver as well.

Thanks for the patch. but musb_stop() is called in the .udc_stop() and
host .stop() hooks, which can stop (and restart) at any time by the udc
or host core, not really during unregister. musb_platform_init() is not
called in .udc_start() and .start() hooks, so we shouldn't add
musb_platform_exit() in musb_stop().

Regards,
-Bin.

2018-07-19 17:48:10

by Jagan Teki

[permalink] [raw]
Subject: Re: [PATCH] usb: musb: Call musb_platform_exit from musb_stop

On Thu, Jul 19, 2018 at 9:07 PM, Bin Liu <[email protected]> wrote:
> Hi,
>
> On Thu, Jul 19, 2018 at 03:40:38PM +0530, Jagan Teki wrote:
>> musb stop is musb core call during unregister or shutting down
>> gadget or host musb. For graceful exit add musb_platform_exit
>> on musb_stop so-that it can exit the musb platform driver as well.
>
> Thanks for the patch. but musb_stop() is called in the .udc_stop() and
> host .stop() hooks, which can stop (and restart) at any time by the udc
> or host core, not really during unregister. musb_platform_init() is not
> called in .udc_start() and .start() hooks, so we shouldn't add
> musb_platform_exit() in musb_stop().

Thanks for the explanation.

Look like musb_platform_exit calling during musb_remove call of
platform driver. can you explain how the shutdown sequence happen
because of if udc_stop call musb_stop to shutdown how come
platform_exit will shutdown it's PHY and CLK bits. or is it in
reverse?

Jagan.

2018-07-19 18:35:19

by Bin Liu

[permalink] [raw]
Subject: Re: [PATCH] usb: musb: Call musb_platform_exit from musb_stop

On Thu, Jul 19, 2018 at 11:16:18PM +0530, Jagan Teki wrote:
> On Thu, Jul 19, 2018 at 9:07 PM, Bin Liu <[email protected]> wrote:
> > Hi,
> >
> > On Thu, Jul 19, 2018 at 03:40:38PM +0530, Jagan Teki wrote:
> >> musb stop is musb core call during unregister or shutting down
> >> gadget or host musb. For graceful exit add musb_platform_exit
> >> on musb_stop so-that it can exit the musb platform driver as well.
> >
> > Thanks for the patch. but musb_stop() is called in the .udc_stop() and
> > host .stop() hooks, which can stop (and restart) at any time by the udc
> > or host core, not really during unregister. musb_platform_init() is not
> > called in .udc_start() and .start() hooks, so we shouldn't add
> > musb_platform_exit() in musb_stop().
>
> Thanks for the explanation.
>
> Look like musb_platform_exit calling during musb_remove call of
> platform driver. can you explain how the shutdown sequence happen
> because of if udc_stop call musb_stop to shutdown how come

musb_stop() only disables for example irq and session. I didn't read
how udc_stop() is used though.

> platform_exit will shutdown it's PHY and CLK bits. or is it in

platform_exit() is called in musb_remove().

Not sure if this answers your question though.

Regards,
-Bin.