From: Greg KH <gr...@kr...> - 2008-11-28 21:06:53
|
On Fri, Nov 28, 2008 at 02:53:37PM -0500, Alan Stern wrote: > Currently usbcore sends a Set-Interface request to reinstall altsetting > 0 whenever a driver unbinds from an interface. There are three reasons > for doing this: > > 1. When another driver comes along and probes the interface, it > will expect to find the interface in altsetting 0. > > 2. When an interface has multiple altsettings, the altsettings > above 0 generally provide more capabilities and therefore use > more power. Hence installing altsetting 0 can save energy. > > 3. Set-Interface acts as a lightweight reset for the interface. > > Unforunately, there are quite a few devices with deficient firmware > that crashes when it receives a Set-Interface request. Cypress's EZ > USB devices are notorious for this. We have a quirk flag to prevent > sending the request, but adding device IDs to a quirks list is rarely > very satisfactory. > > Instead, I propose to send the request only when the interface isn't in > altsetting 0 already. This will continue to fulfill goals 1 and 2 > above. Goal 3 is relatively unimportant, since Set-Interface isn't > much of a reset. (Mostly it just sets the data toggles for all the > endpoints in the interface back to 0 and clears the endpoint FIFOs.) > > And of course, if a device doesn't implement Set-Interface correctly > then it will never leave altsetting 0, so we won't end up crashing it. > > Does anybody have any comments on or objections to the patch below? No objection from me, it makes sense. thanks, greg k-h |