]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ALSA: usb-audio: Reorder USB mode selection quirk
authorJussi Laako <jussi@sonarnerd.net>
Thu, 11 Dec 2025 15:22:22 +0000 (17:22 +0200)
committerTakashi Iwai <tiwai@suse.de>
Sat, 13 Dec 2025 09:33:22 +0000 (10:33 +0100)
When using mode selection quirk, apply the quirk before rate setting.
Also apply this quirk on certain newer ITF interface devices.

Signed-off-by: Jussi Laako <jussi@sonarnerd.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Link: https://patch.msgid.link/20251211152224.1780782-2-jussi@sonarnerd.net
sound/usb/endpoint.c
sound/usb/quirks.c

index cc15624ecaffe881466e00d4538a780d35f3df22..8f9313857ee9da61de40c8c1f4105fe1ce4bb105 100644 (file)
@@ -1481,15 +1481,15 @@ int snd_usb_endpoint_prepare(struct snd_usb_audio *chip,
                        return err;
        }
 
-       err = snd_usb_init_pitch(chip, ep->cur_audiofmt);
+       err = snd_usb_select_mode_quirk(chip, ep->cur_audiofmt);
        if (err < 0)
                return err;
 
-       err = init_sample_rate(chip, ep);
+       err = snd_usb_init_pitch(chip, ep->cur_audiofmt);
        if (err < 0)
                return err;
 
-       err = snd_usb_select_mode_quirk(chip, ep->cur_audiofmt);
+       err = init_sample_rate(chip, ep);
        if (err < 0)
                return err;
 
index 94a8fdc9c6d3ce173d0bdd936b6a3cf5f9139c57..f38330b095e93230324364ef22a0aa98cc0269af 100644 (file)
@@ -2221,7 +2221,7 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
                   QUIRK_FLAG_IFACE_DELAY),
        DEVICE_FLG(0x0644, 0x8044, /* Esoteric D-05X */
                   QUIRK_FLAG_ITF_USB_DSD_DAC | QUIRK_FLAG_CTL_MSG_DELAY |
-                  QUIRK_FLAG_IFACE_DELAY),
+                  QUIRK_FLAG_IFACE_DELAY | QUIRK_FLAG_FORCE_IFACE_RESET),
        DEVICE_FLG(0x0644, 0x804a, /* TEAC UD-301 */
                   QUIRK_FLAG_ITF_USB_DSD_DAC | QUIRK_FLAG_CTL_MSG_DELAY |
                   QUIRK_FLAG_IFACE_DELAY),
@@ -2229,13 +2229,13 @@ static const struct usb_audio_quirk_flags_table quirk_flags_table[] = {
                   QUIRK_FLAG_FORCE_IFACE_RESET),
        DEVICE_FLG(0x0644, 0x806b, /* TEAC UD-701 */
                   QUIRK_FLAG_ITF_USB_DSD_DAC | QUIRK_FLAG_CTL_MSG_DELAY |
-                  QUIRK_FLAG_IFACE_DELAY),
+                  QUIRK_FLAG_IFACE_DELAY | QUIRK_FLAG_FORCE_IFACE_RESET),
        DEVICE_FLG(0x0644, 0x807d, /* TEAC UD-507 */
                   QUIRK_FLAG_ITF_USB_DSD_DAC | QUIRK_FLAG_CTL_MSG_DELAY |
-                  QUIRK_FLAG_IFACE_DELAY),
+                  QUIRK_FLAG_IFACE_DELAY | QUIRK_FLAG_FORCE_IFACE_RESET),
        DEVICE_FLG(0x0644, 0x806c, /* Esoteric XD */
                   QUIRK_FLAG_ITF_USB_DSD_DAC | QUIRK_FLAG_CTL_MSG_DELAY |
-                  QUIRK_FLAG_IFACE_DELAY),
+                  QUIRK_FLAG_IFACE_DELAY | QUIRK_FLAG_FORCE_IFACE_RESET),
        DEVICE_FLG(0x06f8, 0xb000, /* Hercules DJ Console (Windows Edition) */
                   QUIRK_FLAG_IGNORE_CTL_ERROR),
        DEVICE_FLG(0x06f8, 0xd002, /* Hercules DJ Console (Macintosh Edition) */