В Пн, 20/04/2020 в 22:19 +0200, Gregor Pintar пишет:
Force it to use asynchronous playback.
Can we use snd_usb_audioformat_attributes_quirk() for such fixes? See the quirk for Griffin iMic as an example.
Same quirk has already been added for Focusrite Scarlett Solo (2nd gen) with a commit 46f5710f0b88 ("ALSA: usb-audio: Add quirk for Focusrite Scarlett Solo").
This also seems to prevent regular clicks when playing at 44100Hz on Scarlett 2i2 (2nd gen). I did not notice any side effects.
Signed-off-by: Gregor Pintar grpintar@gmail.com
sound/usb/quirks-table.h | 84 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+)
diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h index e009d584e..bc936bf79 100644 --- a/sound/usb/quirks-table.h +++ b/sound/usb/quirks-table.h @@ -2840,6 +2840,90 @@ YAMAHA_DEVICE(0x7010, "UB99"), } } }, +{
- /*
 * Focusrite Scarlett 2i2 2nd generation* Reports that playback should use Synch: Synchronous* while still providing a feedback endpoint. Synchronouscauses
* snapping on some sample rates.* Force it to use Synch: Asynchronous.*/- USB_DEVICE(0x1235, 0x8202),
 - .driver_info = (unsigned long) &(const struct
 snd_usb_audio_quirk) {
.ifnum = QUIRK_ANY_INTERFACE,.type = QUIRK_COMPOSITE,.data = (const struct snd_usb_audio_quirk[]) {{.ifnum = 1,.type = QUIRK_AUDIO_FIXED_ENDPOINT,.data = &(const struct audioformat) {.formats =SNDRV_PCM_FMTBIT_S32_LE,
.channels = 2,.iface = 1,.altsetting = 1,.altset_idx = 1,.attributes = 0,.endpoint = 0x01,.ep_attr =USB_ENDPOINT_XFER_ISOC |
USB_ENDPOINT_SYNC_ASYNC,
.protocol = UAC_VERSION_2,.rates = SNDRV_PCM_RATE_44100 |SNDRV_PCM_RATE_48000 |SNDRV_PCM_RATE_88200 |SNDRV_PCM_RATE_96000 |SNDRV_PCM_RATE_176400 |SNDRV_PCM_RATE_192000,.rate_min = 44100,.rate_max = 192000,.nr_rates = 6,.rate_table = (unsigned int[]){
44100, 48000, 88200,96000, 176400, 192000},.clock = 41}},{.ifnum = 2,.type = QUIRK_AUDIO_FIXED_ENDPOINT,.data = &(const struct audioformat) {.formats =SNDRV_PCM_FMTBIT_S32_LE,
.channels = 2,.iface = 2,.altsetting = 1,.altset_idx = 1,.attributes = 0,.endpoint = 0x82,.ep_attr =USB_ENDPOINT_XFER_ISOC |
USB_ENDPOINT_SYNC_ASYNC|
USB_ENDPOINT_USAGE_IMPLICIT_FB,
.protocol = UAC_VERSION_2,.rates = SNDRV_PCM_RATE_44100 |SNDRV_PCM_RATE_48000 |SNDRV_PCM_RATE_88200 |SNDRV_PCM_RATE_96000 |SNDRV_PCM_RATE_176400 |SNDRV_PCM_RATE_192000,.rate_min = 44100,.rate_max = 192000,.nr_rates = 6,.rate_table = (unsigned int[]){
44100, 48000, 88200,96000, 176400, 192000},.clock = 41}},{.ifnum = 3,.type = QUIRK_IGNORE_INTERFACE},{.ifnum = -1}}- }
 +},
/* Access Music devices */ {