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
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.
12 This patch adds a new quirk to set the value 0x7f to the widget 0x24
15 Reference: Novell bnc#546006
16 http://bugzilla.novell.com/show_bug.cgi?id=546006
18 Signed-off-by: Takashi Iwai <tiwai@suse.de>
21 Documentation/sound/alsa/ALSA-Configuration.txt | 1 +
22 sound/pci/hda/patch_sigmatel.c | 17 +++++++++++++++++
23 2 files changed, 18 insertions(+)
25 --- a/Documentation/sound/alsa/ALSA-Configuration.txt
26 +++ b/Documentation/sound/alsa/ALSA-Configuration.txt
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
35 --- a/sound/pci/hda/patch_sigmatel.c
36 +++ b/sound/pci/hda/patch_sigmatel.c
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},
57 static struct hda_verb stac9205_core_init[] = {
58 /* set master volume and direct control */
59 { 0x24, AC_VERB_SET_VOLUME_KNOB_CONTROL, 0xff},
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,
67 static const char *stac927x_models[STAC_927X_MODELS] = {
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",
75 static struct snd_pci_quirk stac927x_cfg_tbl[] = {
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),
85 @@ -5333,6 +5346,10 @@
86 spec->dmux_nids = stac927x_dmux_nids;
87 spec->num_dmuxes = ARRAY_SIZE(stac927x_dmux_nids);
89 + case STAC_927X_VOLKNOB:
90 + spec->num_dmics = 0;
91 + spec->init = stac927x_volknob_core_init;
95 spec->init = stac927x_core_init;