aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/hda/patch_realtek.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_realtek.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_realtek.c')
-rw-r--r--sound/pci/hda/patch_realtek.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c
index 4243c6b491fc..d3f7a3dab1c4 100644
--- a/sound/pci/hda/patch_realtek.c
+++ b/sound/pci/hda/patch_realtek.c
@@ -1916,6 +1916,17 @@ static int alc880_dig_playback_pcm_open(struct hda_pcm_stream *hinfo,
1916 return snd_hda_multi_out_dig_open(codec, &spec->multiout); 1916 return snd_hda_multi_out_dig_open(codec, &spec->multiout);
1917} 1917}
1918 1918
1919static int alc880_dig_playback_pcm_prepare(struct hda_pcm_stream *hinfo,
1920 struct hda_codec *codec,
1921 unsigned int stream_tag,
1922 unsigned int format,
1923 struct snd_pcm_substream *substream)
1924{
1925 struct alc_spec *spec = codec->spec;
1926 return snd_hda_multi_out_dig_prepare(codec, &spec->multiout,
1927 stream_tag, format, substream);
1928}
1929
1919static int alc880_dig_playback_pcm_close(struct hda_pcm_stream *hinfo, 1930static int alc880_dig_playback_pcm_close(struct hda_pcm_stream *hinfo,
1920 struct hda_codec *codec, 1931 struct hda_codec *codec,
1921 struct snd_pcm_substream *substream) 1932 struct snd_pcm_substream *substream)
@@ -1984,7 +1995,8 @@ static struct hda_pcm_stream alc880_pcm_digital_playback = {
1984 /* NID is set in alc_build_pcms */ 1995 /* NID is set in alc_build_pcms */
1985 .ops = { 1996 .ops = {
1986 .open = alc880_dig_playback_pcm_open, 1997 .open = alc880_dig_playback_pcm_open,
1987 .close = alc880_dig_playback_pcm_close 1998 .close = alc880_dig_playback_pcm_close,
1999 .prepare = alc880_dig_playback_pcm_prepare
1988 }, 2000 },
1989}; 2001};
1990 2002