Commit 1d981e0a authored by Charles Keepax's avatar Charles Keepax Committed by Mark Brown

ASoC: wm5110: Provide basic hookup for voice control

Register a platform driver for the CODEC and add DAIs that will be used
to connect a compressed record path for the voice control functionality.
Signed-off-by: default avatarCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 3f97ab4c
...@@ -214,6 +214,7 @@ config SND_SOC_WM_HUBS ...@@ -214,6 +214,7 @@ config SND_SOC_WM_HUBS
config SND_SOC_WM_ADSP config SND_SOC_WM_ADSP
tristate tristate
select SND_SOC_COMPRESS
default y if SND_SOC_CS47L24=y default y if SND_SOC_CS47L24=y
default y if SND_SOC_WM5102=y default y if SND_SOC_WM5102=y
default y if SND_SOC_WM5110=y default y if SND_SOC_WM5110=y
......
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
#define ARIZONA_CLK_98MHZ 5 #define ARIZONA_CLK_98MHZ 5
#define ARIZONA_CLK_147MHZ 6 #define ARIZONA_CLK_147MHZ 6
#define ARIZONA_MAX_DAI 6 #define ARIZONA_MAX_DAI 8
#define ARIZONA_MAX_ADSP 4 #define ARIZONA_MAX_ADSP 4
#define ARIZONA_DVFS_SR1_RQ 0x001 #define ARIZONA_DVFS_SR1_RQ 0x001
......
...@@ -1810,6 +1810,9 @@ static const struct snd_soc_dapm_route wm5110_dapm_routes[] = { ...@@ -1810,6 +1810,9 @@ static const struct snd_soc_dapm_route wm5110_dapm_routes[] = {
{ "Slim2 Capture", NULL, "SYSCLK" }, { "Slim2 Capture", NULL, "SYSCLK" },
{ "Slim3 Capture", NULL, "SYSCLK" }, { "Slim3 Capture", NULL, "SYSCLK" },
{ "Voice Control DSP", NULL, "DSP3" },
{ "Voice Control DSP", NULL, "SYSCLK" },
{ "IN1L PGA", NULL, "IN1L" }, { "IN1L PGA", NULL, "IN1L" },
{ "IN1R PGA", NULL, "IN1R" }, { "IN1R PGA", NULL, "IN1R" },
...@@ -2132,6 +2135,27 @@ static struct snd_soc_dai_driver wm5110_dai[] = { ...@@ -2132,6 +2135,27 @@ static struct snd_soc_dai_driver wm5110_dai[] = {
}, },
.ops = &arizona_simple_dai_ops, .ops = &arizona_simple_dai_ops,
}, },
{
.name = "wm5110-cpu-voicectrl",
.capture = {
.stream_name = "Voice Control CPU",
.channels_min = 1,
.channels_max = 1,
.rates = WM5110_RATES,
.formats = WM5110_FORMATS,
},
.compress_new = snd_soc_new_compress,
},
{
.name = "wm5110-dsp-voicectrl",
.capture = {
.stream_name = "Voice Control DSP",
.channels_min = 1,
.channels_max = 1,
.rates = WM5110_RATES,
.formats = WM5110_FORMATS,
},
},
}; };
static int wm5110_codec_probe(struct snd_soc_codec *codec) static int wm5110_codec_probe(struct snd_soc_codec *codec)
...@@ -2224,6 +2248,13 @@ static struct snd_soc_codec_driver soc_codec_dev_wm5110 = { ...@@ -2224,6 +2248,13 @@ static struct snd_soc_codec_driver soc_codec_dev_wm5110 = {
.num_dapm_routes = ARRAY_SIZE(wm5110_dapm_routes), .num_dapm_routes = ARRAY_SIZE(wm5110_dapm_routes),
}; };
static struct snd_compr_ops wm5110_compr_ops = {
};
static struct snd_soc_platform_driver wm5110_compr_platform = {
.compr_ops = &wm5110_compr_ops,
};
static int wm5110_probe(struct platform_device *pdev) static int wm5110_probe(struct platform_device *pdev)
{ {
struct arizona *arizona = dev_get_drvdata(pdev->dev.parent); struct arizona *arizona = dev_get_drvdata(pdev->dev.parent);
...@@ -2284,8 +2315,21 @@ static int wm5110_probe(struct platform_device *pdev) ...@@ -2284,8 +2315,21 @@ static int wm5110_probe(struct platform_device *pdev)
pm_runtime_enable(&pdev->dev); pm_runtime_enable(&pdev->dev);
pm_runtime_idle(&pdev->dev); pm_runtime_idle(&pdev->dev);
return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm5110, ret = snd_soc_register_platform(&pdev->dev, &wm5110_compr_platform);
if (ret < 0) {
dev_err(&pdev->dev, "Failed to register platform: %d\n", ret);
goto error;
}
ret = snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm5110,
wm5110_dai, ARRAY_SIZE(wm5110_dai)); wm5110_dai, ARRAY_SIZE(wm5110_dai));
if (ret < 0) {
dev_err(&pdev->dev, "Failed to register codec: %d\n", ret);
snd_soc_unregister_platform(&pdev->dev);
}
error:
return ret;
} }
static int wm5110_remove(struct platform_device *pdev) static int wm5110_remove(struct platform_device *pdev)
......
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