diff mbox series

ALSA: usb-audio: Skip setting clock selector for single connections

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

Commit Message

Alexander Tsoy Jan. 23, 2024, 1:46 p.m. UTC
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(-)

Comments

Takashi Iwai Jan. 23, 2024, 2:14 p.m. UTC | #1
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
Alexander Tsoy Jan. 28, 2024, 10:35 a.m. UTC | #2
В Вт, 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
Takashi Iwai Jan. 28, 2024, 12:09 p.m. UTC | #3
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
Alexander Tsoy Jan. 28, 2024, 1:27 p.m. UTC | #4
В Вс, 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 mbox series

Patch

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)