aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorDavid Henningsson <david.henningsson@canonical.com>2010-11-09 08:35:30 -0500
committerTakashi Iwai <tiwai@suse.de>2010-11-22 01:45:08 -0500
commit03b7a1ab557efe34e8f79b78660e514bd7374248 (patch)
treed70a4313218a140bbb719c8ce3773b1088a6b2a0 /sound
parent5dbea6b1f2113f764999b39fd3d79b1354c193d9 (diff)
ALSA: HDA: Create mixers on ALC887
BugLink: http://launchpad.net/bugs/669092 ALC887 does not have any volume control ability on the mixer NIDs, so put the volume controls on the dac NIDs instead. Without this patch, ALC887 users cannot use alsamixer at all. Cc: stable@kernel.org Signed-off-by: David Henningsson <david.henningsson@canonical.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/patch_realtek.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 5f00589cb791..74029b5e7a62 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -10816,6 +10816,9 @@ static int alc_auto_add_mic_boost(struct hda_codec *codec)
10816 return 0; 10816 return 0;
10817} 10817}
10818 10818
10819static int alc861vd_auto_create_multi_out_ctls(struct alc_spec *spec,
10820 const struct auto_pin_cfg *cfg);
10821
10819/* almost identical with ALC880 parser... */ 10822/* almost identical with ALC880 parser... */
10820static int alc882_parse_auto_config(struct hda_codec *codec) 10823static int alc882_parse_auto_config(struct hda_codec *codec)
10821{ 10824{
@@ -10833,7 +10836,10 @@ static int alc882_parse_auto_config(struct hda_codec *codec)
10833 err = alc880_auto_fill_dac_nids(spec, &spec->autocfg); 10836 err = alc880_auto_fill_dac_nids(spec, &spec->autocfg);
10834 if (err < 0) 10837 if (err < 0)
10835 return err; 10838 return err;
10836 err = alc880_auto_create_multi_out_ctls(spec, &spec->autocfg); 10839 if (codec->vendor_id == 0x10ec0887)
10840 err = alc861vd_auto_create_multi_out_ctls(spec, &spec->autocfg);
10841 else
10842 err = alc880_auto_create_multi_out_ctls(spec, &spec->autocfg);
10837 if (err < 0) 10843 if (err < 0)
10838 return err; 10844 return err;
10839 err = alc880_auto_create_extra_out(spec, spec->autocfg.hp_pins[0], 10845 err = alc880_auto_create_extra_out(spec, spec->autocfg.hp_pins[0],
@@ -16963,7 +16969,7 @@ static void alc861vd_auto_init_analog_input(struct hda_codec *codec)
16963#define alc861vd_idx_to_mixer_switch(nid) ((nid) + 0x0c) 16969#define alc861vd_idx_to_mixer_switch(nid) ((nid) + 0x0c)
16964 16970
16965/* add playback controls from the parsed DAC table */ 16971/* add playback controls from the parsed DAC table */
16966/* Based on ALC880 version. But ALC861VD has separate, 16972/* Based on ALC880 version. But ALC861VD and ALC887 have separate,
16967 * different NIDs for mute/unmute switch and volume control */ 16973 * different NIDs for mute/unmute switch and volume control */
16968static int alc861vd_auto_create_multi_out_ctls(struct alc_spec *spec, 16974static int alc861vd_auto_create_multi_out_ctls(struct alc_spec *spec,
16969 const struct auto_pin_cfg *cfg) 16975 const struct auto_pin_cfg *cfg)