[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>
This commit is contained in:
committed by
Jaroslav Kysela
parent
f9ab2b1c3a
commit
6b97eb45f2
@ -192,6 +192,17 @@ static int ad198x_dig_playback_pcm_close(struct hda_pcm_stream *hinfo,
|
||||
return snd_hda_multi_out_dig_close(codec, &spec->multiout);
|
||||
}
|
||||
|
||||
static int ad198x_dig_playback_pcm_prepare(struct hda_pcm_stream *hinfo,
|
||||
struct hda_codec *codec,
|
||||
unsigned int stream_tag,
|
||||
unsigned int format,
|
||||
struct snd_pcm_substream *substream)
|
||||
{
|
||||
struct ad198x_spec *spec = codec->spec;
|
||||
return snd_hda_multi_out_dig_prepare(codec, &spec->multiout, stream_tag,
|
||||
format, substream);
|
||||
}
|
||||
|
||||
/*
|
||||
* Analog capture
|
||||
*/
|
||||
@ -250,7 +261,8 @@ static struct hda_pcm_stream ad198x_pcm_digital_playback = {
|
||||
.nid = 0, /* fill later */
|
||||
.ops = {
|
||||
.open = ad198x_dig_playback_pcm_open,
|
||||
.close = ad198x_dig_playback_pcm_close
|
||||
.close = ad198x_dig_playback_pcm_close,
|
||||
.prepare = ad198x_dig_playback_pcm_prepare
|
||||
},
|
||||
};
|
||||
|
||||
|
Reference in New Issue
Block a user