On Mon, 18 Jan 2021 22:15:26 +0100, Mike Oliphant wrote: > > Progress - thanks for the patch! > > That got rid of the clock errors, and the the device now reports a 48000 > sample rate, which is correct. > > Unfortunately, it still isn't working properly. Playback doesn't seem to work > at all. Capture kind of works - it does record, but the audio is extremely > noisy. > > Here is the current dmesg output when the device is connected. > > Notable is the error "No valid sample rate available for 1:1, assuming a > firmware bug". > > Also notable is "1:1 Set sample rate 48000, clock 40" - where "40" is the id > of the clock selector - "41" is the id of the actual clock source. So maybe > something is still getting wired up wrong? OK, how about the one below instead? Takashi --- a/sound/usb/clock.c +++ b/sound/usb/clock.c @@ -298,6 +298,12 @@ static int __uac_clock_find_source(struct snd_usb_audio *chip, if (selector) { int ret, i, cur; + if (selector->bNrInPins == 1) { + uac_clock_selector_set_val(chip, selector->bClockID, 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 +320,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],