[alsa-devel] [PATCH] enable concurrent digital outputs for ALC1200
Takashi Iwai
tiwai at suse.de
Fri Feb 6 09:01:54 CET 2009
At Fri, 6 Feb 2009 15:02:27 +0800,
Wu Fengguang wrote:
>
> 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 at gmx.net>
> Signed-off-by: Wu Fengguang <fengguang.wu at intel.com>
Applied now. Thanks.
(We need a bit more (clean-up) work on these issues...)
Takashi
> ---
> sound/pci/hda/hda_local.h | 1 +
> sound/pci/hda/patch_realtek.c | 8 ++++++++
> 2 files changed, 9 insertions(+)
>
> --- sound-2.6.orig/sound/pci/hda/hda_local.h
> +++ sound-2.6/sound/pci/hda/hda_local.h
> @@ -229,6 +229,7 @@ struct hda_multi_out {
> hda_nid_t hp_nid; /* optional DAC for HP, 0 when not exists */
> hda_nid_t extra_out_nid[3]; /* optional DACs, 0 when not exists */
> hda_nid_t dig_out_nid; /* digital out audio widget */
> + hda_nid_t *slave_dig_outs;
> int max_channels; /* currently supported analog channels */
> int dig_out_used; /* current usage of digital out (HDA_DIG_XXX) */
> int no_share_stream; /* don't share a stream with multiple pins */
> --- sound-2.6.orig/sound/pci/hda/patch_realtek.c
> +++ sound-2.6/sound/pci/hda/patch_realtek.c
> @@ -349,6 +349,7 @@ struct alc_config_preset {
> hda_nid_t *dac_nids;
> hda_nid_t dig_out_nid; /* optional */
> hda_nid_t hp_nid; /* optional */
> + hda_nid_t *slave_dig_outs;
> unsigned int num_adc_nids;
> hda_nid_t *adc_nids;
> hda_nid_t *capsrc_nids;
> @@ -824,6 +825,7 @@ static void setup_preset(struct alc_spec
> spec->multiout.num_dacs = preset->num_dacs;
> spec->multiout.dac_nids = preset->dac_nids;
> spec->multiout.dig_out_nid = preset->dig_out_nid;
> + spec->multiout.slave_dig_outs = preset->slave_dig_outs;
> spec->multiout.hp_nid = preset->hp_nid;
>
> spec->num_mux_defs = preset->num_mux_defs;
> @@ -3107,6 +3109,7 @@ static int alc_build_pcms(struct hda_cod
> /* SPDIF for stream index #1 */
> if (spec->multiout.dig_out_nid || spec->dig_in_nid) {
> codec->num_pcms = 2;
> + codec->slave_dig_outs = spec->multiout.slave_dig_outs;
> info = spec->pcm_rec + 1;
> info->name = spec->stream_name_digital;
> if (spec->dig_out_type)
> @@ -8603,6 +8606,10 @@ static struct snd_pci_quirk alc883_cfg_t
> {}
> };
>
> +static hda_nid_t alc1200_slave_dig_outs[] = {
> + ALC883_DIGOUT_NID, 0,
> +};
> +
> static struct alc_config_preset alc883_presets[] = {
> [ALC883_3ST_2ch_DIG] = {
> .mixers = { alc883_3ST_2ch_mixer },
> @@ -8943,6 +8950,7 @@ static struct alc_config_preset alc883_p
> .dac_nids = alc883_dac_nids,
> .dig_out_nid = ALC1200_DIGOUT_NID,
> .dig_in_nid = ALC883_DIGIN_NID,
> + .slave_dig_outs = alc1200_slave_dig_outs,
> .num_channel_mode = ARRAY_SIZE(alc883_sixstack_modes),
> .channel_mode = alc883_sixstack_modes,
> .input_mux = &alc883_capture_source,
>
More information about the Alsa-devel
mailing list