aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sound/pci/ctxfi/ctatc.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/sound/pci/ctxfi/ctatc.c b/sound/pci/ctxfi/ctatc.c
index 1a4bb357eae..e14ed714721 100644
--- a/sound/pci/ctxfi/ctatc.c
+++ b/sound/pci/ctxfi/ctatc.c
@@ -254,6 +254,9 @@ static int atc_pcm_playback_prepare(struct ct_atc *atc, struct ct_atc_pcm *apcm)
return 0;
}
+ /* first release old resources */
+ atc->pcm_release_resources(atc, apcm);
+
/* Get SRC resource */
desc.multi = apcm->substream->runtime->channels;
desc.msr = atc->msr;
@@ -496,6 +499,9 @@ atc_pcm_capture_get_resources(struct ct_atc *atc, struct ct_atc_pcm *apcm)
int n_srcimp = 0, n_amixer = 0, n_srcc = 0, n_sum = 0;
struct src_node_conf_t src_node_conf[2] = {{0} };
+ /* first release old resources */
+ atc->pcm_release_resources(atc, apcm);
+
/* The numbers of converting SRCs and SRCIMPs should be determined
* by pitch value. */
@@ -767,6 +773,9 @@ static int spdif_passthru_playback_get_resources(struct ct_atc *atc,
int n_amixer = apcm->substream->runtime->channels, i = 0;
unsigned int pitch = 0, rsr = atc->pll_rate;
+ /* first release old resources */
+ atc->pcm_release_resources(atc, apcm);
+
/* Get SRC resource */
desc.multi = apcm->substream->runtime->channels;
desc.msr = 1;