]> git.ipfire.org Git - ipfire-2.x.git/blob - src/patches/suse-2.6.27.39/patches.drivers/alsa-post-ga-hda-stac927x-fsc-fix
Imported linux-2.6.27.39 suse/xen patches.
[ipfire-2.x.git] / src / patches / suse-2.6.27.39 / patches.drivers / alsa-post-ga-hda-stac927x-fsc-fix
1 From 54930531a00af5a1c33361a02e67dd1802110465 Mon Sep 17 00:00:00 2001
2 From: Takashi Iwai <tiwai@suse.de>
3 Date: Sun, 11 Oct 2009 17:38:29 +0200
4 Subject: ALSA: hda - Fix mute sound with STAC9227/9228 codecs
5 Patch-mainline:
6 References: bnc#546006
7
8 On FSC laptops, the sound gets muted gradually when the volume is chnaged.
9 This is due to the wrong volume-knob widget setup. The delta bit (bit 7)
10 shouldn't be set for these devices.
11
12 This patch adds a new quirk to set the value 0x7f to the widget 0x24
13 instead of 0xff.
14
15 Reference: Novell bnc#546006
16 http://bugzilla.novell.com/show_bug.cgi?id=546006
17
18 Signed-off-by: Takashi Iwai <tiwai@suse.de>
19
20 ---
21 Documentation/sound/alsa/ALSA-Configuration.txt | 1 +
22 sound/pci/hda/patch_sigmatel.c | 17 +++++++++++++++++
23 2 files changed, 18 insertions(+)
24
25 --- a/Documentation/sound/alsa/ALSA-Configuration.txt
26 +++ b/Documentation/sound/alsa/ALSA-Configuration.txt
27 @@ -1075,6 +1075,7 @@
28 5stack D965 5stack + SPDIF
29 dell-3stack Dell Dimension E520
30 dell-bios Fixes with Dell BIOS setup
31 + volknob Fixes with volume-knob widget 0x24
32
33 STAC92HD71B*
34 ref Reference board
35 --- a/sound/pci/hda/patch_sigmatel.c
36 +++ b/sound/pci/hda/patch_sigmatel.c
37 @@ -158,6 +158,7 @@
38 STAC_D965_5ST_NO_FP,
39 STAC_DELL_3ST,
40 STAC_DELL_BIOS,
41 + STAC_927X_VOLKNOB,
42 STAC_927X_MODELS
43 };
44
45 @@ -821,6 +822,14 @@
46 {}
47 };
48
49 +static struct hda_verb stac927x_volknob_core_init[] = {
50 + /* don't set delta bit */
51 + {0x24, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0x7f},
52 + /* enable analog pc beep path */
53 + {0x01, AC_VERB_SET_DIGI_CONVERT_2, 1 << 5},
54 + {}
55 +};
56 +
57 static struct hda_verb stac9205_core_init[] = {
58 /* set master volume and direct control */
59 { 0x24, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xff},
60 @@ -1812,6 +1821,7 @@
61 [STAC_D965_5ST_NO_FP] = d965_5st_no_fp_pin_configs,
62 [STAC_DELL_3ST] = dell_3st_pin_configs,
63 [STAC_DELL_BIOS] = NULL,
64 + [STAC_927X_VOLKNOB] = NULL,
65 };
66
67 static const char *stac927x_models[STAC_927X_MODELS] = {
68 @@ -1823,6 +1833,7 @@
69 [STAC_D965_5ST_NO_FP] = "5stack-no-fp",
70 [STAC_DELL_3ST] = "dell-3stack",
71 [STAC_DELL_BIOS] = "dell-bios",
72 + [STAC_927X_VOLKNOB] = "volknob",
73 };
74
75 static struct snd_pci_quirk stac927x_cfg_tbl[] = {
76 @@ -1858,6 +1869,8 @@
77 "Intel D965", STAC_D965_5ST),
78 SND_PCI_QUIRK_MASK(PCI_VENDOR_ID_INTEL, 0xff00, 0x2500,
79 "Intel D965", STAC_D965_5ST),
80 + /* volume-knob fixes */
81 + SND_PCI_QUIRK_VENDOR(0x10cf, "FSC", STAC_927X_VOLKNOB),
82 {} /* terminator */
83 };
84
85 @@ -5333,6 +5346,10 @@
86 spec->dmux_nids = stac927x_dmux_nids;
87 spec->num_dmuxes = ARRAY_SIZE(stac927x_dmux_nids);
88 break;
89 + case STAC_927X_VOLKNOB:
90 + spec->num_dmics = 0;
91 + spec->init = stac927x_volknob_core_init;
92 + break;
93 default:
94 spec->num_dmics = 0;
95 spec->init = stac927x_core_init;