diff options
author | Takashi Iwai <tiwai@suse.de> | 2007-04-05 08:51:48 -0400 |
---|---|---|
committer | Jaroslav Kysela <perex@suse.cz> | 2007-05-11 10:55:56 -0400 |
commit | 6b97eb45f2edca51250b6c1e3142801f069245fe (patch) | |
tree | be20e5e69f05499091ee9d83005b2712babb5431 /sound/pci/hda/patch_realtek.c | |
parent | f9ab2b1c3ab5345f9003bf7ebc1eaa0f9b8cf99e (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.c | 14 |
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 | ||
1919 | static 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 | |||
1919 | static int alc880_dig_playback_pcm_close(struct hda_pcm_stream *hinfo, | 1930 | static 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 | ||