Hi,
The following patches adds support for the M-Audio Fast Track C400. This is version 4 of the patch series.
* Incoroprated the feedback from Clemens Ladisch clemens@ladisch.de: Moved the quirks structure to the right place (also in other places, though not strictly required) and removed the "set quirks" log messages. Thanks, Clemens!
* Added a patch to address the regression introduced by commit 947d299686aa9cc8aecf749d54e8475c6e498956 , "ALSA: snd-usb: properly initialize the sync endpoint". I believe there are no other devices that affected by this issue. Opening only the playback stream without first opening the capture stream now works with the C400.
v3: http://mailman.alsa-project.org/pipermail/alsa-devel/2012-November/057477.ht...
v2: http://mailman.alsa-project.org/pipermail/alsa-devel/2012-November/056750.ht...
This series was tested with the latest mainline tree, 3.7-rc7 (HEAD e23739b4ade80a3a7f87198f008f6c44a7cbc9fd )
Also applies against current sound-unstable (not tested). (HEAD 900b0690ee7b2a227c5db5f1642ceb67d90c49fc )
* Everything works: mixer controls, effects control, playback and capture (with the correct sampling frequency set). Note that the device doesn't really have a master control or left/right pan. It's just "emulated" in the software.
* To deal with the mixer channel IDs, limited by cmask bit length, I introduced an offset value. This allows to get rid of the shorehorning of the IDs into cmask and device-referencing in the low-level functions. Is this a good approach?
* Audio in/out seems to work good in this series, mainly because the playback is an implicit feedback endpoint, and it is now configured with the capture endpoint as its sync-buddy. Also needed to correct the calculation, because of the different channel numbers between the two endpoints on the C400 (6 playback - implicit feedback, 4 capture).
* The clock sources are still named "Unit 129" (0x81, internal) and "Unit 130" (0x82, SPDIF). I'll fix this later. I also plan to fix the channel names (i.e., instead of "AIn3", use "SPDIF In L").
* I've touched one FTU mixer creation function. I'd appreciate if someone can test this with the FTU to make sure I didn't break something. (I haven't gotten any feedback on that one yet)
Cheers, Eldad
Signed-off-by: Eldad Zack eldad@fogrefinery.com
Eldad Zack (10): usb-audio: replace hardcoded value with const usb-audio: correct sync endpoint initialization usb-audio: use sender stride for implicit feedback usb-audio: add control index offset usb-audio: skip UAC2 EFFECT_UNIT usb-audio: parameterize FTU effect unit control usb-audio: M-Audio Fast Track C400 quirks table usb-audio: Fast Track C400 mixer ranges usb-audio: Fast Track C400 mixer controls usb-audio: FT C400 sync playback EP to capture EP
sound/usb/endpoint.c | 9 ++- sound/usb/mixer.c | 44 +++++++++- sound/usb/mixer.h | 1 + sound/usb/mixer_quirks.c | 216 ++++++++++++++++++++++++++++++++++++++++++++-- sound/usb/pcm.c | 94 ++++++++++++++++++-- sound/usb/quirks-table.h | 71 +++++++++++++++ 6 files changed, 414 insertions(+), 21 deletions(-)