Hi, On Wed, Aug 06, 2014 at 09:14:55PM +0000, Ken Helberg wrote: > Hope this is the right place to mention/post this; I'm new to this. As a > point of reference, I'm running uClinux on a bf609-ezkit that is based on > 3.10, but from what I can tell this hasn't been changed/fixed since 3.10 yet > and applies in general. > > As per section 4.3.2 of Universal Serial Bus Device Class Definition for > Audio Devices (audio10.pdf), and section B.3.3.2 by example, the > bInCollection field of the Class-Specific AudioControl (AC) Interface Header > Descriptor is the number of AudioStreaming (AS) and MIDIStreaming (MS) > interfaces for the given AC interface. Similarly, the baInterfaceNr > collection is only to list the AS and MS interfaces. > > In f_uac1.c, the AC header descriptor states that it has 2 interfaces in its > collection, one of those being the AC interface itself. This, at least, > causes Windows 7 to not enumerate the device correctly. Changing the > relative lines to make is only have 1 interface listed fixes enumeration on > Windows 7. (I know I should provide a patch for this, but I'm still reading > up on the proper way to submit these). > > Interface numbering should be dynamic. Currently, the value(s) in the > baInterfaceNr collection are not updated when retrieved in f_audio_bind(). I > have not tried this myself yet, but should be easy to implement/understand. > > If this all makes sense, I'll post a patch here (anywhere else, too?). Sure, please send a patch and make sure to Cc the maintainer. You can use scripts/get_maintainer.pl to help out. Also, make sure to split bug fix from new code. I can see you'd write at least two patches: 1) Drop F_AUDIO_AC_INTERFACE from baInterfaceNr (this should have Cc: <stable@xxxxxxxxxxxxxxx> befor your Signed-off-by) 2) Switch to dynamic Interface number on f_uac1.c. This is new code which would be merged for v3.18. good luck. -- balbi
Attachment:
signature.asc
Description: Digital signature