Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1390783
| From | Felipe Balbi <balbi@kernel.org> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH] usb: dwc3: usb/dwc3: fake dissconnect event when turn off pullup |
| Date | 2016-04-29 08:20 +0200 |
| Message-ID | <rt9Wq-1dU-15@gated-at.bofh.it> (permalink) |
| References | <rstku-6Ff-11@gated-at.bofh.it> <rsu6S-7lj-15@gated-at.bofh.it> <rsvPl-jK-27@gated-at.bofh.it> <rsNVU-720-7@gated-at.bofh.it> <rsZX4-15D-19@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
[Multipart message — attachments visible in raw view] - view raw
Hi, John Youn <John.Youn@synopsys.com> writes: >> "Du, Changbin" <changbin.du@intel.com> writes: >>> Hi, Balbi, >>> >>> The step to reproduce this issue is: >>> 1) connect device to a host and wait its enumeration. >>> 2) trigger software disconnect by calling function >>> usb_gadget_disconnect(), which finally call >>> dwc3_gadget_pullup(false). Do not reconnect device >>> (I mean no enumeration go on, keep bit Run/Stop 0.). >>> >>> At here, gadget driver's disconnect callback should be >>> Called, right? We has been disconnected. But no, as >>> You said " not generating disconnect IRQ after you >>> drop Run/Stop is expected". >>> >>> And I am testing on an Android device, Android only >>> use dwc3_gadget_pullup(false) to issue a soft disconnection. >>> This confused user that the UI still show usb as connected >>> State, caused by missing a disconnect event. >> >> okay, so I know what this is. This is caused by Android gadget itself >> not notifying the gadget that a disconnect has happened. Just look at >> udc-core's soft_connect implementation for the sysfs interface, and >> you'll see what I mean. >> >> This should be fixed at Android gadget itself. The only thing we could >> do is introduce a new usb_gadget_soft_connect()/disconnect() to wrap the >> logic so it's easier for Android gadget to use; but even that I'm a >> little bit reluctant to do because Android should be using our >> soft_connect interface instead of reimplementing it (wrongly) by its >> own. >> > > We've run in to the same issue with our usb_gadget_driver. > > If the usb_gadget_disconnect() API function, which seems like it is > intended to be called by the gadget_driver, does cause the gadget to > disconnect, it seems reasonable to expect the gadget or the UDC core > to notify the gadget_driver via the callback. Well, the API is supposed to disconnect D+ pullup and that's about it. > As you mentioned this is handled in the soft_disconnect sysfs. Why > shouldn't usb_gadget_disconnect() do the same thing, if not the gadget because there might be cases where we don't need/want the gadget to know about this disconnect. > itself? Exposing the sysfs as an API function would work too. Though it already _is_ exported. I just don't know why people are re-inventing the same solution :-) > both functions are "soft" disconnects and both are called > "disconnect". > > In our gadget_driver we do the workaround where we notify ourself that > we called the usb_gadget_disconnect() and that we should now be you could just rely on the sysfs interface, right ? :-) > disconnected. It just seems more correct that we shouldn't have to > handle that. > > By the way, I'm not completely sure of the correct terminology, but > I'm referring to the struct usb_gadget (dwc3, dwc2, etc) as the > "gadget" and the struct usb_gadget_driver as the "gadget_driver" > (normally this would be the composite gadget framework, but we are > using our own driver in this case). Is there a less confusing way to > refer to these :) what I've been doing is that I refer to dwc3, dwc3, etc as UDC (as in USB Device Controller) and g_mass_storage, g_ether, g_zero, etc as gadget driver. -- balbi
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
Re: [PATCH] usb: dwc3: usb/dwc3: fake dissconnect event when turn off pullup John Youn <John.Youn@synopsys.com> - 2016-04-28 21:40 +0200
Re: [PATCH] usb: dwc3: usb/dwc3: fake dissconnect event when turn off pullup Felipe Balbi <balbi@kernel.org> - 2016-04-29 08:20 +0200
Re: [PATCH] usb: dwc3: usb/dwc3: fake dissconnect event when turn off pullup John Youn <John.Youn@synopsys.com> - 2016-05-02 03:50 +0200
Re: [PATCH] usb: dwc3: usb/dwc3: fake dissconnect event when turn off pullup Felipe Balbi <balbi@kernel.org> - 2016-05-04 12:50 +0200
Re: [PATCH] usb: dwc3: usb/dwc3: fake dissconnect event when turn off pullup John Youn <John.Youn@synopsys.com> - 2016-05-05 05:20 +0200
Re: [PATCH] usb: dwc3: usb/dwc3: fake dissconnect event when turn off pullup Felipe Balbi <balbi@kernel.org> - 2016-05-06 10:10 +0200
csiph-web