From f70575805708cabdedea7498aaa3f710fde4d920 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 31 Jan 2024 03:29:01 +0000
Subject: [PATCH] add lvds1024*800

---
 kernel/sound/soc/rockchip/rockchip_hdmi.c |   31 ++++++++++++++++++++++++-------
 1 files changed, 24 insertions(+), 7 deletions(-)

diff --git a/kernel/sound/soc/rockchip/rockchip_hdmi.c b/kernel/sound/soc/rockchip/rockchip_hdmi.c
index 69ff54c..5ce1995 100644
--- a/kernel/sound/soc/rockchip/rockchip_hdmi.c
+++ b/kernel/sound/soc/rockchip/rockchip_hdmi.c
@@ -57,7 +57,7 @@
 
 static int rk_dailink_init(struct snd_soc_pcm_runtime *rtd)
 {
-	struct snd_soc_dai *codec_dai = rtd->codec_dai;
+	struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0);
 	struct snd_soc_card *card = rtd->card;
 	struct rk_hdmi_data *rk_data = snd_soc_card_get_drvdata(rtd->card);
 	struct device *dev = rtd->card->dev;
@@ -104,9 +104,9 @@
 static int rk_hdmi_hw_params(struct snd_pcm_substream *substream,
 				struct snd_pcm_hw_params *params)
 {
-	struct snd_soc_pcm_runtime *rtd = substream->private_data;
-	struct snd_soc_dai *codec_dai = rtd->codec_dai;
-	struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
+	struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream);
+	struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0);
+	struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
 	struct rk_hdmi_data *rk_data = snd_soc_card_get_drvdata(rtd->card);
 	unsigned int mclk;
 	int ret;
@@ -133,7 +133,7 @@
 
 }
 
-static struct snd_soc_ops rk_ops = {
+static const struct snd_soc_ops rk_ops = {
 	.hw_params = rk_hdmi_hw_params,
 };
 
@@ -172,6 +172,8 @@
 {
 	struct device_node *np = pdev->dev.of_node;
 	struct snd_soc_dai_link_component *codecs;
+	struct snd_soc_dai_link_component *platforms;
+	struct snd_soc_dai_link_component *cpus;
 	struct of_phandle_args args;
 	struct device_node *cpu_np;
 	struct rk_hdmi_data *rk_data;
@@ -183,9 +185,21 @@
 	if (!rk_data)
 		return -ENOMEM;
 
+	cpus = devm_kzalloc(&pdev->dev, sizeof(*cpus), GFP_KERNEL);
+	if (!cpus)
+		return -ENOMEM;
+
+	platforms = devm_kzalloc(&pdev->dev, sizeof(*platforms), GFP_KERNEL);
+	if (!platforms)
+		return -ENOMEM;
+
 	rk_data->card.dev = &pdev->dev;
 	rk_data->dai.init = &rk_dailink_init;
 	rk_data->dai.ops = &rk_ops;
+	rk_data->dai.cpus = cpus;
+	rk_data->dai.platforms = platforms;
+	rk_data->dai.num_cpus = 1;
+	rk_data->dai.num_platforms = 1;
 	/* Parse the card name from DT */
 	ret = snd_soc_of_parse_card_name(&rk_data->card, "rockchip,card-name");
 	if (ret < 0)
@@ -213,6 +227,9 @@
 
 	codecs = devm_kcalloc(&pdev->dev, idx,
 			      sizeof(*codecs), GFP_KERNEL);
+	if (!codecs)
+		return -ENOMEM;
+
 	rk_data->dai.codecs = codecs;
 	rk_data->dai.num_codecs = idx;
 	idx = 0;
@@ -245,8 +262,8 @@
 	rk_data->jack_det =
 		of_property_read_bool(np, "rockchip,jack-det");
 
-	rk_data->dai.cpu_of_node = cpu_np;
-	rk_data->dai.platform_of_node = cpu_np;
+	rk_data->dai.cpus->of_node = cpu_np;
+	rk_data->dai.platforms->of_node = cpu_np;
 	of_node_put(cpu_np);
 
 	rk_data->hdmi_jack_pin.pin = rk_data->card.name;

--
Gitblit v1.6.2