[alsa-devel] [PATCH v2] ALSA: snd-usb-usx2y: remove bogus frame checks

Dr Nicholas J Bailey nicholas.bailey at glasgow.ac.uk
Mon Oct 7 18:20:29 CEST 2013


On Monday 07 October 2013 16:34:37 you wrote:
> On 07.10.2013 17:35, Takashi Iwai wrote:
> > At Mon, 07 Oct 2013 17:11:44 +0200,
> > 
> > Daniel Mack wrote:
> >> On 07.10.2013 16:58, Dr Nicholas J Bailey wrote:
> >>> For me, this patch alone fails in much the same way (possibly exactly
> >>> the same way) as before the previous patch.
> >>> 
> >>> From audacity (probably not much use unless you know the source code...
> >>> I
> >> 
> >>> don't):
> >> [...]
> >> 
> >>> nick at arial:/usr/src$ dmesg | tail
> >>> [  111.667015] usb 2-1.6.4: New USB device strings: Mfr=0, Product=0,
> >>> SerialNumber=0
> >>> [  114.707156] Sequence Error!(hcd_frame=3 ep=8in;wait=1024,frame=0).
> >>> [  114.707156] Most probably some urb of usb-frame 1024 is still
> >>> missing.
> >> 
> >> You certainly haven't booted a kernel which contains the patch we're
> >> talking about here. The only occurance of the error message you quote
> >> was removed by this patch, so a patched kernel can't possibly produce
> >> what you see in your logs.
> > 
> > Nicholas booted a kernel without your fix patch but only with my patch
> > to disable the -EPIPE check, in order to see whether the latter alone
> > suffices or not.  So he's testing with a right kernel :)
> 
> Oh, so *I* was referring to the wrong patch then.
> Apologies for causing confusion :)
> 
> 
> Daniel

That's cool, Daniel. Actually, I've not written anything for the kernel since 
1.x (it was an intravascular ultrasound board my PhD student built - it was a 
hardware project and the sorfware was never distributed). Things have changed 
a *lot* since then, and I never used make-dpkg before this, so please keep on 
checking I do the right thing!

The only thing I *might* have screwed up is that both the kernels are called 
3.10.11 as far as uname -a is concerned, but are in separate debs. So the 
patch which took out

	static void usX2Y_error_sequence(
		struct usX2Ydev *usX2Y,
		struct snd_usX2Y_substream *subs, struct urb *urb)

and the bit about

	if (likely((urb->start_frame & 0xFFFF) == (usX2Y->wait_iso_frame & 
0xFFFF)))
		subs->completed_urb = urb;
	else {
		usX2Y_error_sequence(usX2Y, subs, urb);
		return;
	}

are in a deb called

	linux-image-3.10.11_3.10.11.TASCAM.2_i386.deb

and the one with Takashi's cpp directive /only/ based on a fresh source tree 
from the debian source package is in

	linux-image-3.10.11_3.10.11.TASCAM.3_i386.deb

I'm installing the package I want to play with, and there's a message to say I 
should reboot ASAP because of potential module conflicts, and that when I do 
the machine will recompute the mod deps for me, so I do, and that's that.

Probably a bit of a hack, but I don't think it's stupidly wrong (unless you 
know different).

Bottom line is:
	TASCAM.2 works with no complaints;
	TASCAM.3 (with just the #if 0...#endif and no other changes to 3.10.11) 
gives the stalls and dmesg messages.

The only other thing I changed was the processor. I selected core2 because I 
thought it would be nice to have a custom kernel for once :)

I hope I've not been wasting your time.

Nick/.



More information about the Alsa-devel mailing list