From mboxrd@z Thu Jan 1 00:00:00 1970 From: Takashi Iwai Subject: Re: [PATCH] New quirk for USB DAC 08bb:2704 Date: Mon, 14 Feb 2011 18:10:32 +0100 Message-ID: References: <4D570F65.6000108@xsdg.org> Mime-Version: 1.0 (generated by SEMI 1.14.6 - "Maruoka") Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mx2.suse.de (cantor2.suse.de [195.135.220.15]) by alsa0.perex.cz (Postfix) with ESMTP id 09EB424478 for ; Mon, 14 Feb 2011 18:10:38 +0100 (CET) In-Reply-To: <4D570F65.6000108@xsdg.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: alsa-devel-bounces@alsa-project.org Errors-To: alsa-devel-bounces@alsa-project.org To: Omari Stephens Cc: alsa-devel@alsa-project.org List-Id: alsa-devel@alsa-project.org At Sat, 12 Feb 2011 22:53:25 +0000, Omari Stephens wrote: > > Howdy, all > > I have one of these: > http://www.chordelectronics.co.uk/products_detail.asp?id=63 > > It's got one of these USB DACs inside > ID 08bb:2704 Texas Instruments Japan > > The DAC has a single mixer control, Master, which allows you to adjust > volume and mute/unmute. The fun thing is that the volume adjustment has > no effect whatsoever. On machines running pulse, this means that output > will be at 0dB pretty much all the time. (Of course, this is true of > non-pulse machines also). > > The attached patch disables the Master control, which causes pulse to > control levels entirely in software, as it should for this device. > > The main downside to this patch is that, while the volume part of the > Master control is non-functional, the mute/unmute aspect does work as > expected. I couldn't figure out how to change the Master control to > just a mute/unmute control, but if someone has suggestions on what to > do, that'd be appreciated. Judging by the comments in the code (and > contrary to what I wrote in the map comment), I presume the mute/unmute > control is the only reason why 08bb:2702 isn't doing this same thing. The patch looks good to me. Could you give your sign-off? thanks, Takashi > > Cheers, > --xsdg > [2 0001-Add-a-quirk-to-ignore-the-Master-volume-control-on-0.patch ] > >From 3061b0fa281ea812f0767bc9df6bae7b8016d0d0 Mon Sep 17 00:00:00 2001 > From: Omari Stephens > Date: Sat, 12 Feb 2011 20:36:04 +0000 > Subject: [PATCH] Add a quirk to ignore the Master volume control on 08bb:2704 > > --- > mixer.c | 6 ++++++ > mixer_maps.c | 19 ++++++++++++++++++- > 2 files changed, 24 insertions(+), 1 deletions(-) > > diff --git a/mixer.c b/mixer.c > index 3ed3901..38d5d77 100644 > --- a/mixer.c > +++ b/mixer.c > @@ -1192,6 +1192,12 @@ static int parse_audio_feature_unit(struct mixer_build *state, int unitid, void > /* disable non-functional volume control */ > master_bits &= ~UAC_CONTROL_BIT(UAC_FU_VOLUME); > break; > + case USB_ID(0x08bb, 0x2704): > + snd_printk(KERN_INFO > + "usbmixer: master volume quirk for PCM2704 chip\n"); > + /* disable non-functional volume control */ > + master_bits &= ~UAC_CONTROL_BIT(UAC_FU_VOLUME); > + break; > } > if (channels > 0) > first_ch_bits = snd_usb_combine_bytes(bmaControls + csize, csize); > diff --git a/mixer_maps.c b/mixer_maps.c > index f1324c4..40edd9b 100644 > --- a/mixer_maps.c > +++ b/mixer_maps.c > @@ -208,11 +208,23 @@ static struct usbmix_name_map live24ext_map[] = { > /* LineX FM Transmitter entry - needed to bypass controls bug */ > static struct usbmix_name_map linex_map[] = { > /* 1: IT pcm */ > - /* 2: OT Speaker */ > + /* 2: OT Speaker */ > { 3, "Master" }, /* FU: master volume - left / right / mute */ > { 0 } /* terminator */ > }; > > +/* This DAC (08bb:2704) has a single "Volume" control which isn't actually > + * connected to anything. The 08bb:2702 device is based off the LineX map, so > + * presumably the 2704 one is similar but more broken. > + */ > +static struct usbmix_name_map ti_broken_usb_dac_map[] = { > + /* 1: IT pcm */ > + /* 2: OT Speaker */ > + { 3, NULL }, /* Master (not connected to anything) */ > + { 0 } > +}; > + > + > static struct usbmix_name_map maya44_map[] = { > /* 1: IT line */ > { 2, "Line Playback" }, /* FU */ > @@ -355,6 +367,11 @@ static struct usbmix_ctl_map usbmix_ctl_maps[] = { > .ignore_ctl_error = 1, > }, > { > + .id = USB_ID(0x08bb, 0x2704), > + .map = ti_broken_usb_dac_map, > + .ignore_ctl_error = 1, > + }, > + { > .id = USB_ID(0x0a92, 0x0091), > .map = maya44_map, > }, > -- > 1.7.2.3 > > [3 ] > _______________________________________________ > Alsa-devel mailing list > Alsa-devel@alsa-project.org > http://mailman.alsa-project.org/mailman/listinfo/alsa-devel