aboutsummaryrefslogtreecommitdiffstats
path: root/sound/pci/ctxfi/ctpcm.c
diff options
context:
space:
mode:
Diffstat (limited to 'sound/pci/ctxfi/ctpcm.c')
-rw-r--r--sound/pci/ctxfi/ctpcm.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/sound/pci/ctxfi/ctpcm.c b/sound/pci/ctxfi/ctpcm.c
index 870fa170f046..9e5c0c4da726 100644
--- a/sound/pci/ctxfi/ctpcm.c
+++ b/sound/pci/ctxfi/ctpcm.c
@@ -176,12 +176,26 @@ static int ct_pcm_playback_close(struct snd_pcm_substream *substream)
176static int ct_pcm_hw_params(struct snd_pcm_substream *substream, 176static int ct_pcm_hw_params(struct snd_pcm_substream *substream,
177 struct snd_pcm_hw_params *hw_params) 177 struct snd_pcm_hw_params *hw_params)
178{ 178{
179 return snd_pcm_lib_malloc_pages(substream, 179 struct ct_atc *atc = snd_pcm_substream_chip(substream);
180 struct ct_atc_pcm *apcm = substream->runtime->private_data;
181 int err;
182
183 err = snd_pcm_lib_malloc_pages(substream,
180 params_buffer_bytes(hw_params)); 184 params_buffer_bytes(hw_params));
185 if (err < 0)
186 return err;
187 /* clear previous resources */
188 atc->pcm_release_resources(atc, apcm);
189 return err;
181} 190}
182 191
183static int ct_pcm_hw_free(struct snd_pcm_substream *substream) 192static int ct_pcm_hw_free(struct snd_pcm_substream *substream)
184{ 193{
194 struct ct_atc *atc = snd_pcm_substream_chip(substream);
195 struct ct_atc_pcm *apcm = substream->runtime->private_data;
196
197 /* clear previous resources */
198 atc->pcm_release_resources(atc, apcm);
185 /* Free snd-allocated pages */ 199 /* Free snd-allocated pages */
186 return snd_pcm_lib_free_pages(substream); 200 return snd_pcm_lib_free_pages(substream);
187} 201}