Hi, (we don't top-post on this forum ;-) "Du, Changbin" <changbin.du@xxxxxxxxx> 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. -- balbi
Attachment:
signature.asc
Description: PGP signature