forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-31 f70575805708cabdedea7498aaa3f710fde4d920
kernel/sound/soc/rockchip/rockchip_hdmi.c
....@@ -57,7 +57,7 @@
5757
5858 static int rk_dailink_init(struct snd_soc_pcm_runtime *rtd)
5959 {
60
- struct snd_soc_dai *codec_dai = rtd->codec_dai;
60
+ struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0);
6161 struct snd_soc_card *card = rtd->card;
6262 struct rk_hdmi_data *rk_data = snd_soc_card_get_drvdata(rtd->card);
6363 struct device *dev = rtd->card->dev;
....@@ -104,9 +104,9 @@
104104 static int rk_hdmi_hw_params(struct snd_pcm_substream *substream,
105105 struct snd_pcm_hw_params *params)
106106 {
107
- struct snd_soc_pcm_runtime *rtd = substream->private_data;
108
- struct snd_soc_dai *codec_dai = rtd->codec_dai;
109
- struct snd_soc_dai *cpu_dai = rtd->cpu_dai;
107
+ struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream);
108
+ struct snd_soc_dai *codec_dai = asoc_rtd_to_codec(rtd, 0);
109
+ struct snd_soc_dai *cpu_dai = asoc_rtd_to_cpu(rtd, 0);
110110 struct rk_hdmi_data *rk_data = snd_soc_card_get_drvdata(rtd->card);
111111 unsigned int mclk;
112112 int ret;
....@@ -133,7 +133,7 @@
133133
134134 }
135135
136
-static struct snd_soc_ops rk_ops = {
136
+static const struct snd_soc_ops rk_ops = {
137137 .hw_params = rk_hdmi_hw_params,
138138 };
139139
....@@ -172,6 +172,8 @@
172172 {
173173 struct device_node *np = pdev->dev.of_node;
174174 struct snd_soc_dai_link_component *codecs;
175
+ struct snd_soc_dai_link_component *platforms;
176
+ struct snd_soc_dai_link_component *cpus;
175177 struct of_phandle_args args;
176178 struct device_node *cpu_np;
177179 struct rk_hdmi_data *rk_data;
....@@ -183,9 +185,21 @@
183185 if (!rk_data)
184186 return -ENOMEM;
185187
188
+ cpus = devm_kzalloc(&pdev->dev, sizeof(*cpus), GFP_KERNEL);
189
+ if (!cpus)
190
+ return -ENOMEM;
191
+
192
+ platforms = devm_kzalloc(&pdev->dev, sizeof(*platforms), GFP_KERNEL);
193
+ if (!platforms)
194
+ return -ENOMEM;
195
+
186196 rk_data->card.dev = &pdev->dev;
187197 rk_data->dai.init = &rk_dailink_init;
188198 rk_data->dai.ops = &rk_ops;
199
+ rk_data->dai.cpus = cpus;
200
+ rk_data->dai.platforms = platforms;
201
+ rk_data->dai.num_cpus = 1;
202
+ rk_data->dai.num_platforms = 1;
189203 /* Parse the card name from DT */
190204 ret = snd_soc_of_parse_card_name(&rk_data->card, "rockchip,card-name");
191205 if (ret < 0)
....@@ -248,8 +262,8 @@
248262 rk_data->jack_det =
249263 of_property_read_bool(np, "rockchip,jack-det");
250264
251
- rk_data->dai.cpu_of_node = cpu_np;
252
- rk_data->dai.platform_of_node = cpu_np;
265
+ rk_data->dai.cpus->of_node = cpu_np;
266
+ rk_data->dai.platforms->of_node = cpu_np;
253267 of_node_put(cpu_np);
254268
255269 rk_data->hdmi_jack_pin.pin = rk_data->card.name;