diff options
Diffstat (limited to 'sound/usb')
-rw-r--r-- | sound/usb/mixer_maps.c | 10 | ||||
-rw-r--r-- | sound/usb/quirks.c | 14 |
2 files changed, 24 insertions, 0 deletions
diff --git a/sound/usb/mixer_maps.c b/sound/usb/mixer_maps.c index cc2dd1f0decb..32af6b741ef5 100644 --- a/sound/usb/mixer_maps.c +++ b/sound/usb/mixer_maps.c | |||
@@ -322,6 +322,12 @@ static struct usbmix_name_map hercules_usb51_map[] = { | |||
322 | { 0 } /* terminator */ | 322 | { 0 } /* terminator */ |
323 | }; | 323 | }; |
324 | 324 | ||
325 | /* Plantronics Gamecom 780 has a broken volume control, better to disable it */ | ||
326 | static struct usbmix_name_map gamecom780_map[] = { | ||
327 | { 9, NULL }, /* FU, speaker out */ | ||
328 | {} | ||
329 | }; | ||
330 | |||
325 | /* | 331 | /* |
326 | * Control map entries | 332 | * Control map entries |
327 | */ | 333 | */ |
@@ -358,6 +364,10 @@ static struct usbmix_ctl_map usbmix_ctl_maps[] = { | |||
358 | .id = USB_ID(0x046d, 0x09a4), | 364 | .id = USB_ID(0x046d, 0x09a4), |
359 | .ignore_ctl_error = 1, | 365 | .ignore_ctl_error = 1, |
360 | }, | 366 | }, |
367 | { /* Plantronics GameCom 780 */ | ||
368 | .id = USB_ID(0x047f, 0xc010), | ||
369 | .map = gamecom780_map, | ||
370 | }, | ||
361 | { | 371 | { |
362 | /* Hercules DJ Console (Windows Edition) */ | 372 | /* Hercules DJ Console (Windows Edition) */ |
363 | .id = USB_ID(0x06f8, 0xb000), | 373 | .id = USB_ID(0x06f8, 0xb000), |
diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index 0df9ede99dfd..ede753685491 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c | |||
@@ -660,6 +660,18 @@ static int snd_usb_cm6206_boot_quirk(struct usb_device *dev) | |||
660 | return err; | 660 | return err; |
661 | } | 661 | } |
662 | 662 | ||
663 | /* quirk for Plantronics GameCom 780 with CM6302 chip */ | ||
664 | static int snd_usb_gamecon780_boot_quirk(struct usb_device *dev) | ||
665 | { | ||
666 | /* set the initial volume and don't change; other values are either | ||
667 | * too loud or silent due to firmware bug (bko#65251) | ||
668 | */ | ||
669 | u8 buf[2] = { 0x74, 0xdc }; | ||
670 | return snd_usb_ctl_msg(dev, usb_sndctrlpipe(dev, 0), UAC_SET_CUR, | ||
671 | USB_RECIP_INTERFACE | USB_TYPE_CLASS | USB_DIR_OUT, | ||
672 | UAC_FU_VOLUME << 8, 9 << 8, buf, 2); | ||
673 | } | ||
674 | |||
663 | /* | 675 | /* |
664 | * Novation Twitch DJ controller | 676 | * Novation Twitch DJ controller |
665 | */ | 677 | */ |
@@ -986,6 +998,8 @@ int snd_usb_apply_boot_quirk(struct usb_device *dev, | |||
986 | return snd_usb_nativeinstruments_boot_quirk(dev); | 998 | return snd_usb_nativeinstruments_boot_quirk(dev); |
987 | case USB_ID(0x0763, 0x2012): /* M-Audio Fast Track Pro USB */ | 999 | case USB_ID(0x0763, 0x2012): /* M-Audio Fast Track Pro USB */ |
988 | return snd_usb_fasttrackpro_boot_quirk(dev); | 1000 | return snd_usb_fasttrackpro_boot_quirk(dev); |
1001 | case USB_ID(0x047f, 0xc010): /* Plantronics Gamecom 780 */ | ||
1002 | return snd_usb_gamecon780_boot_quirk(dev); | ||
989 | } | 1003 | } |
990 | 1004 | ||
991 | return 0; | 1005 | return 0; |