ALSA: hda - Fix issue that front can't output sound for VT1718S
authorLydia Wang <lydiawang@viatech.com.cn>
Mon, 4 Jul 2011 08:54:15 +0000 (16:54 +0800)
committerTakashi Iwai <tiwai@suse.de>
Mon, 4 Jul 2011 12:33:23 +0000 (14:33 +0200)
For VT1718S, Mixer 9 doesn't expose the connection to DAC 0. So when
building up a 'PCM Playback' amplifier control, it will fail since
getting DAC 0 index of Mixer 9 returned -1. So I added a dac_mixer_idx
to indicated the actual index of DAC 0 to Mixer 9. Following is the
patch and next mail is another.

Signed-off-by: Lydia Wang <lydiawang@viatech.com.cn>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/hda/patch_via.c

index bbbc4f4..89dd29d 100644 (file)
@@ -130,6 +130,7 @@ struct via_spec {
        hda_nid_t hp_dac_nid;
        bool hp_indep_shared;   /* indep HP-DAC is shared with side ch */
        int num_active_streams;
+       int dac_mixer_idx;
 
        struct nid_path out_path[4];
        struct nid_path hp_path;
@@ -1810,6 +1811,8 @@ static int via_auto_create_multi_out_ctls(struct hda_codec *codec)
 
        idx = get_connection_index(codec, spec->aa_mix_nid,
                                   spec->multiout.dac_nids[0]);
+       if (idx < 0 && spec->dac_mixer_idx)
+               idx = spec->dac_mixer_idx;
        if (idx >= 0) {
                /* add control to mixer */
                err = via_add_control(spec, VIA_CTL_WIDGET_VOL,
@@ -2959,6 +2962,7 @@ static int patch_vt1718S(struct hda_codec *codec)
        spec->aa_mix_nid = 0x21;
        override_mic_boost(codec, 0x2b, 0, 3, 40);
        override_mic_boost(codec, 0x29, 0, 3, 40);
+       spec->dac_mixer_idx = 5;
 
        /* automatic parse from the BIOS config */
        err = via_parse_auto_config(codec);