]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
ALSA: usb-audio: Skip the clock selector inquiry for single connections
authorTakashi Iwai <tiwai@suse.de>
Wed, 20 Jan 2021 21:39:31 +0000 (22:39 +0100)
committerTakashi Iwai <tiwai@suse.de>
Thu, 21 Jan 2021 11:47:06 +0000 (12:47 +0100)
The current USB-audio driver gets an error at probing NUX MG-300 about
parsing the clocks.  This is because the firmware doesn't return the
proper connection of the clock selector that is connected to a single
clock; it's likely that the firmware was lazy^w optimized and the
inquiry wasn't handled.  Actually it makes little sense to inquire and
set up the single connection explicitly.

This patch fixes the issue by simply skipping the clock selector
inquiry if it's a single connection.

Reported-by: Mike Oliphant <oliphant@nostatic.org>
Link: https://lore.kernel.org/r/20210120213932.1971-1-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/usb/clock.c

index dc68ed65e47877a31b6fcb1144246337f5a5213d..8243652d5604a3629644c0526c8e4db9e35376d1 100644 (file)
@@ -298,6 +298,11 @@ static int __uac_clock_find_source(struct snd_usb_audio *chip,
        if (selector) {
                int ret, i, cur;
 
+               if (selector->bNrInPins == 1) {
+                       ret = 1;
+                       goto find_source;
+               }
+
                /* the entity ID we are looking for is a selector.
                 * find out what it currently selects */
                ret = uac_clock_selector_get_val(chip, selector->bClockID);
@@ -314,6 +319,7 @@ static int __uac_clock_find_source(struct snd_usb_audio *chip,
                        return -EINVAL;
                }
 
+       find_source:
                cur = ret;
                ret = __uac_clock_find_source(chip, fmt,
                                              selector->baCSourceID[ret - 1],