diff mbox

usb: musb: Call musb_platform_exit from musb_stop

Message ID 20180719101038.9465-1-jagan@amarulasolutions.com (mailing list archive)
State New, archived
Headers show

Commit Message

Jagan Teki July 19, 2018, 10:10 a.m. UTC
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 <jagan@amarulasolutions.com>
---
 drivers/usb/musb/musb_core.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Bin Liu July 19, 2018, 3:37 p.m. UTC | #1
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.
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jagan Teki July 19, 2018, 5:46 p.m. UTC | #2
On Thu, Jul 19, 2018 at 9:07 PM, Bin Liu <b-liu@ti.com> 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.
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Bin Liu July 19, 2018, 6:34 p.m. UTC | #3
On Thu, Jul 19, 2018 at 11:16:18PM +0530, Jagan Teki wrote:
> On Thu, Jul 19, 2018 at 9:07 PM, Bin Liu <b-liu@ti.com> 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.
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

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);
 }
 
 /*-------------------------------------------------------------------------*/