On Tue, 23 Aug 2011 16:58:01 +0200, Felipe Balbi <balbi@xxxxxx> wrote:
I stand with the fact that if they are part of the same configuration, there's no way around it, storage will have to come down to full speed. Unless I'm missing something.
If you look at config_buf() in composite.c, you'll notice that composite just skips functions that do not support current speed. This means, that if a connection uses high speed but given function can handle only full speed, it won't be included in the descriptors. config_buf() is called from config_desc() which similarly, iterates over configurations skipping the ones that do not support given speed. Configuration is defined to support given speed if at least one function that is added to that configuration supports that speed (see usb_add_function()). This also allows creating functions that support high speed but do not support full speed (which I'm unsure whether it makes sense). -- Best regards, _ _ .o. | Liege of Serenely Enlightened Majesty of o' \,=./ `o ..o | Computer Science, Michal "mina86" Nazarewicz (o o) ooo +-----<email/xmpp: mnazarewicz@xxxxxxxxxx>-----ooO--(_)--Ooo-- -- 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