diff options
author | Mark Brown <broonie@linaro.org> | 2014-03-13 03:04:07 +0400 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-03-13 03:04:07 +0400 |
commit | 3b93f0598c30a4d14b72223023fa56315eab15a4 (patch) | |
tree | 35e745a126733d8dfde2a9d023d66ec05099fcef | |
parent | 08fa654549bc427a7660a1c93d8ba5bd477618ba (diff) | |
parent | e48c6d7f01032c42907dc2cd81b73f95490c81a1 (diff) | |
download | linux-3b93f0598c30a4d14b72223023fa56315eab15a4.tar.xz |
Merge remote-tracking branch 'asoc/topic/pcm1792a' into asoc-next
-rw-r--r-- | sound/soc/codecs/pcm1792a.c | 33 |
1 files changed, 22 insertions, 11 deletions
diff --git a/sound/soc/codecs/pcm1792a.c b/sound/soc/codecs/pcm1792a.c index 7146653a8e16..3a80ba4452df 100644 --- a/sound/soc/codecs/pcm1792a.c +++ b/sound/soc/codecs/pcm1792a.c @@ -107,24 +107,35 @@ static int pcm1792a_hw_params(struct snd_pcm_substream *substream, struct snd_soc_codec *codec = dai->codec; struct pcm1792a_private *priv = snd_soc_codec_get_drvdata(codec); int val = 0, ret; - int pcm_format = params_format(params); priv->rate = params_rate(params); switch (priv->format & SND_SOC_DAIFMT_FORMAT_MASK) { case SND_SOC_DAIFMT_RIGHT_J: - if (pcm_format == SNDRV_PCM_FORMAT_S24_LE || - pcm_format == SNDRV_PCM_FORMAT_S32_LE) - val = 0x02; - else if (pcm_format == SNDRV_PCM_FORMAT_S16_LE) - val = 0x00; + switch (params_width(params)) { + case 24: + case 32: + val = 2; + break; + case 16: + val = 0; + break; + default: + return -EINVAL; + } break; case SND_SOC_DAIFMT_I2S: - if (pcm_format == SNDRV_PCM_FORMAT_S24_LE || - pcm_format == SNDRV_PCM_FORMAT_S32_LE) - val = 0x05; - else if (pcm_format == SNDRV_PCM_FORMAT_S16_LE) - val = 0x04; + switch (params_width(params)) { + case 24: + case 32: + val = 5; + break; + case 16: + val = 4; + break; + default: + return -EINVAL; + } break; default: dev_err(codec->dev, "Invalid DAI format\n"); |