mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 16:24:13 +08:00
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.
This commit is contained in:
commit
88e20c1f8c
@ -1261,10 +1261,10 @@ static int da7213_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt)
|
||||
|
||||
/* Set master/slave mode */
|
||||
switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
|
||||
case SND_SOC_DAIFMT_CBM_CFM:
|
||||
case SND_SOC_DAIFMT_CBP_CFP:
|
||||
da7213->master = true;
|
||||
break;
|
||||
case SND_SOC_DAIFMT_CBS_CFS:
|
||||
case SND_SOC_DAIFMT_CBC_CFC:
|
||||
da7213->master = false;
|
||||
break;
|
||||
default:
|
||||
@ -1293,8 +1293,8 @@ static int da7213_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt)
|
||||
return -EINVAL;
|
||||
}
|
||||
break;
|
||||
case SND_SOC_DAI_FORMAT_DSP_A:
|
||||
case SND_SOC_DAI_FORMAT_DSP_B:
|
||||
case SND_SOC_DAIFMT_DSP_A:
|
||||
case SND_SOC_DAIFMT_DSP_B:
|
||||
/* The bclk is inverted wrt ASoC conventions */
|
||||
switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
|
||||
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)
|
||||
dai_ctrl |= DA7213_DAI_FORMAT_RIGHT_J;
|
||||
da7213->fmt = DA7213_DAI_FORMAT_RIGHT_J;
|
||||
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_offset = 1;
|
||||
da7213->fmt = DA7213_DAI_FORMAT_DSP;
|
||||
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;
|
||||
da7213->fmt = DA7213_DAI_FORMAT_DSP;
|
||||
break;
|
||||
@ -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);
|
||||
}
|
||||
|
||||
/*
|
||||
* 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 */
|
||||
static const struct snd_soc_dai_ops da7213_dai_ops = {
|
||||
.hw_params = da7213_hw_params,
|
||||
.set_fmt = da7213_set_dai_fmt,
|
||||
.mute_stream = da7213_mute,
|
||||
.no_capture_mute = 1,
|
||||
.auto_selectable_formats = &da7213_dai_formats,
|
||||
.num_auto_selectable_formats = 1,
|
||||
};
|
||||
|
||||
static struct snd_soc_dai_driver da7213_dai = {
|
||||
|
Loading…
Reference in New Issue
Block a user