diff options
Diffstat (limited to 'sound/pci/hda/hda_codec.c')
-rw-r--r-- | sound/pci/hda/hda_codec.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 59dcd97bf833..1fa93bd25a7b 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, | |||
1916 | int snd_hda_multi_out_dig_open(struct hda_codec *codec, struct hda_multi_out *mout) | 1916 | int 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; |