|
@@ -504,6 +504,10 @@ static int aaci_pcm_hw_params(struct snd_pcm_substream *substream,
|
|
int err;
|
|
int err;
|
|
|
|
|
|
aaci_pcm_hw_free(substream);
|
|
aaci_pcm_hw_free(substream);
|
|
|
|
+ if (aacirun->pcm_open) {
|
|
|
|
+ snd_ac97_pcm_close(aacirun->pcm);
|
|
|
|
+ aacirun->pcm_open = 0;
|
|
|
|
+ }
|
|
|
|
|
|
err = devdma_hw_alloc(NULL, substream,
|
|
err = devdma_hw_alloc(NULL, substream,
|
|
params_buffer_bytes(params));
|
|
params_buffer_bytes(params));
|
|
@@ -517,7 +521,7 @@ static int aaci_pcm_hw_params(struct snd_pcm_substream *substream,
|
|
else
|
|
else
|
|
err = snd_ac97_pcm_open(aacirun->pcm, params_rate(params),
|
|
err = snd_ac97_pcm_open(aacirun->pcm, params_rate(params),
|
|
params_channels(params),
|
|
params_channels(params),
|
|
- aacirun->pcm->r[1].slots);
|
|
|
|
|
|
+ aacirun->pcm->r[0].slots);
|
|
|
|
|
|
if (err)
|
|
if (err)
|
|
goto out;
|
|
goto out;
|