aboutsummaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
Diffstat (limited to 'sound')
-rw-r--r--sound/pci/hda/hda_codec.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index 59dcd97bf83..1fa93bd25a7 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -1916,10 +1916,9 @@ static void setup_dig_out_stream(struct hda_codec *codec, hda_nid_t nid,
1916int snd_hda_multi_out_dig_open(struct hda_codec *codec, struct hda_multi_out *mout) 1916int snd_hda_multi_out_dig_open(struct hda_codec *codec, struct hda_multi_out *mout)
1917{ 1917{
1918 mutex_lock(&codec->spdif_mutex); 1918 mutex_lock(&codec->spdif_mutex);
1919 if (mout->dig_out_used) { 1919 if (mout->dig_out_used == HDA_DIG_ANALOG_DUP)
1920 mutex_unlock(&codec->spdif_mutex); 1920 /* already opened as analog dup; reset it once */
1921 return -EBUSY; /* already being used */ 1921 snd_hda_codec_setup_stream(codec, mout->dig_out_nid, 0, 0, 0);
1922 }
1923 mout->dig_out_used = HDA_DIG_EXCLUSIVE; 1922 mout->dig_out_used = HDA_DIG_EXCLUSIVE;
1924 mutex_unlock(&codec->spdif_mutex); 1923 mutex_unlock(&codec->spdif_mutex);
1925 return 0; 1924 return 0;