ALSA: ALSA: ctxfi - Release PCM resources at each prepare call
The prepare callback can be called multiple times, thus it needs to
release and acquire the resource again by itself at the second or later
call.
Simply add pcm_release_resources() at the beginning of each prepare
callback in ctatc.c.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
diff --git a/sound/pci/ctxfi/ctatc.c b/sound/pci/ctxfi/ctatc.c
index 1a4bb35..e14ed71 100644
--- a/sound/pci/ctxfi/ctatc.c
+++ b/sound/pci/ctxfi/ctatc.c
@@ -254,6 +254,9 @@
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 @@
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 @@
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;