diff options
author | Wu Fengguang <fengguang.wu@intel.com> | 2009-02-06 02:02:27 -0500 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2009-02-06 02:45:25 -0500 |
commit | b25c9da19889e33bb4ee2dff369fc46caa4543b0 (patch) | |
tree | 62239389b7267da86ca1a671410004cd17a37882 /sound/pci/hda/patch_realtek.c | |
parent | 939778aedd9386e13051a9e1d57c14cba2b6ae13 (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.c | 8 |
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 | ||
8609 | static hda_nid_t alc1200_slave_dig_outs[] = { | ||
8610 | ALC883_DIGOUT_NID, 0, | ||
8611 | }; | ||
8612 | |||
8606 | static struct alc_config_preset alc883_presets[] = { | 8613 | static 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, |