aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/patch_realtek.c
diff options
context:
space:
mode:
authorWu Fengguang <fengguang.wu@intel.com>2009-02-06 02:02:27 -0500
committerTakashi Iwai <tiwai@suse.de>2009-02-06 02:45:25 -0500
commitb25c9da19889e33bb4ee2dff369fc46caa4543b0 (patch)
tree62239389b7267da86ca1a671410004cd17a37882 /sound/pci/hda/patch_realtek.c
parent939778aedd9386e13051a9e1d57c14cba2b6ae13 (diff)
ALSA: enable concurrent digital outputs for ALC1200
Add the SPDIF pin as slave digital out to enable concurrent HDMI/SPDIF outputs for ASUS M3A-H/HDMI with ALC1200 codec. Tested-by: Thomas Schneider <nailstudio@gmx.net> Signed-off-by: Wu Fengguang <fengguang.wu@intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/patch_realtek.c')
-rw-r--r--sound/pci/hda/patch_realtek.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index d2812ab729cc..5194a58fafaa 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -349,6 +349,7 @@ struct alc_config_preset {
349 hda_nid_t *dac_nids; 349 hda_nid_t *dac_nids;
350 hda_nid_t dig_out_nid; /* optional */ 350 hda_nid_t dig_out_nid; /* optional */
351 hda_nid_t hp_nid; /* optional */ 351 hda_nid_t hp_nid; /* optional */
352 hda_nid_t *slave_dig_outs;
352 unsigned int num_adc_nids; 353 unsigned int num_adc_nids;
353 hda_nid_t *adc_nids; 354 hda_nid_t *adc_nids;
354 hda_nid_t *capsrc_nids; 355 hda_nid_t *capsrc_nids;
@@ -824,6 +825,7 @@ static void setup_preset(struct alc_spec *spec,
824 spec->multiout.num_dacs = preset->num_dacs; 825 spec->multiout.num_dacs = preset->num_dacs;
825 spec->multiout.dac_nids = preset->dac_nids; 826 spec->multiout.dac_nids = preset->dac_nids;
826 spec->multiout.dig_out_nid = preset->dig_out_nid; 827 spec->multiout.dig_out_nid = preset->dig_out_nid;
828 spec->multiout.slave_dig_outs = preset->slave_dig_outs;
827 spec->multiout.hp_nid = preset->hp_nid; 829 spec->multiout.hp_nid = preset->hp_nid;
828 830
829 spec->num_mux_defs = preset->num_mux_defs; 831 spec->num_mux_defs = preset->num_mux_defs;
@@ -3107,6 +3109,7 @@ static int alc_build_pcms(struct hda_codec *codec)
3107 /* SPDIF for stream index #1 */ 3109 /* SPDIF for stream index #1 */
3108 if (spec->multiout.dig_out_nid || spec->dig_in_nid) { 3110 if (spec->multiout.dig_out_nid || spec->dig_in_nid) {
3109 codec->num_pcms = 2; 3111 codec->num_pcms = 2;
3112 codec->slave_dig_outs = spec->multiout.slave_dig_outs;
3110 info = spec->pcm_rec + 1; 3113 info = spec->pcm_rec + 1;
3111 info->name = spec->stream_name_digital; 3114 info->name = spec->stream_name_digital;
3112 if (spec->dig_out_type) 3115 if (spec->dig_out_type)
@@ -8603,6 +8606,10 @@ static struct snd_pci_quirk alc883_cfg_tbl[] = {
8603 {} 8606 {}
8604}; 8607};
8605 8608
8609static hda_nid_t alc1200_slave_dig_outs[] = {
8610 ALC883_DIGOUT_NID, 0,
8611};
8612
8606static struct alc_config_preset alc883_presets[] = { 8613static struct alc_config_preset alc883_presets[] = {
8607 [ALC883_3ST_2ch_DIG] = { 8614 [ALC883_3ST_2ch_DIG] = {
8608 .mixers = { alc883_3ST_2ch_mixer }, 8615 .mixers = { alc883_3ST_2ch_mixer },
@@ -8943,6 +8950,7 @@ static struct alc_config_preset alc883_presets[] = {
8943 .dac_nids = alc883_dac_nids, 8950 .dac_nids = alc883_dac_nids,
8944 .dig_out_nid = ALC1200_DIGOUT_NID, 8951 .dig_out_nid = ALC1200_DIGOUT_NID,
8945 .dig_in_nid = ALC883_DIGIN_NID, 8952 .dig_in_nid = ALC883_DIGIN_NID,
8953 .slave_dig_outs = alc1200_slave_dig_outs,
8946 .num_channel_mode = ARRAY_SIZE(alc883_sixstack_modes), 8954 .num_channel_mode = ARRAY_SIZE(alc883_sixstack_modes),
8947 .channel_mode = alc883_sixstack_modes, 8955 .channel_mode = alc883_sixstack_modes,
8948 .input_mux = &alc883_capture_source, 8956 .input_mux = &alc883_capture_source,