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],