diff options
| -rw-r--r-- | sound/pci/hda/hda_codec.c | 10 | ||||
| -rw-r--r-- | sound/pci/hda/hda_local.h | 2 | ||||
| -rw-r--r-- | sound/pci/hda/patch_analog.c | 11 | ||||
| -rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 11 |
4 files changed, 32 insertions, 2 deletions
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c index 0b708134d12f..d03f99298be9 100644 --- a/sound/pci/hda/hda_codec.c +++ b/sound/pci/hda/hda_codec.c | |||
| @@ -3088,6 +3088,16 @@ int snd_hda_multi_out_dig_prepare(struct hda_codec *codec, | |||
| 3088 | } | 3088 | } |
| 3089 | EXPORT_SYMBOL_HDA(snd_hda_multi_out_dig_prepare); | 3089 | EXPORT_SYMBOL_HDA(snd_hda_multi_out_dig_prepare); |
| 3090 | 3090 | ||
| 3091 | int snd_hda_multi_out_dig_cleanup(struct hda_codec *codec, | ||
| 3092 | struct hda_multi_out *mout) | ||
| 3093 | { | ||
| 3094 | mutex_lock(&codec->spdif_mutex); | ||
| 3095 | cleanup_dig_out_stream(codec, mout->dig_out_nid); | ||
| 3096 | mutex_unlock(&codec->spdif_mutex); | ||
| 3097 | return 0; | ||
| 3098 | } | ||
| 3099 | EXPORT_SYMBOL_HDA(snd_hda_multi_out_dig_cleanup); | ||
| 3100 | |||
| 3091 | /* | 3101 | /* |
| 3092 | * release the digital out | 3102 | * release the digital out |
| 3093 | */ | 3103 | */ |
diff --git a/sound/pci/hda/hda_local.h b/sound/pci/hda/hda_local.h index 1dd8716c387f..44f189cb97ae 100644 --- a/sound/pci/hda/hda_local.h +++ b/sound/pci/hda/hda_local.h | |||
| @@ -251,6 +251,8 @@ int snd_hda_multi_out_dig_prepare(struct hda_codec *codec, | |||
| 251 | unsigned int stream_tag, | 251 | unsigned int stream_tag, |
| 252 | unsigned int format, | 252 | unsigned int format, |
| 253 | struct snd_pcm_substream *substream); | 253 | struct snd_pcm_substream *substream); |
| 254 | int snd_hda_multi_out_dig_cleanup(struct hda_codec *codec, | ||
| 255 | struct hda_multi_out *mout); | ||
| 254 | int snd_hda_multi_out_analog_open(struct hda_codec *codec, | 256 | int snd_hda_multi_out_analog_open(struct hda_codec *codec, |
| 255 | struct hda_multi_out *mout, | 257 | struct hda_multi_out *mout, |
| 256 | struct snd_pcm_substream *substream, | 258 | struct snd_pcm_substream *substream, |
diff --git a/sound/pci/hda/patch_analog.c b/sound/pci/hda/patch_analog.c index 7006d62ca6c2..e48612323aa0 100644 --- a/sound/pci/hda/patch_analog.c +++ b/sound/pci/hda/patch_analog.c | |||
| @@ -275,6 +275,14 @@ static int ad198x_dig_playback_pcm_prepare(struct hda_pcm_stream *hinfo, | |||
| 275 | format, substream); | 275 | format, substream); |
| 276 | } | 276 | } |
| 277 | 277 | ||
| 278 | static int ad198x_dig_playback_pcm_cleanup(struct hda_pcm_stream *hinfo, | ||
| 279 | struct hda_codec *codec, | ||
| 280 | struct snd_pcm_substream *substream) | ||
| 281 | { | ||
| 282 | struct ad198x_spec *spec = codec->spec; | ||
| 283 | return snd_hda_multi_out_dig_cleanup(codec, &spec->multiout); | ||
| 284 | } | ||
| 285 | |||
| 278 | /* | 286 | /* |
| 279 | * Analog capture | 287 | * Analog capture |
| 280 | */ | 288 | */ |
| @@ -333,7 +341,8 @@ static struct hda_pcm_stream ad198x_pcm_digital_playback = { | |||
| 333 | .ops = { | 341 | .ops = { |
| 334 | .open = ad198x_dig_playback_pcm_open, | 342 | .open = ad198x_dig_playback_pcm_open, |
| 335 | .close = ad198x_dig_playback_pcm_close, | 343 | .close = ad198x_dig_playback_pcm_close, |
| 336 | .prepare = ad198x_dig_playback_pcm_prepare | 344 | .prepare = ad198x_dig_playback_pcm_prepare, |
| 345 | .cleanup = ad198x_dig_playback_pcm_cleanup | ||
| 337 | }, | 346 | }, |
| 338 | }; | 347 | }; |
| 339 | 348 | ||
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index aa814a3c2d8c..8027edf3c8f2 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
| @@ -2442,6 +2442,14 @@ static int stac92xx_dig_playback_pcm_prepare(struct hda_pcm_stream *hinfo, | |||
| 2442 | stream_tag, format, substream); | 2442 | stream_tag, format, substream); |
| 2443 | } | 2443 | } |
| 2444 | 2444 | ||
| 2445 | static int stac92xx_dig_playback_pcm_cleanup(struct hda_pcm_stream *hinfo, | ||
| 2446 | struct hda_codec *codec, | ||
| 2447 | struct snd_pcm_substream *substream) | ||
| 2448 | { | ||
| 2449 | struct sigmatel_spec *spec = codec->spec; | ||
| 2450 | return snd_hda_multi_out_dig_cleanup(codec, &spec->multiout); | ||
| 2451 | } | ||
| 2452 | |||
| 2445 | 2453 | ||
| 2446 | /* | 2454 | /* |
| 2447 | * Analog capture callbacks | 2455 | * Analog capture callbacks |
| @@ -2486,7 +2494,8 @@ static struct hda_pcm_stream stac92xx_pcm_digital_playback = { | |||
| 2486 | .ops = { | 2494 | .ops = { |
| 2487 | .open = stac92xx_dig_playback_pcm_open, | 2495 | .open = stac92xx_dig_playback_pcm_open, |
| 2488 | .close = stac92xx_dig_playback_pcm_close, | 2496 | .close = stac92xx_dig_playback_pcm_close, |
| 2489 | .prepare = stac92xx_dig_playback_pcm_prepare | 2497 | .prepare = stac92xx_dig_playback_pcm_prepare, |
| 2498 | .cleanup = stac92xx_dig_playback_pcm_cleanup | ||
| 2490 | }, | 2499 | }, |
| 2491 | }; | 2500 | }; |
| 2492 | 2501 | ||
