From b22da3d8526a935aa31e086e63f60ff3246cb61c Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Sat, 09 Dec 2023 07:24:11 +0000
Subject: [PATCH] add stmac read mac form eeprom
---
kernel/sound/soc/rockchip/rockchip_multicodecs.c | 30 +++++++++++++++++++++---------
1 files changed, 21 insertions(+), 9 deletions(-)
diff --git a/kernel/sound/soc/rockchip/rockchip_multicodecs.c b/kernel/sound/soc/rockchip/rockchip_multicodecs.c
index 8b1cb5f..f7982ad 100644
--- a/kernel/sound/soc/rockchip/rockchip_multicodecs.c
+++ b/kernel/sound/soc/rockchip/rockchip_multicodecs.c
@@ -336,8 +336,8 @@
static int rk_multicodecs_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 *cpu_dai = rtd->cpu_dai;
+ struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream);
+ struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
struct snd_soc_dai *codec_dai;
struct multicodecs_data *mc_data = snd_soc_card_get_drvdata(rtd->card);
unsigned int mclk;
@@ -345,8 +345,7 @@
mclk = params_rate(params) * mc_data->mclk_fs;
- for (i = 0; i < rtd->num_codecs; i++) {
- codec_dai = rtd->codec_dais[i];
+ for_each_rtd_codec_dais(rtd, i, codec_dai) {
ret = snd_soc_dai_set_sysclk(codec_dai, substream->stream, mclk,
SND_SOC_CLOCK_IN);
if (ret && ret != -ENOTSUPP) {
@@ -437,8 +436,7 @@
int i;
/* set jack for the first successful one */
- for (i = 0; i < rtd->num_codecs; i++) {
- codec_dai = rtd->codec_dais[i];
+ for_each_rtd_codec_dais(rtd, i, codec_dai) {
ret = snd_soc_component_set_jack(codec_dai->component,
jack_headset, NULL);
if (ret >= 0)
@@ -584,6 +582,8 @@
struct snd_soc_card *card;
struct device_node *np = pdev->dev.of_node;
struct snd_soc_dai_link *link;
+ struct snd_soc_dai_link_component *cpus;
+ struct snd_soc_dai_link_component *platforms;
struct snd_soc_dai_link_component *codecs;
struct multicodecs_data *mc_data;
struct of_phandle_args args;
@@ -604,6 +604,14 @@
if (!mc_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;
+
card = &mc_data->snd_card;
card->dev = &pdev->dev;
@@ -617,6 +625,10 @@
link->stream_name = link->name;
link->init = rk_dailink_init;
link->ops = &rk_ops;
+ link->cpus = cpus;
+ link->platforms = platforms;
+ link->num_cpus = 1;
+ link->num_platforms = 1;
link->ignore_pmdown_time = 1;
card->dai_link = link;
@@ -673,11 +685,11 @@
/* Only reference the codecs[0].of_node which maybe as master. */
rk_multicodecs_parse_daifmt(np, codecs[0].of_node, mc_data, prefix);
- link->cpu_of_node = of_parse_phandle(np, "rockchip,cpu", 0);
- if (!link->cpu_of_node)
+ link->cpus->of_node = of_parse_phandle(np, "rockchip,cpu", 0);
+ if (!link->cpus->of_node)
return -ENODEV;
- link->platform_of_node = link->cpu_of_node;
+ link->platforms->of_node = link->cpus->of_node;
mc_data->mclk_fs = DEFAULT_MCLK_FS;
if (!of_property_read_u32(np, "rockchip,mclk-fs", &val))
--
Gitblit v1.6.2