Hi Takashi, Here is version 2 of a set of patches which is some cleanup of the Scarlett Gen 2 mixer driver in preparation for adding Scarlett Gen 3 support. One review comment I got (from Hin-Tak) was: > 40+ patches is a lot, for modifying just one file. I would collapse > it all into one and break it up again to under 10, maybe, broadly > into "functionally-equivalent re-org", "small isolated bug fixes", > "additional functions, not yet used", "hooking up those new > functions", etc? I'm not sure that I agree with that comment -- I tried to follow the Documentation/process/submitting-patches.rst advice of "Separate each logical change into a separate patch" for easy review of the individual pieces, but perhaps I went too far in that direction? Please let me know if I should combine some of these patches together. After this set of patches I have a second set of patches almost ready. They add a few features to the Gen 2 support and update the code ready to add Gen 3 support: ALSA: usb-audio: scarlett2: Add usb_tx/rx functions ALSA: usb-audio: scarlett2: Update initialisation sequence ALSA: usb-audio: scarlett2: Fix 6i6 Gen 2 line out descriptions ALSA: usb-audio: scarlett2: Always enable interrupt polling ALSA: usb-audio: scarlett2: Add "Sync Status" control ALSA: usb-audio: scarlett2: Merge common line in capture strings ALSA: usb-audio: scarlett2: Reformat scarlett2_config_items[] ALSA: usb-audio: scarlett2: Improve device info lookup ALSA: usb-audio: scarlett2: Move info lookup out of init function ALSA: usb-audio: scarlett2: Remove repeated device info comments ALSA: usb-audio: scarlett2: Add scarlett2_vol_ctl_write() helper ALSA: usb-audio: scarlett2: Add mute support ALSA: usb-audio: scarlett2: Allow arbitrary ordering of mux entries ALSA: usb-audio: scarlett2: Split struct scarlett2_ports ALSA: usb-audio: scarlett2: Fix Level Meter control The final set of patches adds Gen 3 mixer support and then adds support for the new Gen 3 features: ALSA: usb-audio: scarlett2: Add Gen 3 mixer support ALSA: usb-audio: scarlett2: Add support for "input-other" notify ALSA: usb-audio: scarlett2: Add Gen 3 MSD mode switch ALSA: usb-audio: scarlett2: Move get config above set config ALSA: usb-audio: scarlett2: Allow bit-level access to config ALSA: usb-audio: scarlett2: Add support for Solo and 2i2 Gen 3 ALSA: usb-audio: scarlett2: Add "air" switch support ALSA: usb-audio: scarlett2: Add phantom power switch support ALSA: usb-audio: scarlett2: Add direct monitor support ALSA: usb-audio: scarlett2: Label 18i8 Gen 3 line outputs correctly ALSA: usb-audio: scarlett2: Split up sw_hw_enum_ctl_put() ALSA: usb-audio: scarlett2: Add sw_hw_ctls and mux_ctls ALSA: usb-audio: scarlett2: Update mux controls to allow updates ALSA: usb-audio: scarlett2: Add speaker switching support ALSA: usb-audio: scarlett2: Update get_config to do endian conversion ALSA: usb-audio: scarlett2: Add support for the talkback feature If you'd like to see the commits so far all at once, please check this branch: https://github.com/geoffreybennett/scarlett-gen2/commits/scarlett-gen3-for-next Thanks, Geoffrey. Geoffrey D. Bennett (14): ALSA: usb-audio: scarlett2: Remove incorrect S/PDIF comment ALSA: usb-audio: scarlett2: Fix 18i8 Gen 2 PCM Input count ALSA: usb-audio: scarlett2: Coding style improvements ALSA: usb-audio: scarlett2: Remove unused/useless code ALSA: usb-audio: scarlett2: Remove interrupt debug message ALSA: usb-audio: scarlett2: Remove redundant info->button_count ALSA: usb-audio: scarlett2: Rename buttons/interrupts/vol ALSA: usb-audio: scarlett2: Rename struct scarlett2_mixer_data ALSA: usb-audio: scarlett2: Add temp variable for consistency ALSA: usb-audio: scarlett2: Fix data_mutex lock ALSA: usb-audio: scarlett2: Fix scarlett2_*_ctl_put() return values ALSA: usb-audio: scarlett2: Fix union usage in mixer control callbacks ALSA: usb-audio: scarlett2: Don't copy struct scarlett2_config ALSA: usb-audio: scarlett2: Remove hard-coded USB #defines sound/usb/mixer_scarlett_gen2.c | 425 +++++++++++++++++--------------- 1 file changed, 224 insertions(+), 201 deletions(-) base-commit: f8fbcdfb0665de60997d9746809e1704ed782bbc -- 2.31.1