Commit 88e20c1f authored by Mark Brown's avatar Mark Brown

ASoC: da7213: add .auto_selectable_formats support

Merge series from Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>:

da7213 is still using M/S instead of P/C for SND_SOC_DAIFMT_CBx_CFx.
[PATCH 1/2] will update it.
[PATCH 2/2] will enable DAI format automatic select.
parents 5d5529b0 89286e23
...@@ -1261,10 +1261,10 @@ static int da7213_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) ...@@ -1261,10 +1261,10 @@ static int da7213_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt)
/* Set master/slave mode */ /* Set master/slave mode */
switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
case SND_SOC_DAIFMT_CBM_CFM: case SND_SOC_DAIFMT_CBP_CFP:
da7213->master = true; da7213->master = true;
break; break;
case SND_SOC_DAIFMT_CBS_CFS: case SND_SOC_DAIFMT_CBC_CFC:
da7213->master = false; da7213->master = false;
break; break;
default: default:
...@@ -1293,8 +1293,8 @@ static int da7213_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) ...@@ -1293,8 +1293,8 @@ static int da7213_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt)
return -EINVAL; return -EINVAL;
} }
break; break;
case SND_SOC_DAI_FORMAT_DSP_A: case SND_SOC_DAIFMT_DSP_A:
case SND_SOC_DAI_FORMAT_DSP_B: case SND_SOC_DAIFMT_DSP_B:
/* The bclk is inverted wrt ASoC conventions */ /* The bclk is inverted wrt ASoC conventions */
switch (fmt & SND_SOC_DAIFMT_INV_MASK) { switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
case SND_SOC_DAIFMT_NB_NF: case SND_SOC_DAIFMT_NB_NF:
...@@ -1331,12 +1331,12 @@ static int da7213_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) ...@@ -1331,12 +1331,12 @@ static int da7213_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt)
dai_ctrl |= DA7213_DAI_FORMAT_RIGHT_J; dai_ctrl |= DA7213_DAI_FORMAT_RIGHT_J;
da7213->fmt = DA7213_DAI_FORMAT_RIGHT_J; da7213->fmt = DA7213_DAI_FORMAT_RIGHT_J;
break; break;
case SND_SOC_DAI_FORMAT_DSP_A: /* L data MSB after FRM LRC */ case SND_SOC_DAIFMT_DSP_A: /* L data MSB after FRM LRC */
dai_ctrl |= DA7213_DAI_FORMAT_DSP; dai_ctrl |= DA7213_DAI_FORMAT_DSP;
dai_offset = 1; dai_offset = 1;
da7213->fmt = DA7213_DAI_FORMAT_DSP; da7213->fmt = DA7213_DAI_FORMAT_DSP;
break; break;
case SND_SOC_DAI_FORMAT_DSP_B: /* L data MSB during FRM LRC */ case SND_SOC_DAIFMT_DSP_B: /* L data MSB during FRM LRC */
dai_ctrl |= DA7213_DAI_FORMAT_DSP; dai_ctrl |= DA7213_DAI_FORMAT_DSP;
da7213->fmt = DA7213_DAI_FORMAT_DSP; da7213->fmt = DA7213_DAI_FORMAT_DSP;
break; break;
...@@ -1550,12 +1550,30 @@ static int da7213_set_component_pll(struct snd_soc_component *component, ...@@ -1550,12 +1550,30 @@ static int da7213_set_component_pll(struct snd_soc_component *component,
return _da7213_set_component_pll(component, pll_id, source, fref, fout); return _da7213_set_component_pll(component, pll_id, source, fref, fout);
} }
/*
* Select below from Sound Card, not Auto
* SND_SOC_DAIFMT_CBC_CFC
* SND_SOC_DAIFMT_CBP_CFP
*/
static u64 da7213_dai_formats =
SND_SOC_POSSIBLE_DAIFMT_I2S |
SND_SOC_POSSIBLE_DAIFMT_LEFT_J |
SND_SOC_POSSIBLE_DAIFMT_RIGHT_J |
SND_SOC_POSSIBLE_DAIFMT_DSP_A |
SND_SOC_POSSIBLE_DAIFMT_DSP_B |
SND_SOC_POSSIBLE_DAIFMT_NB_NF |
SND_SOC_POSSIBLE_DAIFMT_NB_IF |
SND_SOC_POSSIBLE_DAIFMT_IB_NF |
SND_SOC_POSSIBLE_DAIFMT_IB_IF;
/* DAI operations */ /* DAI operations */
static const struct snd_soc_dai_ops da7213_dai_ops = { static const struct snd_soc_dai_ops da7213_dai_ops = {
.hw_params = da7213_hw_params, .hw_params = da7213_hw_params,
.set_fmt = da7213_set_dai_fmt, .set_fmt = da7213_set_dai_fmt,
.mute_stream = da7213_mute, .mute_stream = da7213_mute,
.no_capture_mute = 1, .no_capture_mute = 1,
.auto_selectable_formats = &da7213_dai_formats,
.num_auto_selectable_formats = 1,
}; };
static struct snd_soc_dai_driver da7213_dai = { static struct snd_soc_dai_driver da7213_dai = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment