aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2012-11-07 04:37:48 -0500
committerTakashi Iwai <tiwai@suse.de>2012-11-07 08:42:04 -0500
commitef4da45828603df57e5e21b8aa21a66ce309f79b (patch)
treed8a20eb5682b4979bfff841c0ba709218d2a8287 /sound
parent5b3761954dac2d1393beef8210eb8cee81d16b8d (diff)
ALSA: hda - Fix invalid connections in VT1802 codec
VT1802 codec provides the invalid connection lists of NID 0x24 and 0x33 containing the routes to a non-exist widget 0x3e. This confuses the auto-parser. Fix it up in the driver by overriding these connections. Reported-by: Massimo Del Fedele <max@veneto.com> Cc: <stable@vger.kernel.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/patch_via.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_via.c b/sound/pci/hda/patch_via.c
index bf57fa6a4ad..c2eef5cb78d 100644
--- a/sound/pci/hda/patch_via.c
+++ b/sound/pci/hda/patch_via.c
@@ -3646,6 +3646,18 @@ static const struct snd_pci_quirk vt2002p_fixups[] = {
3646 {} 3646 {}
3647}; 3647};
3648 3648
3649/* NIDs 0x24 and 0x33 on VT1802 have connections to non-existing NID 0x3e
3650 * Replace this with mixer NID 0x1c
3651 */
3652static void fix_vt1802_connections(struct hda_codec *codec)
3653{
3654 static hda_nid_t conn_24[] = { 0x14, 0x1c };
3655 static hda_nid_t conn_33[] = { 0x1c };
3656
3657 snd_hda_override_conn_list(codec, 0x24, ARRAY_SIZE(conn_24), conn_24);
3658 snd_hda_override_conn_list(codec, 0x33, ARRAY_SIZE(conn_33), conn_33);
3659}
3660
3649/* patch for vt2002P */ 3661/* patch for vt2002P */
3650static int patch_vt2002P(struct hda_codec *codec) 3662static int patch_vt2002P(struct hda_codec *codec)
3651{ 3663{
@@ -3660,6 +3672,8 @@ static int patch_vt2002P(struct hda_codec *codec)
3660 spec->aa_mix_nid = 0x21; 3672 spec->aa_mix_nid = 0x21;
3661 override_mic_boost(codec, 0x2b, 0, 3, 40); 3673 override_mic_boost(codec, 0x2b, 0, 3, 40);
3662 override_mic_boost(codec, 0x29, 0, 3, 40); 3674 override_mic_boost(codec, 0x29, 0, 3, 40);
3675 if (spec->codec_type == VT1802)
3676 fix_vt1802_connections(codec);
3663 add_secret_dac_path(codec); 3677 add_secret_dac_path(codec);
3664 3678
3665 snd_hda_pick_fixup(codec, NULL, vt2002p_fixups, via_fixups); 3679 snd_hda_pick_fixup(codec, NULL, vt2002p_fixups, via_fixups);