Message ID | 20240123134635.54026-1-alexander@tsoy.me (mailing list archive) |
---|---|
State | Accepted |
Commit | 67794f882adca00d043899ac248bc002751da9f6 |
Headers | show |
Series | ALSA: usb-audio: Skip setting clock selector for single connections | expand |
On Tue, 23 Jan 2024 14:46:35 +0100, Alexander Tsoy wrote: > > Since commit 086b957cc17f5 ("ALSA: usb-audio: Skip the clock selector > inquiry for single connections") we are already skipping clock selector > inquiry if only one clock source is connected, but we are still sending > a set request. Lets skip that too. > > This should fix errors when setting a sample rate on devices that don't > have any controls present within the clock selector. An example of such > device is the new revision of MOTU M Series (07fd:000b): > > AudioControl Interface Descriptor: > bLength 8 > bDescriptorType 36 > bDescriptorSubtype 11 (CLOCK_SELECTOR) > bClockID 1 > bNrInPins 1 > baCSourceID(0) 2 > bmControls 0x00 > iClockSelector 0 > > Perhaps we also should check if clock selectors are readable and writeable > like we already do for clock sources, but this is out of scope of this > patch. > > Link: https://bugzilla.kernel.org/show_bug.cgi?id=217601 > Signed-off-by: Alexander Tsoy <alexander@tsoy.me> Thanks, applied. Takashi
В Вт, 23/01/2024 в 15:14 +0100, Takashi Iwai пишет: > > On Tue, 23 Jan 2024 14:46:35 +0100, > > Alexander Tsoy wrote: > > > > > > > > Since commit 086b957cc17f5 ("ALSA: usb-audio: Skip the clock > > > > selector > > > > inquiry for single connections") we are already skipping clock > > > > selector > > > > inquiry if only one clock source is connected, but we are still > > > > sending > > > > a set request. Lets skip that too. > > > > > > > > This should fix errors when setting a sample rate on devices > > > > that > > > > don't > > > > have any controls present within the clock selector. An example > > > > of > > > > such > > > > device is the new revision of MOTU M Series (07fd:000b): > > > > > > > > AudioControl Interface Descriptor: > > > > bLength 8 > > > > bDescriptorType 36 > > > > bDescriptorSubtype 11 (CLOCK_SELECTOR) > > > > bClockID 1 > > > > bNrInPins 1 > > > > baCSourceID(0) 2 > > > > bmControls 0x00 > > > > iClockSelector 0 > > > > > > > > Perhaps we also should check if clock selectors are readable > > > > and > > > > writeable > > > > like we already do for clock sources, but this is out of scope > > > > of > > > > this > > > > patch. > > > > > > > > Link: https://bugzilla.kernel.org/show_bug.cgi?id=217601 > > > > Signed-off-by: Alexander Tsoy <alexander@tsoy.me> > > > > Thanks, applied. It looks like this patch will bring back problems with Behringer mixers [1]. So we probably should revert. The mentioned case with MOTU M Series should be also covered by "Support read-only clock selector control" commit. [1] https://bugzilla.kernel.org/show_bug.cgi?id=199327
On Sun, 28 Jan 2024 11:35:51 +0100, Alexander Tsoy wrote: > > В Вт, 23/01/2024 в 15:14 +0100, Takashi Iwai пишет: > > > On Tue, 23 Jan 2024 14:46:35 +0100, > > > Alexander Tsoy wrote: > > > > > > > > > > Since commit 086b957cc17f5 ("ALSA: usb-audio: Skip the clock > > > > > selector > > > > > inquiry for single connections") we are already skipping clock > > > > > selector > > > > > inquiry if only one clock source is connected, but we are still > > > > > sending > > > > > a set request. Lets skip that too. > > > > > > > > > > This should fix errors when setting a sample rate on devices > > > > > that > > > > > don't > > > > > have any controls present within the clock selector. An example > > > > > of > > > > > such > > > > > device is the new revision of MOTU M Series (07fd:000b): > > > > > > > > > > AudioControl Interface Descriptor: > > > > > bLength 8 > > > > > bDescriptorType 36 > > > > > bDescriptorSubtype 11 (CLOCK_SELECTOR) > > > > > bClockID 1 > > > > > bNrInPins 1 > > > > > baCSourceID(0) 2 > > > > > bmControls 0x00 > > > > > iClockSelector 0 > > > > > > > > > > Perhaps we also should check if clock selectors are readable > > > > > and > > > > > writeable > > > > > like we already do for clock sources, but this is out of scope > > > > > of > > > > > this > > > > > patch. > > > > > > > > > > Link: https://bugzilla.kernel.org/show_bug.cgi?id=217601 > > > > > Signed-off-by: Alexander Tsoy <alexander@tsoy.me> > > > > > > Thanks, applied. > > It looks like this patch will bring back problems with Behringer mixers > [1]. So we probably should revert. The mentioned case with MOTU M > Series should be also covered by "Support read-only clock selector > control" commit. > > [1] https://bugzilla.kernel.org/show_bug.cgi?id=199327 OK, care to submit a patch to revert it? thanks, Takashi
В Вс, 28/01/2024 в 13:09 +0100, Takashi Iwai пишет: > On Sun, 28 Jan 2024 11:35:51 +0100, > Alexander Tsoy wrote: > > > > В Вт, 23/01/2024 в 15:14 +0100, Takashi Iwai пишет: > > > > On Tue, 23 Jan 2024 14:46:35 +0100, > > > > Alexander Tsoy wrote: > > > > > > > > > > > > Since commit 086b957cc17f5 ("ALSA: usb-audio: Skip the > > > > > > clock > > > > > > selector > > > > > > inquiry for single connections") we are already skipping > > > > > > clock > > > > > > selector > > > > > > inquiry if only one clock source is connected, but we are > > > > > > still > > > > > > sending > > > > > > a set request. Lets skip that too. > > > > > > > > > > > > This should fix errors when setting a sample rate on > > > > > > devices > > > > > > that > > > > > > don't > > > > > > have any controls present within the clock selector. An > > > > > > example > > > > > > of > > > > > > such > > > > > > device is the new revision of MOTU M Series (07fd:000b): > > > > > > > > > > > > AudioControl Interface Descriptor: > > > > > > bLength 8 > > > > > > bDescriptorType 36 > > > > > > bDescriptorSubtype 11 (CLOCK_SELECTOR) > > > > > > bClockID 1 > > > > > > bNrInPins 1 > > > > > > baCSourceID(0) 2 > > > > > > bmControls 0x00 > > > > > > iClockSelector 0 > > > > > > > > > > > > Perhaps we also should check if clock selectors are > > > > > > readable > > > > > > and > > > > > > writeable > > > > > > like we already do for clock sources, but this is out of > > > > > > scope > > > > > > of > > > > > > this > > > > > > patch. > > > > > > > > > > > > Link: https://bugzilla.kernel.org/show_bug.cgi?id=217601 > > > > > > Signed-off-by: Alexander Tsoy <alexander@tsoy.me> > > > > > > > > Thanks, applied. > > > > It looks like this patch will bring back problems with Behringer > > mixers > > [1]. So we probably should revert. The mentioned case with MOTU M > > Series should be also covered by "Support read-only clock selector > > control" commit. > > > > [1] https://bugzilla.kernel.org/show_bug.cgi?id=199327 > > OK, care to submit a patch to revert it? Sure, done!
diff --git a/sound/usb/clock.c b/sound/usb/clock.c index 33db334e6556..94e4aaeafe58 100644 --- a/sound/usb/clock.c +++ b/sound/usb/clock.c @@ -325,7 +325,8 @@ static int __uac_clock_find_source(struct snd_usb_audio *chip, visited, validate); if (ret > 0) { /* Skip setting clock selector again for some devices */ - if (chip->quirk_flags & QUIRK_FLAG_SKIP_CLOCK_SELECTOR) + if (chip->quirk_flags & QUIRK_FLAG_SKIP_CLOCK_SELECTOR || + pins == 1) return ret; err = uac_clock_selector_set_val(chip, entity_id, cur); if (err < 0)
Since commit 086b957cc17f5 ("ALSA: usb-audio: Skip the clock selector inquiry for single connections") we are already skipping clock selector inquiry if only one clock source is connected, but we are still sending a set request. Lets skip that too. This should fix errors when setting a sample rate on devices that don't have any controls present within the clock selector. An example of such device is the new revision of MOTU M Series (07fd:000b): AudioControl Interface Descriptor: bLength 8 bDescriptorType 36 bDescriptorSubtype 11 (CLOCK_SELECTOR) bClockID 1 bNrInPins 1 baCSourceID(0) 2 bmControls 0x00 iClockSelector 0 Perhaps we also should check if clock selectors are readable and writeable like we already do for clock sources, but this is out of scope of this patch. Link: https://bugzilla.kernel.org/show_bug.cgi?id=217601 Signed-off-by: Alexander Tsoy <alexander@tsoy.me> --- sound/usb/clock.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)