]>
Commit | Line | Data |
---|---|---|
82094b55 AF |
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; |