提交 9b58e716 编写于 作者: M Mark Brown

ASoC: adau1701: Use params_width() rather than memory format

Signed-off-by: NMark Brown <broonie@linaro.org>
Acked-by: NLars-Peter Clausen <lars@metafoo.de>
上级 7c2aff6a
...@@ -299,20 +299,20 @@ static int adau1701_reset(struct snd_soc_codec *codec, unsigned int clkdiv) ...@@ -299,20 +299,20 @@ static int adau1701_reset(struct snd_soc_codec *codec, unsigned int clkdiv)
} }
static int adau1701_set_capture_pcm_format(struct snd_soc_codec *codec, static int adau1701_set_capture_pcm_format(struct snd_soc_codec *codec,
snd_pcm_format_t format) struct snd_pcm_hw_params *params)
{ {
struct adau1701 *adau1701 = snd_soc_codec_get_drvdata(codec); struct adau1701 *adau1701 = snd_soc_codec_get_drvdata(codec);
unsigned int mask = ADAU1701_SEROCTL_WORD_LEN_MASK; unsigned int mask = ADAU1701_SEROCTL_WORD_LEN_MASK;
unsigned int val; unsigned int val;
switch (format) { switch (params_width(params)) {
case SNDRV_PCM_FORMAT_S16_LE: case 16:
val = ADAU1701_SEROCTL_WORD_LEN_16; val = ADAU1701_SEROCTL_WORD_LEN_16;
break; break;
case SNDRV_PCM_FORMAT_S20_3LE: case 20:
val = ADAU1701_SEROCTL_WORD_LEN_20; val = ADAU1701_SEROCTL_WORD_LEN_20;
break; break;
case SNDRV_PCM_FORMAT_S24_LE: case 24:
val = ADAU1701_SEROCTL_WORD_LEN_24; val = ADAU1701_SEROCTL_WORD_LEN_24;
break; break;
default: default:
...@@ -320,14 +320,14 @@ static int adau1701_set_capture_pcm_format(struct snd_soc_codec *codec, ...@@ -320,14 +320,14 @@ static int adau1701_set_capture_pcm_format(struct snd_soc_codec *codec,
} }
if (adau1701->dai_fmt == SND_SOC_DAIFMT_RIGHT_J) { if (adau1701->dai_fmt == SND_SOC_DAIFMT_RIGHT_J) {
switch (format) { switch (params_width(params)) {
case SNDRV_PCM_FORMAT_S16_LE: case 16:
val |= ADAU1701_SEROCTL_MSB_DEALY16; val |= ADAU1701_SEROCTL_MSB_DEALY16;
break; break;
case SNDRV_PCM_FORMAT_S20_3LE: case 20:
val |= ADAU1701_SEROCTL_MSB_DEALY12; val |= ADAU1701_SEROCTL_MSB_DEALY12;
break; break;
case SNDRV_PCM_FORMAT_S24_LE: case 24:
val |= ADAU1701_SEROCTL_MSB_DEALY8; val |= ADAU1701_SEROCTL_MSB_DEALY8;
break; break;
} }
...@@ -340,7 +340,7 @@ static int adau1701_set_capture_pcm_format(struct snd_soc_codec *codec, ...@@ -340,7 +340,7 @@ static int adau1701_set_capture_pcm_format(struct snd_soc_codec *codec,
} }
static int adau1701_set_playback_pcm_format(struct snd_soc_codec *codec, static int adau1701_set_playback_pcm_format(struct snd_soc_codec *codec,
snd_pcm_format_t format) struct snd_pcm_hw_params *params)
{ {
struct adau1701 *adau1701 = snd_soc_codec_get_drvdata(codec); struct adau1701 *adau1701 = snd_soc_codec_get_drvdata(codec);
unsigned int val; unsigned int val;
...@@ -348,14 +348,14 @@ static int adau1701_set_playback_pcm_format(struct snd_soc_codec *codec, ...@@ -348,14 +348,14 @@ static int adau1701_set_playback_pcm_format(struct snd_soc_codec *codec,
if (adau1701->dai_fmt != SND_SOC_DAIFMT_RIGHT_J) if (adau1701->dai_fmt != SND_SOC_DAIFMT_RIGHT_J)
return 0; return 0;
switch (format) { switch (params_width(params)) {
case SNDRV_PCM_FORMAT_S16_LE: case 16:
val = ADAU1701_SERICTL_RIGHTJ_16; val = ADAU1701_SERICTL_RIGHTJ_16;
break; break;
case SNDRV_PCM_FORMAT_S20_3LE: case 20:
val = ADAU1701_SERICTL_RIGHTJ_20; val = ADAU1701_SERICTL_RIGHTJ_20;
break; break;
case SNDRV_PCM_FORMAT_S24_LE: case 24:
val = ADAU1701_SERICTL_RIGHTJ_24; val = ADAU1701_SERICTL_RIGHTJ_24;
break; break;
default: default:
...@@ -374,7 +374,6 @@ static int adau1701_hw_params(struct snd_pcm_substream *substream, ...@@ -374,7 +374,6 @@ static int adau1701_hw_params(struct snd_pcm_substream *substream,
struct snd_soc_codec *codec = dai->codec; struct snd_soc_codec *codec = dai->codec;
struct adau1701 *adau1701 = snd_soc_codec_get_drvdata(codec); struct adau1701 *adau1701 = snd_soc_codec_get_drvdata(codec);
unsigned int clkdiv = adau1701->sysclk / params_rate(params); unsigned int clkdiv = adau1701->sysclk / params_rate(params);
snd_pcm_format_t format;
unsigned int val; unsigned int val;
int ret; int ret;
...@@ -406,11 +405,10 @@ static int adau1701_hw_params(struct snd_pcm_substream *substream, ...@@ -406,11 +405,10 @@ static int adau1701_hw_params(struct snd_pcm_substream *substream,
regmap_update_bits(adau1701->regmap, ADAU1701_DSPCTRL, regmap_update_bits(adau1701->regmap, ADAU1701_DSPCTRL,
ADAU1701_DSPCTRL_SR_MASK, val); ADAU1701_DSPCTRL_SR_MASK, val);
format = params_format(params);
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
return adau1701_set_playback_pcm_format(codec, format); return adau1701_set_playback_pcm_format(codec, params);
else else
return adau1701_set_capture_pcm_format(codec, format); return adau1701_set_capture_pcm_format(codec, params);
} }
static int adau1701_set_dai_fmt(struct snd_soc_dai *codec_dai, static int adau1701_set_dai_fmt(struct snd_soc_dai *codec_dai,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册