• Grazvydas Ignotas's avatar
    usb: musb: fix shutdown while usb gadget is in use · 24307cae
    Grazvydas Ignotas authored
    If we shutdown without stopping the gadget first or removing the cable,
    gadget manages to configure itself again:
    
    root@pandora /root# poweroff
    The system is going down NOW!
    Requesting system poweroff
    [   47.714385] musb-hm halted.
    [   48.120697]  gadget: suspend
    [   48.123748]  gadget: reset config
    [   48.127227]  gadget: ecm deactivated
    [   48.130981] usb0: gether_disconnect
    [   48.281799]  gadget: high-speed config #1: CDC Ethernet (ECM)
    [   48.287872]  gadget: init ecm
    [   48.290985]  gadget: notify connect false
    [   48.295288]  gadget: notify speed 425984000
    
    This is not only unwanted, it's also happening on half-unitialized
    state, after musb_shutdown() has returned, which sometimes causes
    hardware to fail to work after reboot. Let's better properly stop
    gadget on shutdown too.
    
    This patch moves musb_gadget_cleanup out of musb_free(), which has 2
    callsites: probe error path and musb_remove. On probe error path it was
    superflous since musb_gadget_cleanup is called explicitly there, and
    musb_remove() calls musb_shutdown(), so cleanup will get called as before.
    Signed-off-by: default avatarGrazvydas Ignotas <notasas@gmail.com>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    24307cae
musb_core.c 66.6 KB