diff options
| -rw-r--r-- | sound/soc/codecs/ssm2602.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/sound/soc/codecs/ssm2602.c b/sound/soc/codecs/ssm2602.c index d6af069b7ed1..1fc4c8e0899c 100644 --- a/sound/soc/codecs/ssm2602.c +++ b/sound/soc/codecs/ssm2602.c | |||
| @@ -336,15 +336,17 @@ static int ssm2602_startup(struct snd_pcm_substream *substream, | |||
| 336 | master_runtime->sample_bits, | 336 | master_runtime->sample_bits, |
| 337 | master_runtime->rate); | 337 | master_runtime->rate); |
| 338 | 338 | ||
| 339 | snd_pcm_hw_constraint_minmax(substream->runtime, | 339 | if (master_runtime->rate != 0) |
| 340 | SNDRV_PCM_HW_PARAM_RATE, | 340 | snd_pcm_hw_constraint_minmax(substream->runtime, |
| 341 | master_runtime->rate, | 341 | SNDRV_PCM_HW_PARAM_RATE, |
| 342 | master_runtime->rate); | 342 | master_runtime->rate, |
| 343 | 343 | master_runtime->rate); | |
| 344 | snd_pcm_hw_constraint_minmax(substream->runtime, | 344 | |
| 345 | SNDRV_PCM_HW_PARAM_SAMPLE_BITS, | 345 | if (master_runtime->sample_bits != 0) |
| 346 | master_runtime->sample_bits, | 346 | snd_pcm_hw_constraint_minmax(substream->runtime, |
| 347 | master_runtime->sample_bits); | 347 | SNDRV_PCM_HW_PARAM_SAMPLE_BITS, |
| 348 | master_runtime->sample_bits, | ||
| 349 | master_runtime->sample_bits); | ||
| 348 | 350 | ||
| 349 | ssm2602->slave_substream = substream; | 351 | ssm2602->slave_substream = substream; |
| 350 | } else | 352 | } else |
| @@ -372,6 +374,11 @@ static void ssm2602_shutdown(struct snd_pcm_substream *substream, | |||
| 372 | struct snd_soc_device *socdev = rtd->socdev; | 374 | struct snd_soc_device *socdev = rtd->socdev; |
| 373 | struct snd_soc_codec *codec = socdev->card->codec; | 375 | struct snd_soc_codec *codec = socdev->card->codec; |
| 374 | struct ssm2602_priv *ssm2602 = codec->private_data; | 376 | struct ssm2602_priv *ssm2602 = codec->private_data; |
| 377 | |||
| 378 | if (ssm2602->master_substream == substream) | ||
| 379 | ssm2602->master_substream = ssm2602->slave_substream; | ||
| 380 | |||
| 381 | ssm2602->slave_substream = NULL; | ||
| 375 | /* deactivate */ | 382 | /* deactivate */ |
| 376 | if (!codec->active) | 383 | if (!codec->active) |
| 377 | ssm2602_write(codec, SSM2602_ACTIVE, 0); | 384 | ssm2602_write(codec, SSM2602_ACTIVE, 0); |
