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

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
MT8173 with RT5650 CODECS MT8173 with RT5650 CODECS and HDMI via I2S
Required properties: Required properties:
- compatible : "mediatek,mt8173-rt5650" - compatible : "mediatek,mt8173-rt5650"
- mediatek,audio-codec: the phandles of rt5650 codecs - mediatek,audio-codec: the phandles of rt5650 codecs
and of the hdmi encoder node
- mediatek,platform: the phandle of MT8173 ASoC platform - mediatek,platform: the phandle of MT8173 ASoC platform
Optional subnodes: Optional subnodes:
...@@ -20,7 +21,7 @@ Example: ...@@ -20,7 +21,7 @@ Example:
sound { sound {
compatible = "mediatek,mt8173-rt5650"; compatible = "mediatek,mt8173-rt5650";
mediatek,audio-codec = <&rt5650>; mediatek,audio-codec = <&rt5650 &hdmi0>;
mediatek,platform = <&afe>; mediatek,platform = <&afe>;
mediatek,mclk = <0>; mediatek,mclk = <0>;
codec-capture { codec-capture {
......
...@@ -46,6 +46,7 @@ config SND_SOC_MT8173_RT5650 ...@@ -46,6 +46,7 @@ config SND_SOC_MT8173_RT5650
tristate "ASoC Audio driver for MT8173 with RT5650 codec" tristate "ASoC Audio driver for MT8173 with RT5650 codec"
depends on SND_SOC_MT8173 && I2C depends on SND_SOC_MT8173 && I2C
select SND_SOC_RT5645 select SND_SOC_RT5645
select SND_SOC_HDMI_CODEC
help help
This adds ASoC driver for Mediatek MT8173 boards This adds ASoC driver for Mediatek MT8173 boards
with the RT5650 audio codec. with the RT5650 audio codec.
......
...@@ -169,7 +169,9 @@ static struct snd_soc_dai_link_component mt8173_rt5650_codecs[] = { ...@@ -169,7 +169,9 @@ static struct snd_soc_dai_link_component mt8173_rt5650_codecs[] = {
enum { enum {
DAI_LINK_PLAYBACK, DAI_LINK_PLAYBACK,
DAI_LINK_CAPTURE, DAI_LINK_CAPTURE,
DAI_LINK_HDMI,
DAI_LINK_CODEC_I2S, DAI_LINK_CODEC_I2S,
DAI_LINK_HDMI_I2S,
}; };
/* Digital audio interface glue - connects codec <---> CPU */ /* Digital audio interface glue - connects codec <---> CPU */
...@@ -195,6 +197,16 @@ static struct snd_soc_dai_link mt8173_rt5650_dais[] = { ...@@ -195,6 +197,16 @@ static struct snd_soc_dai_link mt8173_rt5650_dais[] = {
.dynamic = 1, .dynamic = 1,
.dpcm_capture = 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 */ /* Back End DAI links */
[DAI_LINK_CODEC_I2S] = { [DAI_LINK_CODEC_I2S] = {
.name = "Codec", .name = "Codec",
...@@ -210,6 +222,13 @@ static struct snd_soc_dai_link mt8173_rt5650_dais[] = { ...@@ -210,6 +222,13 @@ static struct snd_soc_dai_link mt8173_rt5650_dais[] = {
.dpcm_playback = 1, .dpcm_playback = 1,
.dpcm_capture = 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 = { static struct snd_soc_card mt8173_rt5650_card = {
...@@ -284,6 +303,13 @@ static int mt8173_rt5650_dev_probe(struct platform_device *pdev) ...@@ -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; card->dev = &pdev->dev;
platform_set_drvdata(pdev, card); platform_set_drvdata(pdev, card);
......
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