mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-16 16:54:20 +08:00
ASoC: wm5110: Add basic support for ISRCs
Add support for the ISRCs that matches the current support on the w5102. Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com> Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
parent
9a3e1b8c50
commit
0da2e5baf4
@ -277,6 +277,10 @@ SOC_ENUM("LHPF2 Mode", arizona_lhpf2_mode),
|
||||
SOC_ENUM("LHPF3 Mode", arizona_lhpf3_mode),
|
||||
SOC_ENUM("LHPF4 Mode", arizona_lhpf4_mode),
|
||||
|
||||
SOC_VALUE_ENUM("ISRC1 FSL", arizona_isrc_fsl[0]),
|
||||
SOC_VALUE_ENUM("ISRC2 FSL", arizona_isrc_fsl[1]),
|
||||
SOC_VALUE_ENUM("ISRC3 FSL", arizona_isrc_fsl[2]),
|
||||
|
||||
ARIZONA_MIXER_CONTROLS("DSP1L", ARIZONA_DSP1LMIX_INPUT_1_SOURCE),
|
||||
ARIZONA_MIXER_CONTROLS("DSP1R", ARIZONA_DSP1RMIX_INPUT_1_SOURCE),
|
||||
ARIZONA_MIXER_CONTROLS("DSP2L", ARIZONA_DSP2LMIX_INPUT_1_SOURCE),
|
||||
@ -501,6 +505,36 @@ ARIZONA_MUX_ENUMS(ASRC1R, ARIZONA_ASRC1RMIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ASRC2L, ARIZONA_ASRC2LMIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ASRC2R, ARIZONA_ASRC2RMIX_INPUT_1_SOURCE);
|
||||
|
||||
ARIZONA_MUX_ENUMS(ISRC1INT1, ARIZONA_ISRC1INT1MIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ISRC1INT2, ARIZONA_ISRC1INT2MIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ISRC1INT3, ARIZONA_ISRC1INT3MIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ISRC1INT4, ARIZONA_ISRC1INT4MIX_INPUT_1_SOURCE);
|
||||
|
||||
ARIZONA_MUX_ENUMS(ISRC1DEC1, ARIZONA_ISRC1DEC1MIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ISRC1DEC2, ARIZONA_ISRC1DEC2MIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ISRC1DEC3, ARIZONA_ISRC1DEC3MIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ISRC1DEC4, ARIZONA_ISRC1DEC4MIX_INPUT_1_SOURCE);
|
||||
|
||||
ARIZONA_MUX_ENUMS(ISRC2INT1, ARIZONA_ISRC2INT1MIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ISRC2INT2, ARIZONA_ISRC2INT2MIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ISRC2INT3, ARIZONA_ISRC2INT3MIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ISRC2INT4, ARIZONA_ISRC2INT4MIX_INPUT_1_SOURCE);
|
||||
|
||||
ARIZONA_MUX_ENUMS(ISRC2DEC1, ARIZONA_ISRC2DEC1MIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ISRC2DEC2, ARIZONA_ISRC2DEC2MIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ISRC2DEC3, ARIZONA_ISRC2DEC3MIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ISRC2DEC4, ARIZONA_ISRC2DEC4MIX_INPUT_1_SOURCE);
|
||||
|
||||
ARIZONA_MUX_ENUMS(ISRC3INT1, ARIZONA_ISRC3INT1MIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ISRC3INT2, ARIZONA_ISRC3INT2MIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ISRC3INT3, ARIZONA_ISRC3INT3MIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ISRC3INT4, ARIZONA_ISRC3INT4MIX_INPUT_1_SOURCE);
|
||||
|
||||
ARIZONA_MUX_ENUMS(ISRC3DEC1, ARIZONA_ISRC3DEC1MIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ISRC3DEC2, ARIZONA_ISRC3DEC2MIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ISRC3DEC3, ARIZONA_ISRC3DEC3MIX_INPUT_1_SOURCE);
|
||||
ARIZONA_MUX_ENUMS(ISRC3DEC4, ARIZONA_ISRC3DEC4MIX_INPUT_1_SOURCE);
|
||||
|
||||
static const char *wm5110_aec_loopback_texts[] = {
|
||||
"HPOUT1L", "HPOUT1R", "HPOUT2L", "HPOUT2R", "HPOUT3L", "HPOUT3R",
|
||||
"SPKOUTL", "SPKOUTR", "SPKDAT1L", "SPKDAT1R", "SPKDAT2L", "SPKDAT2R",
|
||||
@ -646,6 +680,60 @@ WM_ADSP2("DSP2", 1),
|
||||
WM_ADSP2("DSP3", 2),
|
||||
WM_ADSP2("DSP4", 3),
|
||||
|
||||
SND_SOC_DAPM_PGA("ISRC1INT1", ARIZONA_ISRC_1_CTRL_3,
|
||||
ARIZONA_ISRC1_INT0_ENA_SHIFT, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("ISRC1INT2", ARIZONA_ISRC_1_CTRL_3,
|
||||
ARIZONA_ISRC1_INT1_ENA_SHIFT, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("ISRC1INT3", ARIZONA_ISRC_1_CTRL_3,
|
||||
ARIZONA_ISRC1_INT2_ENA_SHIFT, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("ISRC1INT4", ARIZONA_ISRC_1_CTRL_3,
|
||||
ARIZONA_ISRC1_INT3_ENA_SHIFT, 0, NULL, 0),
|
||||
|
||||
SND_SOC_DAPM_PGA("ISRC1DEC1", ARIZONA_ISRC_1_CTRL_3,
|
||||
ARIZONA_ISRC1_DEC0_ENA_SHIFT, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("ISRC1DEC2", ARIZONA_ISRC_1_CTRL_3,
|
||||
ARIZONA_ISRC1_DEC1_ENA_SHIFT, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("ISRC1DEC3", ARIZONA_ISRC_1_CTRL_3,
|
||||
ARIZONA_ISRC1_DEC2_ENA_SHIFT, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("ISRC1DEC4", ARIZONA_ISRC_1_CTRL_3,
|
||||
ARIZONA_ISRC1_DEC3_ENA_SHIFT, 0, NULL, 0),
|
||||
|
||||
SND_SOC_DAPM_PGA("ISRC2INT1", ARIZONA_ISRC_2_CTRL_3,
|
||||
ARIZONA_ISRC2_INT0_ENA_SHIFT, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("ISRC2INT2", ARIZONA_ISRC_2_CTRL_3,
|
||||
ARIZONA_ISRC2_INT1_ENA_SHIFT, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("ISRC2INT3", ARIZONA_ISRC_2_CTRL_3,
|
||||
ARIZONA_ISRC2_INT2_ENA_SHIFT, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("ISRC2INT4", ARIZONA_ISRC_2_CTRL_3,
|
||||
ARIZONA_ISRC2_INT3_ENA_SHIFT, 0, NULL, 0),
|
||||
|
||||
SND_SOC_DAPM_PGA("ISRC2DEC1", ARIZONA_ISRC_2_CTRL_3,
|
||||
ARIZONA_ISRC2_DEC0_ENA_SHIFT, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("ISRC2DEC2", ARIZONA_ISRC_2_CTRL_3,
|
||||
ARIZONA_ISRC2_DEC1_ENA_SHIFT, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("ISRC2DEC3", ARIZONA_ISRC_2_CTRL_3,
|
||||
ARIZONA_ISRC2_DEC2_ENA_SHIFT, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("ISRC2DEC4", ARIZONA_ISRC_2_CTRL_3,
|
||||
ARIZONA_ISRC2_DEC3_ENA_SHIFT, 0, NULL, 0),
|
||||
|
||||
SND_SOC_DAPM_PGA("ISRC3INT1", ARIZONA_ISRC_3_CTRL_3,
|
||||
ARIZONA_ISRC3_INT0_ENA_SHIFT, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("ISRC3INT2", ARIZONA_ISRC_3_CTRL_3,
|
||||
ARIZONA_ISRC3_INT1_ENA_SHIFT, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("ISRC3INT3", ARIZONA_ISRC_3_CTRL_3,
|
||||
ARIZONA_ISRC3_INT2_ENA_SHIFT, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("ISRC3INT4", ARIZONA_ISRC_3_CTRL_3,
|
||||
ARIZONA_ISRC3_INT3_ENA_SHIFT, 0, NULL, 0),
|
||||
|
||||
SND_SOC_DAPM_PGA("ISRC3DEC1", ARIZONA_ISRC_3_CTRL_3,
|
||||
ARIZONA_ISRC3_DEC0_ENA_SHIFT, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("ISRC3DEC2", ARIZONA_ISRC_3_CTRL_3,
|
||||
ARIZONA_ISRC3_DEC1_ENA_SHIFT, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("ISRC3DEC3", ARIZONA_ISRC_3_CTRL_3,
|
||||
ARIZONA_ISRC3_DEC2_ENA_SHIFT, 0, NULL, 0),
|
||||
SND_SOC_DAPM_PGA("ISRC3DEC4", ARIZONA_ISRC_3_CTRL_3,
|
||||
ARIZONA_ISRC3_DEC3_ENA_SHIFT, 0, NULL, 0),
|
||||
|
||||
SND_SOC_DAPM_VALUE_MUX("AEC Loopback", ARIZONA_DAC_AEC_CONTROL_1,
|
||||
ARIZONA_AEC_LOOPBACK_ENA_SHIFT, 0,
|
||||
&wm5110_aec_loopback_mux),
|
||||
@ -873,6 +961,36 @@ ARIZONA_DSP_WIDGETS(DSP2, "DSP2"),
|
||||
ARIZONA_DSP_WIDGETS(DSP3, "DSP3"),
|
||||
ARIZONA_DSP_WIDGETS(DSP4, "DSP4"),
|
||||
|
||||
ARIZONA_MUX_WIDGETS(ISRC1DEC1, "ISRC1DEC1"),
|
||||
ARIZONA_MUX_WIDGETS(ISRC1DEC2, "ISRC1DEC2"),
|
||||
ARIZONA_MUX_WIDGETS(ISRC1DEC3, "ISRC1DEC3"),
|
||||
ARIZONA_MUX_WIDGETS(ISRC1DEC4, "ISRC1DEC4"),
|
||||
|
||||
ARIZONA_MUX_WIDGETS(ISRC1INT1, "ISRC1INT1"),
|
||||
ARIZONA_MUX_WIDGETS(ISRC1INT2, "ISRC1INT2"),
|
||||
ARIZONA_MUX_WIDGETS(ISRC1INT3, "ISRC1INT3"),
|
||||
ARIZONA_MUX_WIDGETS(ISRC1INT4, "ISRC1INT4"),
|
||||
|
||||
ARIZONA_MUX_WIDGETS(ISRC2DEC1, "ISRC2DEC1"),
|
||||
ARIZONA_MUX_WIDGETS(ISRC2DEC2, "ISRC2DEC2"),
|
||||
ARIZONA_MUX_WIDGETS(ISRC2DEC3, "ISRC2DEC3"),
|
||||
ARIZONA_MUX_WIDGETS(ISRC2DEC4, "ISRC2DEC4"),
|
||||
|
||||
ARIZONA_MUX_WIDGETS(ISRC2INT1, "ISRC2INT1"),
|
||||
ARIZONA_MUX_WIDGETS(ISRC2INT2, "ISRC2INT2"),
|
||||
ARIZONA_MUX_WIDGETS(ISRC2INT3, "ISRC2INT3"),
|
||||
ARIZONA_MUX_WIDGETS(ISRC2INT4, "ISRC2INT4"),
|
||||
|
||||
ARIZONA_MUX_WIDGETS(ISRC3DEC1, "ISRC3DEC1"),
|
||||
ARIZONA_MUX_WIDGETS(ISRC3DEC2, "ISRC3DEC2"),
|
||||
ARIZONA_MUX_WIDGETS(ISRC3DEC3, "ISRC3DEC3"),
|
||||
ARIZONA_MUX_WIDGETS(ISRC3DEC4, "ISRC3DEC4"),
|
||||
|
||||
ARIZONA_MUX_WIDGETS(ISRC3INT1, "ISRC3INT1"),
|
||||
ARIZONA_MUX_WIDGETS(ISRC3INT2, "ISRC3INT2"),
|
||||
ARIZONA_MUX_WIDGETS(ISRC3INT3, "ISRC3INT3"),
|
||||
ARIZONA_MUX_WIDGETS(ISRC3INT4, "ISRC3INT4"),
|
||||
|
||||
SND_SOC_DAPM_OUTPUT("HPOUT1L"),
|
||||
SND_SOC_DAPM_OUTPUT("HPOUT1R"),
|
||||
SND_SOC_DAPM_OUTPUT("HPOUT2L"),
|
||||
@ -946,6 +1064,30 @@ SND_SOC_DAPM_OUTPUT("MICSUPP"),
|
||||
{ name, "ASRC1R", "ASRC1R" }, \
|
||||
{ name, "ASRC2L", "ASRC2L" }, \
|
||||
{ name, "ASRC2R", "ASRC2R" }, \
|
||||
{ name, "ISRC1DEC1", "ISRC1DEC1" }, \
|
||||
{ name, "ISRC1DEC2", "ISRC1DEC2" }, \
|
||||
{ name, "ISRC1DEC3", "ISRC1DEC3" }, \
|
||||
{ name, "ISRC1DEC4", "ISRC1DEC4" }, \
|
||||
{ name, "ISRC1INT1", "ISRC1INT1" }, \
|
||||
{ name, "ISRC1INT2", "ISRC1INT2" }, \
|
||||
{ name, "ISRC1INT3", "ISRC1INT3" }, \
|
||||
{ name, "ISRC1INT4", "ISRC1INT4" }, \
|
||||
{ name, "ISRC2DEC1", "ISRC2DEC1" }, \
|
||||
{ name, "ISRC2DEC2", "ISRC2DEC2" }, \
|
||||
{ name, "ISRC2DEC3", "ISRC2DEC3" }, \
|
||||
{ name, "ISRC2DEC4", "ISRC2DEC4" }, \
|
||||
{ name, "ISRC2INT1", "ISRC2INT1" }, \
|
||||
{ name, "ISRC2INT2", "ISRC2INT2" }, \
|
||||
{ name, "ISRC2INT3", "ISRC2INT3" }, \
|
||||
{ name, "ISRC2INT4", "ISRC2INT4" }, \
|
||||
{ name, "ISRC3DEC1", "ISRC3DEC1" }, \
|
||||
{ name, "ISRC3DEC2", "ISRC3DEC2" }, \
|
||||
{ name, "ISRC3DEC3", "ISRC3DEC3" }, \
|
||||
{ name, "ISRC3DEC4", "ISRC3DEC4" }, \
|
||||
{ name, "ISRC3INT1", "ISRC3INT1" }, \
|
||||
{ name, "ISRC3INT2", "ISRC3INT2" }, \
|
||||
{ name, "ISRC3INT3", "ISRC3INT3" }, \
|
||||
{ name, "ISRC3INT4", "ISRC3INT4" }, \
|
||||
{ name, "DSP1.1", "DSP1" }, \
|
||||
{ name, "DSP1.2", "DSP1" }, \
|
||||
{ name, "DSP1.3", "DSP1" }, \
|
||||
@ -1180,6 +1322,36 @@ static const struct snd_soc_dapm_route wm5110_dapm_routes[] = {
|
||||
ARIZONA_DSP_ROUTES("DSP3"),
|
||||
ARIZONA_DSP_ROUTES("DSP4"),
|
||||
|
||||
ARIZONA_MUX_ROUTES("ISRC1INT1", "ISRC1INT1"),
|
||||
ARIZONA_MUX_ROUTES("ISRC1INT2", "ISRC1INT2"),
|
||||
ARIZONA_MUX_ROUTES("ISRC1INT3", "ISRC1INT3"),
|
||||
ARIZONA_MUX_ROUTES("ISRC1INT4", "ISRC1INT4"),
|
||||
|
||||
ARIZONA_MUX_ROUTES("ISRC1DEC1", "ISRC1DEC1"),
|
||||
ARIZONA_MUX_ROUTES("ISRC1DEC2", "ISRC1DEC2"),
|
||||
ARIZONA_MUX_ROUTES("ISRC1DEC3", "ISRC1DEC3"),
|
||||
ARIZONA_MUX_ROUTES("ISRC1DEC4", "ISRC1DEC4"),
|
||||
|
||||
ARIZONA_MUX_ROUTES("ISRC2INT1", "ISRC2INT1"),
|
||||
ARIZONA_MUX_ROUTES("ISRC2INT2", "ISRC2INT2"),
|
||||
ARIZONA_MUX_ROUTES("ISRC2INT3", "ISRC2INT3"),
|
||||
ARIZONA_MUX_ROUTES("ISRC2INT4", "ISRC2INT4"),
|
||||
|
||||
ARIZONA_MUX_ROUTES("ISRC2DEC1", "ISRC2DEC1"),
|
||||
ARIZONA_MUX_ROUTES("ISRC2DEC2", "ISRC2DEC2"),
|
||||
ARIZONA_MUX_ROUTES("ISRC2DEC3", "ISRC2DEC3"),
|
||||
ARIZONA_MUX_ROUTES("ISRC2DEC4", "ISRC2DEC4"),
|
||||
|
||||
ARIZONA_MUX_ROUTES("ISRC3INT1", "ISRC3INT1"),
|
||||
ARIZONA_MUX_ROUTES("ISRC3INT2", "ISRC3INT2"),
|
||||
ARIZONA_MUX_ROUTES("ISRC3INT3", "ISRC3INT3"),
|
||||
ARIZONA_MUX_ROUTES("ISRC3INT4", "ISRC3INT4"),
|
||||
|
||||
ARIZONA_MUX_ROUTES("ISRC3DEC1", "ISRC3DEC1"),
|
||||
ARIZONA_MUX_ROUTES("ISRC3DEC2", "ISRC3DEC2"),
|
||||
ARIZONA_MUX_ROUTES("ISRC3DEC3", "ISRC3DEC3"),
|
||||
ARIZONA_MUX_ROUTES("ISRC3DEC4", "ISRC3DEC4"),
|
||||
|
||||
{ "AEC Loopback", "HPOUT1L", "OUT1L" },
|
||||
{ "AEC Loopback", "HPOUT1R", "OUT1R" },
|
||||
{ "HPOUT1L", NULL, "OUT1L" },
|
||||
@ -1482,6 +1654,12 @@ static int wm5110_probe(struct platform_device *pdev)
|
||||
ARIZONA_IRQ_FLL2_LOCK, ARIZONA_IRQ_FLL2_CLOCK_OK,
|
||||
&wm5110->fll[1]);
|
||||
|
||||
/* SR2 fixed at 8kHz, SR3 fixed at 16kHz */
|
||||
regmap_update_bits(arizona->regmap, ARIZONA_SAMPLE_RATE_2,
|
||||
ARIZONA_SAMPLE_RATE_2_MASK, 0x11);
|
||||
regmap_update_bits(arizona->regmap, ARIZONA_SAMPLE_RATE_3,
|
||||
ARIZONA_SAMPLE_RATE_3_MASK, 0x12);
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(wm5110_dai); i++)
|
||||
arizona_init_dai(&wm5110->core, i);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user