@@ -14,9 +14,19 @@
#include "../../codecs/hdac_hdmi.h"
#include "../skylake/skl.h"
#include "skl_hda_dsp_common.h"
+#include "hdac_hdmi_common.h"
#define NAME_SIZE 32
+static int skl_hdmi_init(struct snd_soc_pcm_runtime *rtd)
+{
+ struct skl_hda_private *ctx = snd_soc_card_get_drvdata(rtd->card);
+ struct snd_soc_dai *dai = rtd->codec_dai;
+
+ /* Setup a device_link between machine device and HDMI codec device. */
+ return hdac_hdmi_add_device_link(rtd->card->dev, dai->dev, &ctx->link);
+}
+
int skl_hda_hdmi_add_pcm(struct snd_soc_card *card, int device)
{
struct skl_hda_private *ctx = snd_soc_card_get_drvdata(card);
@@ -48,6 +58,7 @@ struct snd_soc_dai_link skl_hda_be_dai_links[HDA_DSP_MAX_BE_DAI_LINKS] = {
.cpu_dai_name = "iDisp1 Pin",
.codec_name = "ehdaudio0D2",
.codec_dai_name = "intel-hdmi-hifi1",
+ .init = skl_hdmi_init,
.dpcm_playback = 1,
.no_pcm = 1,
},
@@ -57,6 +68,7 @@ struct snd_soc_dai_link skl_hda_be_dai_links[HDA_DSP_MAX_BE_DAI_LINKS] = {
.cpu_dai_name = "iDisp2 Pin",
.codec_name = "ehdaudio0D2",
.codec_dai_name = "intel-hdmi-hifi2",
+ .init = skl_hdmi_init,
.dpcm_playback = 1,
.no_pcm = 1,
},
@@ -66,6 +78,7 @@ struct snd_soc_dai_link skl_hda_be_dai_links[HDA_DSP_MAX_BE_DAI_LINKS] = {
.cpu_dai_name = "iDisp3 Pin",
.codec_name = "ehdaudio0D2",
.codec_dai_name = "intel-hdmi-hifi3",
+ .init = skl_hdmi_init,
.dpcm_playback = 1,
.no_pcm = 1,
},
@@ -29,6 +29,7 @@ struct skl_hda_private {
int pcm_count;
int dai_index;
const char *platform_name;
+ struct device_link *link;
};
extern struct snd_soc_dai_link skl_hda_be_dai_links[HDA_DSP_MAX_BE_DAI_LINKS];