[alsa-devel] [PATCH 2/2] snd-usb-audio: Add duplex mode for Digidesign Mbox 1 and enable mixer

Takashi Iwai tiwai at suse.de
Sun Nov 9 18:27:23 CET 2014


At Sun, 09 Nov 2014 15:04:42 +0100,
Clemens Ladisch wrote:
> 
> Takashi Iwai wrote:
> > Damien Zammit wrote:
> >> On 07/11/14 01:15, Takashi Iwai wrote:
> >>> Hmm, can we achieve this without introducing the new audioformats
> >>> thing, e.g. with COMPOSITE, instead?
> >>
> >> I don't think COMPOSITE will work because the same interface has
> >> multiple endpoints.  My code provides a framework for other devices with
> >> the same issue.  I was told previously that this was the problem with
> >> getting my previous attempt into the kernel.  Or is this doable without
> >> adding a struct?
> >
> > I think the only point is the check in create_composite_quirk(), where
> > it marks the iface as claimed and skips the next entry that has been
> > already claimed.  However, the current code looks inconsistent -- it
> > allows multiple entries only if the iface matches with the current
> > one.  Fixing it like below would make things working.
> >
> > It's a quick idea, so a bit more reviews would be needed, though.
> > Clemens, what do you think?
> 
> Reviewed-by: Clemens Ladisch <clemens at ladisch.de>

Thanks.  I now queued the proper patch to for-next branch and pushed
out.

Damien, could you rebase your patches to for-next branch of sound git
tree, and use this new feature?


Takashi

> 
> > ---
> > --- a/sound/usb/quirks.c
> > +++ b/sound/usb/quirks.c
> > @@ -58,9 +58,17 @@ static int create_composite_quirk(struct snd_usb_audio *chip,
> >  		err = snd_usb_create_quirk(chip, iface, driver, quirk);
> >  		if (err < 0)
> >  			return err;
> > -		if (quirk->ifnum != probed_ifnum)
> > +	}
> > +
> > +	for (quirk = quirk->data; quirk->ifnum >= 0; ++quirk) {
> > +		iface = usb_ifnum_to_if(chip->dev, quirk->ifnum);
> > +		if (!iface)
> > +			continue;
> > +		if (quirk->ifnum != probed_ifnum &&
> > +		    !usb_interface_claimed(iface))
> >  			usb_driver_claim_interface(driver, iface, (void *)-1L);
> >  	}
> > +
> >  	return 0;
> >  }
> >
> 


More information about the Alsa-devel mailing list