mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 12:42:02 +00:00
ALSA: usb-audio: Add a quirk for Plantronics Gamecom 780
Plantronics Gamecom 780 headset has a firmware problem, and when the FU 0x09 volume is changed, it results in either too loud or silence except for a very narrow range. This patch provides a workaround, ignoring the node, initialize the volume in a sane value and keep untouched. Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=65251 Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
0f4881dc1f
commit
19570d7477
@ -322,6 +322,12 @@ static struct usbmix_name_map hercules_usb51_map[] = {
|
||||
{ 0 } /* terminator */
|
||||
};
|
||||
|
||||
/* Plantronics Gamecom 780 has a broken volume control, better to disable it */
|
||||
static struct usbmix_name_map gamecom780_map[] = {
|
||||
{ 9, NULL }, /* FU, speaker out */
|
||||
{}
|
||||
};
|
||||
|
||||
/*
|
||||
* Control map entries
|
||||
*/
|
||||
@ -358,6 +364,10 @@ static struct usbmix_ctl_map usbmix_ctl_maps[] = {
|
||||
.id = USB_ID(0x046d, 0x09a4),
|
||||
.ignore_ctl_error = 1,
|
||||
},
|
||||
{ /* Plantronics GameCom 780 */
|
||||
.id = USB_ID(0x047f, 0xc010),
|
||||
.map = gamecom780_map,
|
||||
},
|
||||
{
|
||||
/* Hercules DJ Console (Windows Edition) */
|
||||
.id = USB_ID(0x06f8, 0xb000),
|
||||
|
@ -660,6 +660,18 @@ static int snd_usb_cm6206_boot_quirk(struct usb_device *dev)
|
||||
return err;
|
||||
}
|
||||
|
||||
/* quirk for Plantronics GameCom 780 with CM6302 chip */
|
||||
static int snd_usb_gamecon780_boot_quirk(struct usb_device *dev)
|
||||
{
|
||||
/* set the initial volume and don't change; other values are either
|
||||
* too loud or silent due to firmware bug (bko#65251)
|
||||
*/
|
||||
u8 buf[2] = { 0x74, 0xdc };
|
||||
return snd_usb_ctl_msg(dev, usb_sndctrlpipe(dev, 0), UAC_SET_CUR,
|
||||
USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_OUT,
|
||||
UAC_FU_VOLUME << 8, 9 << 8, buf, 2);
|
||||
}
|
||||
|
||||
/*
|
||||
* Novation Twitch DJ controller
|
||||
*/
|
||||
@ -986,6 +998,8 @@ int snd_usb_apply_boot_quirk(struct usb_device *dev,
|
||||
return snd_usb_nativeinstruments_boot_quirk(dev);
|
||||
case USB_ID(0x0763, 0x2012): /* M-Audio Fast Track Pro USB */
|
||||
return snd_usb_fasttrackpro_boot_quirk(dev);
|
||||
case USB_ID(0x047f, 0xc010): /* Plantronics Gamecom 780 */
|
||||
return snd_usb_gamecon780_boot_quirk(dev);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user