forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-31 f70575805708cabdedea7498aaa3f710fde4d920
kernel/sound/soc/samsung/speyside.c
....@@ -1,13 +1,8 @@
1
-/*
2
- * Speyside audio support
3
- *
4
- * Copyright 2011 Wolfson Microelectronics
5
- *
6
- * This program is free software; you can redistribute it and/or modify it
7
- * under the terms of the GNU General Public License as published by the
8
- * Free Software Foundation; either version 2 of the License, or (at your
9
- * option) any later version.
10
- */
1
+// SPDX-License-Identifier: GPL-2.0+
2
+//
3
+// Speyside audio support
4
+//
5
+// Copyright 2011 Wolfson Microelectronics
116
127 #include <sound/soc.h>
138 #include <sound/soc-dapm.h>
....@@ -29,8 +24,8 @@
2924 struct snd_soc_dai *codec_dai;
3025 int ret;
3126
32
- rtd = snd_soc_get_pcm_runtime(card, card->dai_link[1].name);
33
- codec_dai = rtd->codec_dai;
27
+ rtd = snd_soc_get_pcm_runtime(card, &card->dai_link[1]);
28
+ codec_dai = asoc_rtd_to_codec(rtd, 0);
3429
3530 if (dapm->dev != codec_dai->dev)
3631 return 0;
....@@ -65,8 +60,8 @@
6560 struct snd_soc_dai *codec_dai;
6661 int ret;
6762
68
- rtd = snd_soc_get_pcm_runtime(card, card->dai_link[1].name);
69
- codec_dai = rtd->codec_dai;
63
+ rtd = snd_soc_get_pcm_runtime(card, &card->dai_link[1]);
64
+ codec_dai = asoc_rtd_to_codec(rtd, 0);
7065
7166 if (dapm->dev != codec_dai->dev)
7267 return 0;
....@@ -136,7 +131,7 @@
136131
137132 static int speyside_wm0010_init(struct snd_soc_pcm_runtime *rtd)
138133 {
139
- struct snd_soc_dai *dai = rtd->codec_dai;
134
+ struct snd_soc_dai *dai = asoc_rtd_to_codec(rtd, 0);
140135 int ret;
141136
142137 ret = snd_soc_dai_set_sysclk(dai, 0, MCLK_AUDIO_RATE, 0);
....@@ -148,7 +143,7 @@
148143
149144 static int speyside_wm8996_init(struct snd_soc_pcm_runtime *rtd)
150145 {
151
- struct snd_soc_dai *dai = rtd->codec_dai;
146
+ struct snd_soc_dai *dai = asoc_rtd_to_codec(rtd, 0);
152147 struct snd_soc_component *component = dai->component;
153148 int ret;
154149
....@@ -194,39 +189,45 @@
194189 .channels_max = 2,
195190 };
196191
192
+SND_SOC_DAILINK_DEFS(cpu_dsp,
193
+ DAILINK_COMP_ARRAY(COMP_CPU("samsung-i2s.0")),
194
+ DAILINK_COMP_ARRAY(COMP_CODEC("spi0.0", "wm0010-sdi1")),
195
+ DAILINK_COMP_ARRAY(COMP_PLATFORM("samsung-i2s.0")));
196
+
197
+SND_SOC_DAILINK_DEFS(dsp_codec,
198
+ DAILINK_COMP_ARRAY(COMP_CPU("wm0010-sdi2")),
199
+ DAILINK_COMP_ARRAY(COMP_CODEC("wm8996.1-001a", "wm8996-aif1")));
200
+
201
+SND_SOC_DAILINK_DEFS(baseband,
202
+ DAILINK_COMP_ARRAY(COMP_CPU("wm8996-aif2")),
203
+ DAILINK_COMP_ARRAY(COMP_CODEC("wm1250-ev1.1-0027", "wm1250-ev1")));
204
+
197205 static struct snd_soc_dai_link speyside_dai[] = {
198206 {
199207 .name = "CPU-DSP",
200208 .stream_name = "CPU-DSP",
201
- .cpu_dai_name = "samsung-i2s.0",
202
- .codec_dai_name = "wm0010-sdi1",
203
- .platform_name = "samsung-i2s.0",
204
- .codec_name = "spi0.0",
205209 .init = speyside_wm0010_init,
206210 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
207211 | SND_SOC_DAIFMT_CBM_CFM,
212
+ SND_SOC_DAILINK_REG(cpu_dsp),
208213 },
209214 {
210215 .name = "DSP-CODEC",
211216 .stream_name = "DSP-CODEC",
212
- .cpu_dai_name = "wm0010-sdi2",
213
- .codec_dai_name = "wm8996-aif1",
214
- .codec_name = "wm8996.1-001a",
215217 .init = speyside_wm8996_init,
216218 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
217219 | SND_SOC_DAIFMT_CBM_CFM,
218220 .params = &dsp_codec_params,
219221 .ignore_suspend = 1,
222
+ SND_SOC_DAILINK_REG(dsp_codec),
220223 },
221224 {
222225 .name = "Baseband",
223226 .stream_name = "Baseband",
224
- .cpu_dai_name = "wm8996-aif2",
225
- .codec_dai_name = "wm1250-ev1",
226
- .codec_name = "wm1250-ev1.1-0027",
227227 .dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF
228228 | SND_SOC_DAIFMT_CBM_CFM,
229229 .ignore_suspend = 1,
230
+ SND_SOC_DAILINK_REG(baseband),
230231 },
231232 };
232233
....@@ -239,15 +240,14 @@
239240
240241 static struct snd_soc_aux_dev speyside_aux_dev[] = {
241242 {
242
- .name = "wm9081",
243
- .codec_name = "wm9081.1-006c",
243
+ .dlc = COMP_AUX("wm9081.1-006c"),
244244 .init = speyside_wm9081_init,
245245 },
246246 };
247247
248248 static struct snd_soc_codec_conf speyside_codec_conf[] = {
249249 {
250
- .dev_name = "wm9081.1-006c",
250
+ .dlc = COMP_CODEC_CONF("wm9081.1-006c"),
251251 .name_prefix = "Sub",
252252 },
253253 };
....@@ -331,8 +331,7 @@
331331
332332 ret = devm_snd_soc_register_card(&pdev->dev, card);
333333 if (ret)
334
- dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n",
335
- ret);
334
+ dev_err_probe(&pdev->dev, ret, "snd_soc_register_card() failed\n");
336335
337336 return ret;
338337 }