Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c0133e3b authored by Koro Chen's avatar Koro Chen Committed by Mark Brown
Browse files

ASoC: mediatek: Add HDMI dai-links in the mt8173-rt5650-rt5676 machine driver



This creates pcmC0D2p for the HDMI playback in the same card.

Signed-off-by: default avatarKoro Chen <koro.chen@mediatek.com>
Signed-off-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent d349caeb
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
MT8173 with RT5650 RT5676 CODECS
MT8173 with RT5650 RT5676 CODECS and HDMI via I2S

Required properties:
- compatible : "mediatek,mt8173-rt5650-rt5676"
- mediatek,audio-codec: the phandles of rt5650 and rt5676 codecs
			and of the hdmi encoder node
- mediatek,platform: the phandle of MT8173 ASoC platform

Example:

	sound {
		compatible = "mediatek,mt8173-rt5650-rt5676";
		mediatek,audio-codec = <&rt5650 &rt5676>;
		mediatek,audio-codec = <&rt5650 &rt5676 &hdmi0>;
		mediatek,platform = <&afe>;
	};
+1 −0
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ config SND_SOC_MT8173_RT5650_RT5676
	depends on SND_SOC_MEDIATEK && I2C
	select SND_SOC_RT5645
	select SND_SOC_RT5677
	select SND_SOC_HDMI_CODEC
	help
	  This adds ASoC driver for Mediatek MT8173 boards
	  with the RT5650 and RT5676 codecs.
+27 −0
Original line number Diff line number Diff line
@@ -134,7 +134,9 @@ static struct snd_soc_dai_link_component mt8173_rt5650_rt5676_codecs[] = {
enum {
	DAI_LINK_PLAYBACK,
	DAI_LINK_CAPTURE,
	DAI_LINK_HDMI,
	DAI_LINK_CODEC_I2S,
	DAI_LINK_HDMI_I2S,
	DAI_LINK_INTERCODEC
};

@@ -161,6 +163,16 @@ static struct snd_soc_dai_link mt8173_rt5650_rt5676_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] = {
@@ -177,6 +189,13 @@ static struct snd_soc_dai_link mt8173_rt5650_rt5676_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,
	},
	/* rt5676 <-> rt5650 intercodec link: Sets rt5676 I2S2 as master */
	[DAI_LINK_INTERCODEC] = {
		.name = "rt5650_rt5676 intercodec",
@@ -251,6 +270,14 @@ static int mt8173_rt5650_rt5676_dev_probe(struct platform_device *pdev)
	mt8173_rt5650_rt5676_dais[DAI_LINK_INTERCODEC].codec_of_node =
		mt8173_rt5650_rt5676_codecs[1].of_node;

	mt8173_rt5650_rt5676_dais[DAI_LINK_HDMI_I2S].codec_of_node =
		of_parse_phandle(pdev->dev.of_node, "mediatek,audio-codec", 2);
	if (!mt8173_rt5650_rt5676_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);