aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/patch_sigmatel.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2007-04-05 08:51:48 -0400
committerJaroslav Kysela <perex@suse.cz>2007-05-11 10:55:56 -0400
commit6b97eb45f2edca51250b6c1e3142801f069245fe (patch)
treebe20e5e69f05499091ee9d83005b2712babb5431 /sound/pci/hda/patch_sigmatel.c
parentf9ab2b1c3ab5345f9003bf7ebc1eaa0f9b8cf99e (diff)
[ALSA] hda-codec - Fix SPDIF output
Fix SPDIF output (at least on Realtek codecs). The DIGI_CONVERT verbs have to be reset before the PCM stream is set up. Otherwise the digital setup is screwed up. Also, check the AMP capability before setting AMP of the digital out widget. Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@suse.cz>
Diffstat (limited to 'sound/pci/hda/patch_sigmatel.c')
-rw-r--r--sound/pci/hda/patch_sigmatel.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c
index 6dd4822dbec0..612d355b9e01 100644
--- a/sound/pci/hda/patch_sigmatel.c
+++ b/sound/pci/hda/patch_sigmatel.c
@@ -814,6 +814,17 @@ static int stac92xx_dig_playback_pcm_close(struct hda_pcm_stream *hinfo,
814 return snd_hda_multi_out_dig_close(codec, &spec->multiout); 814 return snd_hda_multi_out_dig_close(codec, &spec->multiout);
815} 815}
816 816
817static int stac92xx_dig_playback_pcm_prepare(struct hda_pcm_stream *hinfo,
818 struct hda_codec *codec,
819 unsigned int stream_tag,
820 unsigned int format,
821 struct snd_pcm_substream *substream)
822{
823 struct sigmatel_spec *spec = codec->spec;
824 return snd_hda_multi_out_dig_prepare(codec, &spec->multiout,
825 stream_tag, format, substream);
826}
827
817 828
818/* 829/*
819 * Analog capture callbacks 830 * Analog capture callbacks
@@ -848,7 +859,8 @@ static struct hda_pcm_stream stac92xx_pcm_digital_playback = {
848 /* NID is set in stac92xx_build_pcms */ 859 /* NID is set in stac92xx_build_pcms */
849 .ops = { 860 .ops = {
850 .open = stac92xx_dig_playback_pcm_open, 861 .open = stac92xx_dig_playback_pcm_open,
851 .close = stac92xx_dig_playback_pcm_close 862 .close = stac92xx_dig_playback_pcm_close,
863 .prepare = stac92xx_dig_playback_pcm_prepare
852 }, 864 },
853}; 865};
854 866