aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorMatthew Ranostay <mranostay@embeddedalley.com>2009-01-20 16:50:25 -0500
committerTakashi Iwai <tiwai@suse.de>2009-01-20 19:10:37 -0500
commit65557f350749e11d51d15dee759d6e04f290e256 (patch)
treedd36b44a03a8ea8947379be9ad93b344429c4383 /sound
parent989738c4f82126207b9e04c9395b78e544f3d33c (diff)
ALSA: hda: 83xxx port 0xe DAC selection
On the 92hd8xxx codecs port 0xe needs the connection selected to be the last DAC in the list. Signed-off-by: Matthew Ranostay <mranostay@embeddedalley.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/patch_sigmatel.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index a4d4afe6b4fc..3b97d1eff92a 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -841,10 +841,6 @@ static struct hda_verb stac92hd73xx_10ch_core_init[] = {
841}; 841};
842 842
843static struct hda_verb stac92hd83xxx_core_init[] = { 843static struct hda_verb stac92hd83xxx_core_init[] = {
844 /* start of config #1 */
845 { 0xe, AC_VERB_SET_CONNECT_SEL, 0x3},
846
847 /* start of config #2 */
848 { 0xa, AC_VERB_SET_CONNECT_SEL, 0x0}, 844 { 0xa, AC_VERB_SET_CONNECT_SEL, 0x0},
849 { 0xb, AC_VERB_SET_CONNECT_SEL, 0x0}, 845 { 0xb, AC_VERB_SET_CONNECT_SEL, 0x0},
850 { 0xd, AC_VERB_SET_CONNECT_SEL, 0x1}, 846 { 0xd, AC_VERB_SET_CONNECT_SEL, 0x1},
@@ -4754,7 +4750,9 @@ static struct hda_input_mux stac92hd83xxx_dmux = {
4754static int patch_stac92hd83xxx(struct hda_codec *codec) 4750static int patch_stac92hd83xxx(struct hda_codec *codec)
4755{ 4751{
4756 struct sigmatel_spec *spec; 4752 struct sigmatel_spec *spec;
4753 hda_nid_t conn[STAC92HD83_DAC_COUNT + 1];
4757 int err; 4754 int err;
4755 int num_dacs;
4758 4756
4759 spec = kzalloc(sizeof(*spec), GFP_KERNEL); 4757 spec = kzalloc(sizeof(*spec), GFP_KERNEL);
4760 if (spec == NULL) 4758 if (spec == NULL)
@@ -4773,13 +4771,21 @@ static int patch_stac92hd83xxx(struct hda_codec *codec)
4773 spec->num_pwrs = ARRAY_SIZE(stac92hd83xxx_pwr_nids); 4771 spec->num_pwrs = ARRAY_SIZE(stac92hd83xxx_pwr_nids);
4774 spec->multiout.dac_nids = spec->dac_nids; 4772 spec->multiout.dac_nids = spec->dac_nids;
4775 4773
4774
4775 /* set port 0xe to select the last DAC
4776 */
4777 num_dacs = snd_hda_get_connections(codec, 0x0e,
4778 conn, STAC92HD83_DAC_COUNT + 1) - 1;
4779
4780 snd_hda_codec_write_cache(codec, 0xe, 0,
4781 AC_VERB_SET_CONNECT_SEL, num_dacs);
4782
4776 spec->init = stac92hd83xxx_core_init; 4783 spec->init = stac92hd83xxx_core_init;
4777 switch (codec->vendor_id) { 4784 switch (codec->vendor_id) {
4778 case 0x111d7605: 4785 case 0x111d7605:
4779 break; 4786 break;
4780 default: 4787 default:
4781 spec->num_pwrs--; 4788 spec->num_pwrs--;
4782 spec->init++; /* switch to config #2 */
4783 } 4789 }
4784 4790
4785 spec->mixer = stac92hd83xxx_mixer; 4791 spec->mixer = stac92hd83xxx_mixer;