aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs
diff options
context:
space:
mode:
Diffstat (limited to 'sound/soc/codecs')
-rw-r--r--sound/soc/codecs/wm2200.c2
-rw-r--r--sound/soc/codecs/wm5102.c2
-rw-r--r--sound/soc/codecs/wm_adsp.c26
-rw-r--r--sound/soc/codecs/wm_adsp.h3
4 files changed, 23 insertions, 10 deletions
diff --git a/sound/soc/codecs/wm2200.c b/sound/soc/codecs/wm2200.c
index ddc98f02ecbd..57ba315d0c84 100644
--- a/sound/soc/codecs/wm2200.c
+++ b/sound/soc/codecs/wm2200.c
@@ -1565,7 +1565,7 @@ static int wm2200_probe(struct snd_soc_codec *codec)
1565 return ret; 1565 return ret;
1566 } 1566 }
1567 1567
1568 ret = snd_soc_add_codec_controls(codec, wm_adsp_fw_controls, 2); 1568 ret = snd_soc_add_codec_controls(codec, wm_adsp1_fw_controls, 2);
1569 if (ret != 0) 1569 if (ret != 0)
1570 return ret; 1570 return ret;
1571 1571
diff --git a/sound/soc/codecs/wm5102.c b/sound/soc/codecs/wm5102.c
index d1b43ebec087..cb03cc448da6 100644
--- a/sound/soc/codecs/wm5102.c
+++ b/sound/soc/codecs/wm5102.c
@@ -1572,7 +1572,7 @@ static int wm5102_codec_probe(struct snd_soc_codec *codec)
1572 if (ret != 0) 1572 if (ret != 0)
1573 return ret; 1573 return ret;
1574 1574
1575 ret = snd_soc_add_codec_controls(codec, wm_adsp_fw_controls, 2); 1575 ret = snd_soc_add_codec_controls(codec, wm_adsp2_fw_controls, 2);
1576 if (ret != 0) 1576 if (ret != 0)
1577 return ret; 1577 return ret;
1578 1578
diff --git a/sound/soc/codecs/wm_adsp.c b/sound/soc/codecs/wm_adsp.c
index 3a481fd1bf9a..bc03baef39fa 100644
--- a/sound/soc/codecs/wm_adsp.c
+++ b/sound/soc/codecs/wm_adsp.c
@@ -247,7 +247,18 @@ static const struct soc_enum wm_adsp_fw_enum[] = {
247 SOC_ENUM_SINGLE(0, 3, ARRAY_SIZE(wm_adsp_fw_text), wm_adsp_fw_text), 247 SOC_ENUM_SINGLE(0, 3, ARRAY_SIZE(wm_adsp_fw_text), wm_adsp_fw_text),
248}; 248};
249 249
250static const struct soc_enum wm_adsp_rate_enum[] = { 250const struct snd_kcontrol_new wm_adsp1_fw_controls[] = {
251 SOC_ENUM_EXT("DSP1 Firmware", wm_adsp_fw_enum[0],
252 wm_adsp_fw_get, wm_adsp_fw_put),
253 SOC_ENUM_EXT("DSP2 Firmware", wm_adsp_fw_enum[1],
254 wm_adsp_fw_get, wm_adsp_fw_put),
255 SOC_ENUM_EXT("DSP3 Firmware", wm_adsp_fw_enum[2],
256 wm_adsp_fw_get, wm_adsp_fw_put),
257};
258EXPORT_SYMBOL_GPL(wm_adsp1_fw_controls);
259
260#if IS_ENABLED(CONFIG_SND_SOC_ARIZONA)
261static const struct soc_enum wm_adsp2_rate_enum[] = {
251 SOC_VALUE_ENUM_SINGLE(ARIZONA_DSP1_CONTROL_1, 262 SOC_VALUE_ENUM_SINGLE(ARIZONA_DSP1_CONTROL_1,
252 ARIZONA_DSP1_RATE_SHIFT, 0xf, 263 ARIZONA_DSP1_RATE_SHIFT, 0xf,
253 ARIZONA_RATE_ENUM_SIZE, 264 ARIZONA_RATE_ENUM_SIZE,
@@ -266,21 +277,22 @@ static const struct soc_enum wm_adsp_rate_enum[] = {
266 arizona_rate_text, arizona_rate_val), 277 arizona_rate_text, arizona_rate_val),
267}; 278};
268 279
269const struct snd_kcontrol_new wm_adsp_fw_controls[] = { 280const struct snd_kcontrol_new wm_adsp2_fw_controls[] = {
270 SOC_ENUM_EXT("DSP1 Firmware", wm_adsp_fw_enum[0], 281 SOC_ENUM_EXT("DSP1 Firmware", wm_adsp_fw_enum[0],
271 wm_adsp_fw_get, wm_adsp_fw_put), 282 wm_adsp_fw_get, wm_adsp_fw_put),
272 SOC_ENUM("DSP1 Rate", wm_adsp_rate_enum[0]), 283 SOC_ENUM("DSP1 Rate", wm_adsp2_rate_enum[0]),
273 SOC_ENUM_EXT("DSP2 Firmware", wm_adsp_fw_enum[1], 284 SOC_ENUM_EXT("DSP2 Firmware", wm_adsp_fw_enum[1],
274 wm_adsp_fw_get, wm_adsp_fw_put), 285 wm_adsp_fw_get, wm_adsp_fw_put),
275 SOC_ENUM("DSP2 Rate", wm_adsp_rate_enum[1]), 286 SOC_ENUM("DSP2 Rate", wm_adsp2_rate_enum[1]),
276 SOC_ENUM_EXT("DSP3 Firmware", wm_adsp_fw_enum[2], 287 SOC_ENUM_EXT("DSP3 Firmware", wm_adsp_fw_enum[2],
277 wm_adsp_fw_get, wm_adsp_fw_put), 288 wm_adsp_fw_get, wm_adsp_fw_put),
278 SOC_ENUM("DSP3 Rate", wm_adsp_rate_enum[2]), 289 SOC_ENUM("DSP3 Rate", wm_adsp2_rate_enum[2]),
279 SOC_ENUM_EXT("DSP4 Firmware", wm_adsp_fw_enum[3], 290 SOC_ENUM_EXT("DSP4 Firmware", wm_adsp_fw_enum[3],
280 wm_adsp_fw_get, wm_adsp_fw_put), 291 wm_adsp_fw_get, wm_adsp_fw_put),
281 SOC_ENUM("DSP4 Rate", wm_adsp_rate_enum[3]), 292 SOC_ENUM("DSP4 Rate", wm_adsp2_rate_enum[3]),
282}; 293};
283EXPORT_SYMBOL_GPL(wm_adsp_fw_controls); 294EXPORT_SYMBOL_GPL(wm_adsp2_fw_controls);
295#endif
284 296
285static struct wm_adsp_region const *wm_adsp_find_region(struct wm_adsp *dsp, 297static struct wm_adsp_region const *wm_adsp_find_region(struct wm_adsp *dsp,
286 int type) 298 int type)
diff --git a/sound/soc/codecs/wm_adsp.h b/sound/soc/codecs/wm_adsp.h
index cb8871a3ec00..9f90c9fea842 100644
--- a/sound/soc/codecs/wm_adsp.h
+++ b/sound/soc/codecs/wm_adsp.h
@@ -65,7 +65,8 @@ struct wm_adsp {
65 .shift = num, .event = wm_adsp2_event, \ 65 .shift = num, .event = wm_adsp2_event, \
66 .event_flags = SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD } 66 .event_flags = SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD }
67 67
68extern const struct snd_kcontrol_new wm_adsp_fw_controls[]; 68extern const struct snd_kcontrol_new wm_adsp1_fw_controls[];
69extern const struct snd_kcontrol_new wm_adsp2_fw_controls[];
69 70
70int wm_adsp1_init(struct wm_adsp *adsp); 71int wm_adsp1_init(struct wm_adsp *adsp);
71int wm_adsp2_init(struct wm_adsp *adsp, bool dvfs); 72int wm_adsp2_init(struct wm_adsp *adsp, bool dvfs);