On Thu, 9 Aug 2018, Felipe Balbi wrote: > > Hi, > > Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> writes: > >> Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> writes: > >> > Felipe: > >> > > >> > 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. > > > >> > 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? Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html