]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/blob - releases/3.18.3/alsa-usb-audio-extend-kef-x300a-fu-10-tweak-to-arcam-rpac.patch
Fixes for 4.19
[thirdparty/kernel/stable-queue.git] / releases / 3.18.3 / alsa-usb-audio-extend-kef-x300a-fu-10-tweak-to-arcam-rpac.patch
1 From d70a1b9893f820fdbcdffac408c909c50f2e6b43 Mon Sep 17 00:00:00 2001
2 From: Jiri Jaburek <jjaburek@redhat.com>
3 Date: Thu, 18 Dec 2014 02:03:19 +0100
4 Subject: ALSA: usb-audio: extend KEF X300A FU 10 tweak to Arcam rPAC
5
6 From: Jiri Jaburek <jjaburek@redhat.com>
7
8 commit d70a1b9893f820fdbcdffac408c909c50f2e6b43 upstream.
9
10 The Arcam rPAC seems to have the same problem - whenever anything
11 (alsamixer, udevd, 3.9+ kernel from 60af3d037eb8c, ..) attempts to
12 access mixer / control interface of the card, the firmware "locks up"
13 the entire device, resulting in
14 SNDRV_PCM_IOCTL_HW_PARAMS failed (-5): Input/output error
15 from alsa-lib.
16
17 Other operating systems can somehow read the mixer (there seems to be
18 playback volume/mute), but any manipulation is ignored by the device
19 (which has hardware volume controls).
20
21 Signed-off-by: Jiri Jaburek <jjaburek@redhat.com>
22 Signed-off-by: Takashi Iwai <tiwai@suse.de>
23 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
24
25 ---
26 sound/usb/mixer_maps.c | 15 ++++++++++++---
27 1 file changed, 12 insertions(+), 3 deletions(-)
28
29 --- a/sound/usb/mixer_maps.c
30 +++ b/sound/usb/mixer_maps.c
31 @@ -328,8 +328,11 @@ static struct usbmix_name_map gamecom780
32 {}
33 };
34
35 -static const struct usbmix_name_map kef_x300a_map[] = {
36 - { 10, NULL }, /* firmware locks up (?) when we try to access this FU */
37 +/* some (all?) SCMS USB3318 devices are affected by a firmware lock up
38 + * when anything attempts to access FU 10 (control)
39 + */
40 +static const struct usbmix_name_map scms_usb3318_map[] = {
41 + { 10, NULL },
42 { 0 }
43 };
44
45 @@ -425,8 +428,14 @@ static struct usbmix_ctl_map usbmix_ctl_
46 .map = ebox44_map,
47 },
48 {
49 + /* KEF X300A */
50 .id = USB_ID(0x27ac, 0x1000),
51 - .map = kef_x300a_map,
52 + .map = scms_usb3318_map,
53 + },
54 + {
55 + /* Arcam rPAC */
56 + .id = USB_ID(0x25c4, 0x0003),
57 + .map = scms_usb3318_map,
58 },
59 { 0 } /* terminator */
60 };