Commit 59bbd703 authored by Kai Vehmanen's avatar Kai Vehmanen Committed by Mark Brown

ASoC: intel: sof_rt5682: common hdmi codec support

Add support for using snd-hda-codec-hdmi driver for HDMI/DP
instead of ASoC hdac-hdmi. This is aligned with how other
HDA codecs are already handled.
Signed-off-by: default avatarKai Vehmanen <kai.vehmanen@linux.intel.com>
Reviewed-by: default avatarTakashi Iwai <tiwai@suse.de>
Reviewed-by: default avatarPierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20191029134017.18901-9-kai.vehmanen@linux.intel.comSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent dfe87aa8
...@@ -17,7 +17,7 @@ snd-soc-sst-byt-cht-cx2072x-objs := bytcht_cx2072x.o ...@@ -17,7 +17,7 @@ snd-soc-sst-byt-cht-cx2072x-objs := bytcht_cx2072x.o
snd-soc-sst-byt-cht-da7213-objs := bytcht_da7213.o snd-soc-sst-byt-cht-da7213-objs := bytcht_da7213.o
snd-soc-sst-byt-cht-es8316-objs := bytcht_es8316.o snd-soc-sst-byt-cht-es8316-objs := bytcht_es8316.o
snd-soc-sst-byt-cht-nocodec-objs := bytcht_nocodec.o snd-soc-sst-byt-cht-nocodec-objs := bytcht_nocodec.o
snd-soc-sof_rt5682-objs := sof_rt5682.o snd-soc-sof_rt5682-objs := sof_rt5682.o hda_dsp_common.o
snd-soc-kbl_da7219_max98357a-objs := kbl_da7219_max98357a.o snd-soc-kbl_da7219_max98357a-objs := kbl_da7219_max98357a.o
snd-soc-kbl_da7219_max98927-objs := kbl_da7219_max98927.o snd-soc-kbl_da7219_max98927-objs := kbl_da7219_max98927.o
snd-soc-kbl_rt5663_max98927-objs := kbl_rt5663_max98927.o snd-soc-kbl_rt5663_max98927-objs := kbl_rt5663_max98927.o
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include "../../codecs/rt5682.h" #include "../../codecs/rt5682.h"
#include "../../codecs/hdac_hdmi.h" #include "../../codecs/hdac_hdmi.h"
#include "../common/soc-intel-quirks.h" #include "../common/soc-intel-quirks.h"
#include "hda_dsp_common.h"
#define NAME_SIZE 32 #define NAME_SIZE 32
...@@ -53,6 +54,7 @@ struct sof_card_private { ...@@ -53,6 +54,7 @@ struct sof_card_private {
struct clk *mclk; struct clk *mclk;
struct snd_soc_jack sof_headset; struct snd_soc_jack sof_headset;
struct list_head hdmi_pcm_list; struct list_head hdmi_pcm_list;
bool common_hdmi_codec_drv;
}; };
static int sof_rt5682_quirk_cb(const struct dmi_system_id *id) static int sof_rt5682_quirk_cb(const struct dmi_system_id *id)
...@@ -274,6 +276,13 @@ static int sof_card_late_probe(struct snd_soc_card *card) ...@@ -274,6 +276,13 @@ static int sof_card_late_probe(struct snd_soc_card *card)
if (is_legacy_cpu) if (is_legacy_cpu)
return 0; return 0;
pcm = list_first_entry(&ctx->hdmi_pcm_list, struct sof_hdmi_pcm,
head);
component = pcm->codec_dai->component;
if (ctx->common_hdmi_codec_drv)
return hda_dsp_hdmi_build_controls(card, component);
list_for_each_entry(pcm, &ctx->hdmi_pcm_list, head) { list_for_each_entry(pcm, &ctx->hdmi_pcm_list, head) {
component = pcm->codec_dai->component; component = pcm->codec_dai->component;
snprintf(jack_name, sizeof(jack_name), snprintf(jack_name, sizeof(jack_name),
...@@ -642,6 +651,8 @@ static int sof_audio_probe(struct platform_device *pdev) ...@@ -642,6 +651,8 @@ static int sof_audio_probe(struct platform_device *pdev)
if (ret) if (ret)
return ret; return ret;
ctx->common_hdmi_codec_drv = mach->mach_params.common_hdmi_codec_drv;
snd_soc_card_set_drvdata(&sof_audio_card_rt5682, ctx); snd_soc_card_set_drvdata(&sof_audio_card_rt5682, ctx);
return devm_snd_soc_register_card(&pdev->dev, return devm_snd_soc_register_card(&pdev->dev,
......
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