At Tue, 17 Nov 2009 11:59:36 +0100, Javier Kohen wrote: > > Clemens, > > On Tue, Nov 17, 2009 at 10:04, Clemens Ladisch <clemens@xxxxxxxxxx> wrote: > > > > Javier Kohen wrote: > > > I've written the attached patch to disable the master volume control > > > in this chipset. The datasheet [1] documents two independent channel > > > volume controls, one master mute control and one master volume > > > control. However, at least on my device (a Fubar USB DAC), the master > > > volume control always returns USB stalls when queried for any of its > > > parameters (min/max/res/cur). > > > > I'd guess that Windows ignores the master volume when it finds > > channel volume controls, so this function was never actually tested. > > > > > However, it seems that either the USB specs are wrong, > > > > They are abominations written by committees. > > > > > or my USB hub or the card are buggy. > > > > Your hub is certainly buggy ... > > > > > the PCM2702 and my motherboard don't interact well. After a while the > > > sound is degraded, first into a hiss, then into pure noise. > > > > ... the card too. > > > > > > Your patch looks good; please provide a log message and a Signed-off-by > > tag. > > Thanks for the prompt review! > > Disable the master volume control in the PCM2702 chipset. > > The datasheet documents two independent channel volume controls, one > master mute control and one master volume control. All controls are > fully functional except for the master volume control, which returns > USB stalls on all GET requests. > > Signed-off-by: Javier Kohen <jkohen@xxxxxxxxxxxxxxxxxxxxx> > --- > diff --git a/sound/usb/usbmixer.c b/sound/usb/usbmixer.c > index 9efcfd0..406315e 100644 > --- a/sound/usb/usbmixer.c > +++ b/sound/usb/usbmixer.c > @@ -1071,6 +1071,16 @@ static int parse_audio_feature_unit(struct > mixer_build *state, int unitid, unsig > channels = (ftr[0] - 7) / csize - 1; > > master_bits = snd_usb_combine_bytes(ftr + 6, csize); > + /* master configuration quirks */ > + switch (state->chip->usb_id) { > + case USB_ID(0x08bb, 0x2702): > + snd_printk(KERN_INFO > + "master volume quirk for PCM2702 chip\n"); Better to put a prefix like "usbmixer: master volume ..." since snd_printk() can be turned to the normal printk() depending on the kernel config. thanks, Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel