On Mon, 18 Jan 2021 18:54:57 +0100, Mike Oliphant wrote: > > Here is the dmesg output with dyndbg enabled. It looks like it is failing > to find the clock source, and hence cannot obtain the valid sample rates. > > It looks like it is finding the clock selector (id: 40), but > "uac_clock_selector_get_val()" is returning zero, and it never gets the > clock source (id: 41). Aha. Maybe the firmware doesn't expect it being asked as it's the single connection. Does the patch below help anything? Takashi --- a/sound/usb/clock.c +++ b/sound/usb/clock.c @@ -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],