At Wed, 18 May 2011 23:30:46 +0200, Daniel Mack wrote:
The main problem at the moment is that snd_usb_create_mixer() will not be called on quirked devices! Take a look at card.c: snd_usb_create_mixer() will only be called if snd_usb_create_quirk() returns > 0. But why should we assume that quirked devices don't have any mixers?
That is indeed strange, yes. I can't explain that. Not to break existing devices, I would suggest adding a bit-wise "flags" field to snd_usb_audio_quirk and still create the mixers if a certain flag (something like "QUIRK_FLAG_CREATE_STANDARD_MIXERS") is set. Clemens, Takashi, would that be ok?
Returning zero means that you don't follow any standard. In the comment of snd_usb_create_quirk: /* * audio-interface quirks * * returns zero if no standard audio/MIDI parsing is needed. * returns a positive value if standard audio/midi interfaces are parsed * after this. * returns a negative value at error. */
I see no big reason to make things more complex. If you want to avoid the standard audio parsing after quirk but only parse mixer, just call snd_usb_create_mixer() in your quirk function.
thanks,
Takashi