aboutsummaryrefslogtreecommitdiffstats
path: root/sound/usb
diff options
context:
space:
mode:
authorJiri Jaburek <jjaburek@redhat.com>2014-12-17 20:03:19 -0500
committerTakashi Iwai <tiwai@suse.de>2014-12-18 11:49:50 -0500
commitd70a1b9893f820fdbcdffac408c909c50f2e6b43 (patch)
tree82485e53d1da9b2a672584ed884f99ef247d5ee9 /sound/usb
parent506b62c33a7444b91a93bf2da772f4c7e6656410 (diff)
ALSA: usb-audio: extend KEF X300A FU 10 tweak to Arcam rPAC
The Arcam rPAC seems to have the same problem - whenever anything (alsamixer, udevd, 3.9+ kernel from 60af3d037eb8c, ..) attempts to access mixer / control interface of the card, the firmware "locks up" the entire device, resulting in SNDRV_PCM_IOCTL_HW_PARAMS failed (-5): Input/output error from alsa-lib. Other operating systems can somehow read the mixer (there seems to be playback volume/mute), but any manipulation is ignored by the device (which has hardware volume controls). Cc: <stable@vger.kernel.org> Signed-off-by: Jiri Jaburek <jjaburek@redhat.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/usb')
-rw-r--r--sound/usb/mixer_maps.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/sound/usb/mixer_maps.c b/sound/usb/mixer_maps.c
index 1994d41348f8..b703cb3cda19 100644
--- a/sound/usb/mixer_maps.c
+++ b/sound/usb/mixer_maps.c
@@ -333,8 +333,11 @@ static struct usbmix_name_map gamecom780_map[] = {
333 {} 333 {}
334}; 334};
335 335
336static const struct usbmix_name_map kef_x300a_map[] = { 336/* some (all?) SCMS USB3318 devices are affected by a firmware lock up
337 { 10, NULL }, /* firmware locks up (?) when we try to access this FU */ 337 * when anything attempts to access FU 10 (control)
338 */
339static const struct usbmix_name_map scms_usb3318_map[] = {
340 { 10, NULL },
338 { 0 } 341 { 0 }
339}; 342};
340 343
@@ -434,8 +437,14 @@ static struct usbmix_ctl_map usbmix_ctl_maps[] = {
434 .map = ebox44_map, 437 .map = ebox44_map,
435 }, 438 },
436 { 439 {
440 /* KEF X300A */
437 .id = USB_ID(0x27ac, 0x1000), 441 .id = USB_ID(0x27ac, 0x1000),
438 .map = kef_x300a_map, 442 .map = scms_usb3318_map,
443 },
444 {
445 /* Arcam rPAC */
446 .id = USB_ID(0x25c4, 0x0003),
447 .map = scms_usb3318_map,
439 }, 448 },
440 { 0 } /* terminator */ 449 { 0 } /* terminator */
441}; 450};