Skip to content

Commit 231bf7e

Browse files
drewbh5yehowshuaimmanuelTST
authored andcommitted
usb: musb: fix gadget state on disconnect
commit 67a59f8 upstream. When unplugging the USB cable or disconnecting a gadget in usb peripheral mode with echo "" > /sys/kernel/config/usb_gadget/<your_gadget>/UDC, /sys/class/udc/musb-hdrc.0/state does not change from USB_STATE_CONFIGURED. Testing on dwc2/3 shows they both update the state to USB_STATE_NOTATTACHED. Add calls to usb_gadget_set_state in musb_g_disconnect and musb_gadget_stop to fix both cases. Fixes: 49401f4 ("usb: gadget: introduce gadget state tracking") Cc: stable@vger.kernel.org Co-authored-by: Yehowshua Immanuel <yehowshua.immanuel@twosixtech.com> Signed-off-by: Yehowshua Immanuel <yehowshua.immanuel@twosixtech.com> Signed-off-by: Drew Hamilton <drew.hamilton@zetier.com> Link: https://lore.kernel.org/r/20250701154126.8543-1-drew.hamilton@zetier.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 951dd99 commit 231bf7e

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

drivers/usb/musb/musb_gadget.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1912,6 +1912,7 @@ static int musb_gadget_stop(struct usb_gadget *g)
19121912
* gadget driver here and have everything work;
19131913
* that currently misbehaves.
19141914
*/
1915+
usb_gadget_set_state(g, USB_STATE_NOTATTACHED);
19151916

19161917
/* Force check of devctl register for PM runtime */
19171918
pm_runtime_mark_last_busy(musb->controller);
@@ -2018,6 +2019,7 @@ void musb_g_disconnect(struct musb *musb)
20182019
case OTG_STATE_B_PERIPHERAL:
20192020
case OTG_STATE_B_IDLE:
20202021
musb_set_state(musb, OTG_STATE_B_IDLE);
2022+
usb_gadget_set_state(&musb->g, USB_STATE_NOTATTACHED);
20212023
break;
20222024
case OTG_STATE_B_SRP_INIT:
20232025
break;

0 commit comments

Comments
 (0)