Re: USB-Audio regression on behringer UMC404HD

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 03 Jan 2023 16:31:13 +0100,
Michael Ralston wrote:
> 
> On Wed, 4 Jan 2023 at 02:21, Takashi Iwai <tiwai@xxxxxxx> wrote:
> >
> > Hrm...  Try to reload snd_usb_audio module with the dyndbg=+p option,
> > e.g.
> >
> >   # modprobe -r snd-usb-audio
> >   # modprobe snd_usb_audio dyndbg=+p
> >
> > Or you can try to put your own debug printk(); we need to make sure
> > whether it's really the right code you're testing at first.
> >
> 
> Ok, it looks like it was ignoring the kernel command line for some
> reason. modprobing it with the option brought up debug messages again.
> 
> I'm still running kernel 6.1.2 vanilla with the revert and the patches.
> 
> aplay hung again when I ran it, the kernel was stuck on:
> Jan 04 02:25:59 leatherback kernel: usb 1-4: 1:1 Start Playback PCM
> 
> and didn't output another line until I ctrl+c aplay.

OK, thanks.  Then it's not about the USB interface reset.
It must be subtle and nasty difference.

Could you apply the change below on the top?
It essentially reverts the hw_params/prepare split again.


Takashi

-- 8< --
--- a/sound/usb/pcm.c
+++ b/sound/usb/pcm.c
@@ -564,6 +564,21 @@ static int snd_usb_hw_params(struct snd_pcm_substream *substream,
 	}
 
 	ret = snd_usb_endpoint_set_params(chip, subs->data_endpoint);
+	if (ret < 0)
+		goto unlock;
+
+	if (subs->sync_endpoint) {
+		ret = snd_usb_endpoint_prepare(chip, subs->sync_endpoint);
+		if (ret < 0)
+			goto unlock;
+	}
+
+	ret = snd_usb_endpoint_prepare(chip, subs->data_endpoint);
+	if (ret < 0)
+		goto unlock;
+	else if (ret > 0)
+		snd_usb_set_format_quirk(subs, subs->cur_audiofmt);
+	ret = 0;
 
  unlock:
 	if (ret < 0)




[Index of Archives]     [Linux Kernel]     [Kernel Development Newbies]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Hiking]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux