diff options
| author | Axel Lin <axel.lin@ingics.com> | 2015-06-13 22:28:01 -0400 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2015-06-15 06:05:43 -0400 |
| commit | b43fccf4b5cae58829abbeae497a98505fa1a5e9 (patch) | |
| tree | 963675e41f0658c9af8711f0dd9f911d069828b7 | |
| parent | b787f68c36d49bb1d9236f403813641efa74a031 (diff) | |
ASoC: ml26124: Remove duplicate code
Current code has duplicate code for 16000, 32000 and 48000 sample rates.
get_srate() returns negative error code for unsupported rate, so we can
remove the duplicate code in the swith cases by calling get_srate() first.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
| -rw-r--r-- | sound/soc/codecs/ml26124.c | 58 |
1 files changed, 11 insertions, 47 deletions
diff --git a/sound/soc/codecs/ml26124.c b/sound/soc/codecs/ml26124.c index 711f55039522..d19f3deebd3f 100644 --- a/sound/soc/codecs/ml26124.c +++ b/sound/soc/codecs/ml26124.c | |||
| @@ -341,6 +341,7 @@ static int ml26124_hw_params(struct snd_pcm_substream *substream, | |||
| 341 | struct snd_soc_codec *codec = dai->codec; | 341 | struct snd_soc_codec *codec = dai->codec; |
| 342 | struct ml26124_priv *priv = snd_soc_codec_get_drvdata(codec); | 342 | struct ml26124_priv *priv = snd_soc_codec_get_drvdata(codec); |
| 343 | int i = get_coeff(priv->mclk, params_rate(hw_params)); | 343 | int i = get_coeff(priv->mclk, params_rate(hw_params)); |
| 344 | int srate; | ||
| 344 | 345 | ||
| 345 | if (i < 0) | 346 | if (i < 0) |
| 346 | return i; | 347 | return i; |
| @@ -370,53 +371,16 @@ static int ml26124_hw_params(struct snd_pcm_substream *substream, | |||
| 370 | BIT(0) | BIT(1), 0); | 371 | BIT(0) | BIT(1), 0); |
| 371 | } | 372 | } |
| 372 | 373 | ||
| 373 | switch (params_rate(hw_params)) { | 374 | srate = get_srate(params_rate(hw_params)); |
| 374 | case 16000: | 375 | if (srate < 0) |
| 375 | snd_soc_update_bits(codec, ML26124_SMPLING_RATE, 0xf, | 376 | return srate; |
| 376 | get_srate(params_rate(hw_params))); | 377 | |
| 377 | snd_soc_update_bits(codec, ML26124_PLLNL, 0xff, | 378 | snd_soc_update_bits(codec, ML26124_SMPLING_RATE, 0xf, srate); |
| 378 | coeff_div[i].pllnl); | 379 | snd_soc_update_bits(codec, ML26124_PLLNL, 0xff, coeff_div[i].pllnl); |
| 379 | snd_soc_update_bits(codec, ML26124_PLLNH, 0x1, | 380 | snd_soc_update_bits(codec, ML26124_PLLNH, 0x1, coeff_div[i].pllnh); |
| 380 | coeff_div[i].pllnh); | 381 | snd_soc_update_bits(codec, ML26124_PLLML, 0xff, coeff_div[i].pllml); |
| 381 | snd_soc_update_bits(codec, ML26124_PLLML, 0xff, | 382 | snd_soc_update_bits(codec, ML26124_PLLMH, 0x3f, coeff_div[i].pllmh); |
| 382 | coeff_div[i].pllml); | 383 | snd_soc_update_bits(codec, ML26124_PLLDIV, 0x1f, coeff_div[i].plldiv); |
| 383 | snd_soc_update_bits(codec, ML26124_PLLMH, 0x3f, | ||
| 384 | coeff_div[i].pllmh); | ||
| 385 | snd_soc_update_bits(codec, ML26124_PLLDIV, 0x1f, | ||
| 386 | coeff_div[i].plldiv); | ||
| 387 | break; | ||
| 388 | case 32000: | ||
| 389 | snd_soc_update_bits(codec, ML26124_SMPLING_RATE, 0xf, | ||
| 390 | get_srate(params_rate(hw_params))); | ||
| 391 | snd_soc_update_bits(codec, ML26124_PLLNL, 0xff, | ||
| 392 | coeff_div[i].pllnl); | ||
| 393 | snd_soc_update_bits(codec, ML26124_PLLNH, 0x1, | ||
| 394 | coeff_div[i].pllnh); | ||
| 395 | snd_soc_update_bits(codec, ML26124_PLLML, 0xff, | ||
| 396 | coeff_div[i].pllml); | ||
| 397 | snd_soc_update_bits(codec, ML26124_PLLMH, 0x3f, | ||
| 398 | coeff_div[i].pllmh); | ||
| 399 | snd_soc_update_bits(codec, ML26124_PLLDIV, 0x1f, | ||
| 400 | coeff_div[i].plldiv); | ||
| 401 | break; | ||
| 402 | case 48000: | ||
| 403 | snd_soc_update_bits(codec, ML26124_SMPLING_RATE, 0xf, | ||
| 404 | get_srate(params_rate(hw_params))); | ||
| 405 | snd_soc_update_bits(codec, ML26124_PLLNL, 0xff, | ||
| 406 | coeff_div[i].pllnl); | ||
| 407 | snd_soc_update_bits(codec, ML26124_PLLNH, 0x1, | ||
| 408 | coeff_div[i].pllnh); | ||
| 409 | snd_soc_update_bits(codec, ML26124_PLLML, 0xff, | ||
| 410 | coeff_div[i].pllml); | ||
| 411 | snd_soc_update_bits(codec, ML26124_PLLMH, 0x3f, | ||
| 412 | coeff_div[i].pllmh); | ||
| 413 | snd_soc_update_bits(codec, ML26124_PLLDIV, 0x1f, | ||
| 414 | coeff_div[i].plldiv); | ||
| 415 | break; | ||
| 416 | default: | ||
| 417 | pr_err("%s:this rate is no support for ml26124\n", __func__); | ||
| 418 | return -EINVAL; | ||
| 419 | } | ||
| 420 | 384 | ||
| 421 | return 0; | 385 | return 0; |
| 422 | } | 386 | } |
