[PATCH] usb: musb: fix gadget state on disconnect

Drew Hamilton posted 1 patch 3 months, 2 weeks ago
There is a newer version of this series
drivers/usb/musb/musb_gadget.c | 2 ++
1 file changed, 2 insertions(+)
[PATCH] usb: musb: fix gadget state on disconnect
Posted by Drew Hamilton 3 months, 2 weeks ago
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.

Tested against 82f2b0b97b36ee3fcddf0f0780a9a0825d52fec3.

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>
---
 drivers/usb/musb/musb_gadget.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/usb/musb/musb_gadget.c b/drivers/usb/musb/musb_gadget.c
index 6869c58367f2..caf4d4cd4b75 100644
--- a/drivers/usb/musb/musb_gadget.c
+++ b/drivers/usb/musb/musb_gadget.c
@@ -1913,6 +1913,7 @@ static int musb_gadget_stop(struct usb_gadget *g)
 	 * gadget driver here and have everything work;
 	 * that currently misbehaves.
 	 */
+	usb_gadget_set_state(g, USB_STATE_NOTATTACHED);
 
 	/* Force check of devctl register for PM runtime */
 	pm_runtime_mark_last_busy(musb->controller);
@@ -2019,6 +2020,7 @@ void musb_g_disconnect(struct musb *musb)
 	case OTG_STATE_B_PERIPHERAL:
 	case OTG_STATE_B_IDLE:
 		musb_set_state(musb, OTG_STATE_B_IDLE);
+		usb_gadget_set_state(&musb->g, USB_STATE_NOTATTACHED);
 		break;
 	case OTG_STATE_B_SRP_INIT:
 		break;
-- 
2.34.1
Re: [PATCH] usb: musb: fix gadget state on disconnect
Posted by Greg Kroah-Hartman 3 months, 2 weeks ago
On Tue, Jun 24, 2025 at 10:09:30AM -0400, Drew Hamilton wrote:
> 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.
> 
> Tested against 82f2b0b97b36ee3fcddf0f0780a9a0825d52fec3.

Nit, git ids are written as:
	82f2b0b97b36 ("Linux 6.15-rc6")
Or you could have used the tag "6.15-rc6" as we all know that, but
really, this shouldn't be needed at all.

What it does show is you missed the many thousands of changes that have
gone into the tree since -rc6, is this still an issue in 6.16-rc3?

> 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>

What commit id does this fix?

thanks,

greg k-h
Re: [PATCH] usb: musb: fix gadget state on disconnect
Posted by Drew Hamilton 3 months, 2 weeks ago
On Tue, Jun 24, 2025 at 10:16:30AM -0400, Greg Kroah-Hartman wrote:
 > What it does show is you missed the many thousands of changes that have
 > gone into the tree since -rc6, is this still an issue in 6.16-rc3?

Retested against v6.16-rc3 and confirmed both that without the patch the 
issue is still present, as well as that the patch still resolves the issue.

 > What commit id does this fix?

It seems like this issue has existed for the MUSB driver since the UDC
'state' sysfs attribute was defined in v3.1.

Thanks,
Drew
Re: [PATCH] usb: musb: fix gadget state on disconnect
Posted by Greg Kroah-Hartman 3 months, 1 week ago
On Thu, Jun 26, 2025 at 01:35:39PM -0400, Drew Hamilton wrote:
> On Tue, Jun 24, 2025 at 10:16:30AM -0400, Greg Kroah-Hartman wrote:
> > What it does show is you missed the many thousands of changes that have
> > gone into the tree since -rc6, is this still an issue in 6.16-rc3?
> 
> Retested against v6.16-rc3 and confirmed both that without the patch the
> issue is still present, as well as that the patch still resolves the issue.
> 
> > What commit id does this fix?
> 
> It seems like this issue has existed for the MUSB driver since the UDC
> 'state' sysfs attribute was defined in v3.1.

Great, can you please fix up the changelog and add the needed Fixes: and
cc: stable line to the patch and send a v2?

thanks,

greg k-h