On Mon, 05 Jun 2023 15:21:51 +0200, Joakim Tjernlund wrote: > > On Mon, 2023-06-05 at 09:39 +0200, Takashi Iwai wrote: > > On Thu, 01 Jun 2023 16:28:05 +0200, > > Joakim Tjernlund wrote: > > > > > > Adding Michael Ralston <michael@xxxxxxxxxxxxx> > > > > > > He did have problems with his behringer UMC404HD device when this whole seq. was removed. > > > Ralston, can you try if the below change affects your device? > > > > Sorry for the late reaction, as I've been off in the last weeks. > > NP. > > > > > The code sequence there seems pretty sensitive, and swapping or > > dropping the call might break things easily on certain devices, > > unfortunately. So, I guess we can't take the patch as is. If any, we > > need to fiddle the call order depending on the device quirk or such. > > I guess we may try to fit with the existing quirk flag. Let me check > > it later. > > yes, this is tricky. To me it look like this code will always set 48000 sample rate and > not all devices support that on all EPs. > Maybe one can get away with not setting sample rate at all? Just guessing though. I guess it should work without setting the rate explicitly, but as already mentioned, some devices (firmware) might need it. Who knows. The vendors apparently test only with Windows and/or MacOS, and issuing unexpected commands (or missing the expected command) can screw up firmware... Takashi > > Jocke > > > > > > > thanks, > > > > Takashi > > > > > > > Jocke > > > > > > On Thu, 2023-06-01 at 15:11 +0200, Joakim Tjernlund wrote: > > > > On some USB speaker devices(Jabra/Logitech) we see above error > > > > msg when connecting device to computer and kernel is probing the device. > > > > > > > > Moving the snd_usb_init_sample_rate() to after usb_set_interface() makes > > > > the error go away. > > > > > > > > Signed-off-by: Joakim Tjernlund <joakim.tjernlund@xxxxxxxxxxxx> > > > > Cc: stable@xxxxxxxxxxxxxxx > > > > --- > > > > sound/usb/stream.c | 2 +- > > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > > > diff --git a/sound/usb/stream.c b/sound/usb/stream.c > > > > index f10f4e6d3fb8..d9ac8663a48b 100644 > > > > --- a/sound/usb/stream.c > > > > +++ b/sound/usb/stream.c > > > > @@ -1226,8 +1226,8 @@ static int __snd_usb_parse_audio_interface(struct snd_usb_audio *chip, > > > > /* try to set the interface... */ > > > > usb_set_interface(chip->dev, iface_no, 0); > > > > snd_usb_init_pitch(chip, fp); > > > > - snd_usb_init_sample_rate(chip, fp, fp->rate_max); > > > > usb_set_interface(chip->dev, iface_no, altno); > > > > + snd_usb_init_sample_rate(chip, fp, fp->rate_max); > > > > } > > > > return 0; > > > > } > > > >