This is v5 of the patchset to merge what Tobias Hoffman and Robin Gareus have done to enable the Focusrite Scarlett mixers for use with ALSA.
[v3]
I have split the commits into hopefully a logical series. First the original quirk is reverted for one model of a Scarlett device. Next an additional structure is added to be able to more easily reuse usb_mixer_elem_info. After this mixer functions that were useful to this code were made public. Finally the last patch adds the necessary functions to make this mixer work.
[v4]
This version removes the per-mixer control creation functions and uses a generic function based on structure data. Macros used for control addition are removed and the plain function is used instead. Hardcoded text block is removed and macros to define strings are used instead. Hardcoded control initialization has been removed.
[v5]
In this version, HW saving functionality has been removed in this initial patchset. Macros for function calls are removed for readability. Strings for enums are created dynamically using the info structures. String lengths for controls are now all SNDRV_CTL_ELEM_ID_NAME_MAXLEN in length.
[v6]
Removed dead variables. Made names const char * const * again. Adjusted scarlett_ctl_enum_* functions to be a bit clearer. Used strlcpy where appropriate. Properly free two dimensional array.
Chris J Arges (4): Revert "ALSA: usb-audio: Add quirk for Focusrite Scarlett ALSA: usb-audio: Add private_data pointer to usb_mixer_elem_info ALSA: usb-audio: make set_*_mix_values functions public ALSA: usb-audio: Scarlett mixer interface for 6i6, 18i6, 18i8 and 18i20
sound/usb/Makefile | 1 + sound/usb/mixer.c | 34 +- sound/usb/mixer.h | 9 + sound/usb/mixer_quirks.c | 18 +- sound/usb/mixer_scarlett.c | 1001 ++++++++++++++++++++++++++++++++++++++++++++ sound/usb/mixer_scarlett.h | 6 + sound/usb/quirks-table.h | 51 --- 7 files changed, 1044 insertions(+), 76 deletions(-) create mode 100644 sound/usb/mixer_scarlett.c create mode 100644 sound/usb/mixer_scarlett.h