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