diff options
author | Matthew Ranostay <mranostay@embeddedalley.com> | 2009-01-20 16:50:25 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-01-20 19:10:37 -0500 |
commit | 65557f350749e11d51d15dee759d6e04f290e256 (patch) | |
tree | dd36b44a03a8ea8947379be9ad93b344429c4383 /sound | |
parent | 989738c4f82126207b9e04c9395b78e544f3d33c (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.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index a4d4afe6b4f..3b97d1eff92 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 | ||
843 | static struct hda_verb stac92hd83xxx_core_init[] = { | 843 | static 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 = { | |||
4754 | static int patch_stac92hd83xxx(struct hda_codec *codec) | 4750 | static 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; |