Should usb_gadget_disconnect() call driver's ->disconnect?

From: Felipe Balbi <hidden>
Date: 2018-08-10 06:59:28

Hi,

Alan Stern [off-list ref] writes:
quoted
quoted
quoted
quoted
The documentation doesn't state whether a gadget driver's 
->disconnect() callback will be invoked when usb_gadget_disconnect() 
runs.  Probably the UDC drivers' behavior has changed over the years.

In any case, it's likely that various UDC drivers do behave
differently.  My current feeling is that ->disconnect() should be
invoked only when Vbus turns off, but I can't guarantee that all UDCs 
will do this.
my feeling is that ->disconnect() should be called everytime we cause
the session to be killed. VBUS Turning off is a guaratee that session is
gone, but so is disconnecting data pullup, which is what
usb_gadget_disconnect() does.
Okay.  I don't mind either way, so long as it is settled.
quoted
quoted
How do you feel about documenting this ambiguity as in the patch below?
If you think this is okay, I'll submit it formally.
Perhaps a better approach would be to start auditing all UDCs to make
sure that ->disconnect() is called when pullup is disconnected. Then we
can move ->disconnect() to usb_gadget_disconnect() itself. No?
Rather the other way around: Call ->disconnect() from
usb_gadget_disconnect() itself, then audit all the UDCs to make sure
they don't invoke the callbackup.  That's better than adding a callback
to the UDCs that are missing it, only then to remove it from all of
them later on.
Fair enough. Do you want to handle this or would you prefer that I add
to my list?
I'll send in a patch modifying usb_gadget_disconnect(), and I'll check 
up on dummy-hcd and net2280.  The rest I prefer to leave for you.  
Okay?
Sure, no issues :)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help