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

Commit 97e1145a authored by PC Liao's avatar PC Liao Committed by Mark Brown
Browse files

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



This patch adds HDMI audio output support to the MT8173 RT5650 machine
driver.

Signed-off-by: default avatarPC Liao <pc.liao@mediatek.com>
Signed-off-by: default avatarPhilipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 25d01dc6
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
MT8173 with RT5650 CODECS
MT8173 with RT5650 CODECS and HDMI via I2S

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

Optional subnodes:
@@ -20,7 +21,7 @@ Example:

	sound {
		compatible = "mediatek,mt8173-rt5650";
		mediatek,audio-codec = <&rt5650>;
		mediatek,audio-codec = <&rt5650 &hdmi0>;
		mediatek,platform = <&afe>;
		mediatek,mclk = <0>;
		codec-capture {
+1 −0
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ config SND_SOC_MT8173_RT5650
	tristate "ASoC Audio driver for MT8173 with RT5650 codec"
	depends on SND_SOC_MT8173 && I2C
	select SND_SOC_RT5645
	select SND_SOC_HDMI_CODEC
	help
	  This adds ASoC driver for Mediatek MT8173 boards
	  with the RT5650 audio codec.
+26 −0
Original line number Diff line number Diff line
@@ -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);