|
@@ -169,7 +169,9 @@ static struct snd_soc_dai_link_component mt8173_rt5650_codecs[] = {
|
|
|
enum {
|
|
|
DAI_LINK_PLAYBACK,
|
|
|
DAI_LINK_CAPTURE,
|
|
|
+ DAI_LINK_HDMI,
|
|
|
DAI_LINK_CODEC_I2S,
|
|
|
+ DAI_LINK_HDMI_I2S,
|
|
|
};
|
|
|
|
|
|
/* Digital audio interface glue - connects codec <---> CPU */
|
|
@@ -195,6 +197,16 @@ static struct snd_soc_dai_link mt8173_rt5650_dais[] = {
|
|
|
.dynamic = 1,
|
|
|
.dpcm_capture = 1,
|
|
|
},
|
|
|
+ [DAI_LINK_HDMI] = {
|
|
|
+ .name = "HDMI",
|
|
|
+ .stream_name = "HDMI PCM",
|
|
|
+ .cpu_dai_name = "HDMI",
|
|
|
+ .codec_name = "snd-soc-dummy",
|
|
|
+ .codec_dai_name = "snd-soc-dummy-dai",
|
|
|
+ .trigger = {SND_SOC_DPCM_TRIGGER_POST, SND_SOC_DPCM_TRIGGER_POST},
|
|
|
+ .dynamic = 1,
|
|
|
+ .dpcm_playback = 1,
|
|
|
+ },
|
|
|
/* Back End DAI links */
|
|
|
[DAI_LINK_CODEC_I2S] = {
|
|
|
.name = "Codec",
|
|
@@ -210,6 +222,13 @@ static struct snd_soc_dai_link mt8173_rt5650_dais[] = {
|
|
|
.dpcm_playback = 1,
|
|
|
.dpcm_capture = 1,
|
|
|
},
|
|
|
+ [DAI_LINK_HDMI_I2S] = {
|
|
|
+ .name = "HDMI BE",
|
|
|
+ .cpu_dai_name = "HDMIO",
|
|
|
+ .no_pcm = 1,
|
|
|
+ .codec_dai_name = "i2s-hifi",
|
|
|
+ .dpcm_playback = 1,
|
|
|
+ },
|
|
|
};
|
|
|
|
|
|
static struct snd_soc_card mt8173_rt5650_card = {
|
|
@@ -284,6 +303,13 @@ static int mt8173_rt5650_dev_probe(struct platform_device *pdev)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ mt8173_rt5650_dais[DAI_LINK_HDMI_I2S].codec_of_node =
|
|
|
+ of_parse_phandle(pdev->dev.of_node, "mediatek,audio-codec", 1);
|
|
|
+ if (!mt8173_rt5650_dais[DAI_LINK_HDMI_I2S].codec_of_node) {
|
|
|
+ dev_err(&pdev->dev,
|
|
|
+ "Property 'audio-codec' missing or invalid\n");
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
card->dev = &pdev->dev;
|
|
|
platform_set_drvdata(pdev, card);
|
|
|
|