diff options
Diffstat (limited to 'sound/arm/aaci.c')
-rw-r--r-- | sound/arm/aaci.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sound/arm/aaci.c b/sound/arm/aaci.c index 1f0f8213e2d5..6c160a038b23 100644 --- a/sound/arm/aaci.c +++ b/sound/arm/aaci.c | |||
@@ -504,6 +504,10 @@ static int aaci_pcm_hw_params(struct snd_pcm_substream *substream, | |||
504 | int err; | 504 | int err; |
505 | 505 | ||
506 | aaci_pcm_hw_free(substream); | 506 | aaci_pcm_hw_free(substream); |
507 | if (aacirun->pcm_open) { | ||
508 | snd_ac97_pcm_close(aacirun->pcm); | ||
509 | aacirun->pcm_open = 0; | ||
510 | } | ||
507 | 511 | ||
508 | err = devdma_hw_alloc(NULL, substream, | 512 | err = devdma_hw_alloc(NULL, substream, |
509 | params_buffer_bytes(params)); | 513 | params_buffer_bytes(params)); |
@@ -517,7 +521,7 @@ static int aaci_pcm_hw_params(struct snd_pcm_substream *substream, | |||
517 | else | 521 | else |
518 | err = snd_ac97_pcm_open(aacirun->pcm, params_rate(params), | 522 | err = snd_ac97_pcm_open(aacirun->pcm, params_rate(params), |
519 | params_channels(params), | 523 | params_channels(params), |
520 | aacirun->pcm->r[1].slots); | 524 | aacirun->pcm->r[0].slots); |
521 | 525 | ||
522 | if (err) | 526 | if (err) |
523 | goto out; | 527 | goto out; |