Commit 70b519e5 authored by Pierre-Louis Bossart's avatar Pierre-Louis Bossart Committed by Mark Brown

ASoC: Intel: sof_es8336: extend machine driver to support ES8326 codec

The ES8326 requires a different codec driver than ES8316/8336, fixup
the codec name and dai name depending on the ACPI _HID exposed in the
DSDT.

Also add the select in Kconfig
Signed-off-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Reviewed-by: default avatarBard Liao <yung-chuan.liao@linux.intel.com>
Reviewed-by: default avatarPéter Ujfalusi <peter.ujfalusi@linux.intel.com>
Link: https://lore.kernel.org/r/20220308192610.392950-19-pierre-louis.bossart@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent 8e5db491
...@@ -530,12 +530,13 @@ config SND_SOC_INTEL_SOF_PCM512x_MACH ...@@ -530,12 +530,13 @@ config SND_SOC_INTEL_SOF_PCM512x_MACH
If unsure select "N". If unsure select "N".
config SND_SOC_INTEL_SOF_ES8336_MACH config SND_SOC_INTEL_SOF_ES8336_MACH
tristate "SOF with ES8336 codec in I2S mode" tristate "SOF with ES8336 or ES8326 codec in I2S mode"
depends on I2C && ACPI depends on I2C && ACPI
depends on MFD_INTEL_LPSS || COMPILE_TEST depends on MFD_INTEL_LPSS || COMPILE_TEST
depends on GPIOLIB || COMPILE_TEST depends on GPIOLIB || COMPILE_TEST
depends on SND_HDA_CODEC_HDMI && SND_SOC_SOF_HDA_AUDIO_CODEC depends on SND_HDA_CODEC_HDMI && SND_SOC_SOF_HDA_AUDIO_CODEC
select SND_SOC_ES8316 select SND_SOC_ES8316
select SND_SOC_ES8326
select SND_SOC_DMIC select SND_SOC_DMIC
select SND_SOC_INTEL_HDA_DSP_COMMON select SND_SOC_INTEL_HDA_DSP_COMMON
help help
......
...@@ -292,7 +292,7 @@ static struct snd_soc_dai_link_component platform_component[] = { ...@@ -292,7 +292,7 @@ static struct snd_soc_dai_link_component platform_component[] = {
} }
}; };
SND_SOC_DAILINK_DEF(ssp1_codec, SND_SOC_DAILINK_DEF(es8336_codec,
DAILINK_COMP_ARRAY(COMP_CODEC("i2c-ESSX8336:00", "ES8316 HiFi"))); DAILINK_COMP_ARRAY(COMP_CODEC("i2c-ESSX8336:00", "ES8316 HiFi")));
static struct snd_soc_dai_link_component dmic_component[] = { static struct snd_soc_dai_link_component dmic_component[] = {
...@@ -356,8 +356,8 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev, ...@@ -356,8 +356,8 @@ static struct snd_soc_dai_link *sof_card_dai_links_create(struct device *dev,
goto devm_err; goto devm_err;
links[id].id = id; links[id].id = id;
links[id].codecs = ssp1_codec; links[id].codecs = es8336_codec;
links[id].num_codecs = ARRAY_SIZE(ssp1_codec); links[id].num_codecs = ARRAY_SIZE(es8336_codec);
links[id].platforms = platform_component; links[id].platforms = platform_component;
links[id].num_platforms = ARRAY_SIZE(platform_component); links[id].num_platforms = ARRAY_SIZE(platform_component);
links[id].init = sof_es8316_init; links[id].init = sof_es8316_init;
...@@ -539,6 +539,10 @@ static int sof_es8336_probe(struct platform_device *pdev) ...@@ -539,6 +539,10 @@ static int sof_es8336_probe(struct platform_device *pdev)
"i2c-%s", acpi_dev_name(adev)); "i2c-%s", acpi_dev_name(adev));
put_device(&adev->dev); put_device(&adev->dev);
dai_links[0].codecs->name = codec_name; dai_links[0].codecs->name = codec_name;
/* also fixup codec dai name if relevant */
if (!strncmp(mach->id, "ESSX8326", SND_ACPI_I2C_ID_LEN))
dai_links[0].codecs->dai_name = "ES8326 HiFi";
} else { } else {
dev_err(dev, "Error cannot find '%s' dev\n", mach->id); dev_err(dev, "Error cannot find '%s' dev\n", mach->id);
return -ENXIO; return -ENXIO;
......
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