Skip to content

Commit 2e3bc94

Browse files
bardliaobroonie
authored andcommitted
ASoC: Intel: sof_sdw: use .controls/.widgets to add controls/widgets
sof_sdw_rtd_init() will add the controls and widgets if we set them in the codec_info. Move the additions from .rtd_init callback to sof_sdw_rtd_init(). Reviewed-by: Péter Ujfalusi <peter.ujfalusi@linux.intel.com> Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com> Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com> Link: https://lore.kernel.org/r/20240509163418.67746-17-pierre-louis.bossart@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 70d470f commit 2e3bc94

12 files changed

+112
-257
lines changed

sound/soc/intel/boards/sof_sdw.c

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -515,6 +515,50 @@ static struct snd_soc_dai_link_component platform_component[] = {
515515
}
516516
};
517517

518+
static const struct snd_soc_dapm_widget generic_dmic_widgets[] = {
519+
SND_SOC_DAPM_MIC("DMIC", NULL),
520+
};
521+
522+
static const struct snd_soc_dapm_widget generic_jack_widgets[] = {
523+
SND_SOC_DAPM_HP("Headphone", NULL),
524+
SND_SOC_DAPM_MIC("Headset Mic", NULL),
525+
};
526+
527+
static const struct snd_kcontrol_new generic_jack_controls[] = {
528+
SOC_DAPM_PIN_SWITCH("Headphone"),
529+
SOC_DAPM_PIN_SWITCH("Headset Mic"),
530+
};
531+
532+
static const struct snd_soc_dapm_widget generic_spk_widgets[] = {
533+
SND_SOC_DAPM_SPK("Speaker", NULL),
534+
};
535+
536+
static const struct snd_kcontrol_new generic_spk_controls[] = {
537+
SOC_DAPM_PIN_SWITCH("Speaker"),
538+
};
539+
540+
static const struct snd_soc_dapm_widget maxim_widgets[] = {
541+
SND_SOC_DAPM_SPK("Left Spk", NULL),
542+
SND_SOC_DAPM_SPK("Right Spk", NULL),
543+
};
544+
545+
static const struct snd_kcontrol_new maxim_controls[] = {
546+
SOC_DAPM_PIN_SWITCH("Left Spk"),
547+
SOC_DAPM_PIN_SWITCH("Right Spk"),
548+
};
549+
550+
static const struct snd_soc_dapm_widget rt700_widgets[] = {
551+
SND_SOC_DAPM_HP("Headphones", NULL),
552+
SND_SOC_DAPM_MIC("AMIC", NULL),
553+
SND_SOC_DAPM_SPK("Speaker", NULL),
554+
};
555+
556+
static const struct snd_kcontrol_new rt700_controls[] = {
557+
SOC_DAPM_PIN_SWITCH("Headphones"),
558+
SOC_DAPM_PIN_SWITCH("AMIC"),
559+
SOC_DAPM_PIN_SWITCH("Speaker"),
560+
};
561+
518562
struct snd_soc_dai *get_codec_dai_by_name(struct snd_soc_pcm_runtime *rtd,
519563
const char * const dai_name[],
520564
int num_dais)
@@ -681,6 +725,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
681725
.dai_type = SOF_SDW_DAI_TYPE_JACK,
682726
.dailink = {SDW_JACK_OUT_DAI_ID, SDW_JACK_IN_DAI_ID},
683727
.rtd_init = rt700_rtd_init,
728+
.controls = rt700_controls,
729+
.num_controls = ARRAY_SIZE(rt700_controls),
730+
.widgets = rt700_widgets,
731+
.num_widgets = ARRAY_SIZE(rt700_widgets),
684732
},
685733
},
686734
.dai_num = 1,
@@ -697,6 +745,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
697745
.init = sof_sdw_rt_sdca_jack_init,
698746
.exit = sof_sdw_rt_sdca_jack_exit,
699747
.rtd_init = rt_sdca_jack_rtd_init,
748+
.controls = generic_jack_controls,
749+
.num_controls = ARRAY_SIZE(generic_jack_controls),
750+
.widgets = generic_jack_widgets,
751+
.num_widgets = ARRAY_SIZE(generic_jack_widgets),
700752
},
701753
},
702754
.dai_num = 1,
@@ -713,6 +765,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
713765
.init = sof_sdw_rt711_init,
714766
.exit = sof_sdw_rt711_exit,
715767
.rtd_init = rt711_rtd_init,
768+
.controls = generic_jack_controls,
769+
.num_controls = ARRAY_SIZE(generic_jack_controls),
770+
.widgets = generic_jack_widgets,
771+
.num_widgets = ARRAY_SIZE(generic_jack_widgets),
716772
},
717773
},
718774
.dai_num = 1,
@@ -729,6 +785,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
729785
.init = sof_sdw_rt_sdca_jack_init,
730786
.exit = sof_sdw_rt_sdca_jack_exit,
731787
.rtd_init = rt_sdca_jack_rtd_init,
788+
.controls = generic_jack_controls,
789+
.num_controls = ARRAY_SIZE(generic_jack_controls),
790+
.widgets = generic_jack_widgets,
791+
.num_widgets = ARRAY_SIZE(generic_jack_widgets),
732792
},
733793
{
734794
.direction = {true, false},
@@ -738,6 +798,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
738798
.init = sof_sdw_rt_amp_init,
739799
.exit = sof_sdw_rt_amp_exit,
740800
.rtd_init = rt712_spk_rtd_init,
801+
.controls = generic_spk_controls,
802+
.num_controls = ARRAY_SIZE(generic_spk_controls),
803+
.widgets = generic_spk_widgets,
804+
.num_widgets = ARRAY_SIZE(generic_spk_widgets),
741805
},
742806
},
743807
.dai_num = 2,
@@ -768,6 +832,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
768832
.init = sof_sdw_rt_sdca_jack_init,
769833
.exit = sof_sdw_rt_sdca_jack_exit,
770834
.rtd_init = rt_sdca_jack_rtd_init,
835+
.controls = generic_jack_controls,
836+
.num_controls = ARRAY_SIZE(generic_jack_controls),
837+
.widgets = generic_jack_widgets,
838+
.num_widgets = ARRAY_SIZE(generic_jack_widgets),
771839
},
772840
},
773841
.dai_num = 1,
@@ -798,6 +866,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
798866
.init = sof_sdw_rt_amp_init,
799867
.exit = sof_sdw_rt_amp_exit,
800868
.rtd_init = rt_amp_spk_rtd_init,
869+
.controls = generic_spk_controls,
870+
.num_controls = ARRAY_SIZE(generic_spk_controls),
871+
.widgets = generic_spk_widgets,
872+
.num_widgets = ARRAY_SIZE(generic_spk_widgets),
801873
},
802874
},
803875
.dai_num = 1,
@@ -814,6 +886,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
814886
.init = sof_sdw_rt_amp_init,
815887
.exit = sof_sdw_rt_amp_exit,
816888
.rtd_init = rt_amp_spk_rtd_init,
889+
.controls = generic_spk_controls,
890+
.num_controls = ARRAY_SIZE(generic_spk_controls),
891+
.widgets = generic_spk_widgets,
892+
.num_widgets = ARRAY_SIZE(generic_spk_widgets),
817893
},
818894
},
819895
.dai_num = 1,
@@ -829,6 +905,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
829905
.init = sof_sdw_rt_amp_init,
830906
.exit = sof_sdw_rt_amp_exit,
831907
.rtd_init = rt_amp_spk_rtd_init,
908+
.controls = generic_spk_controls,
909+
.num_controls = ARRAY_SIZE(generic_spk_controls),
910+
.widgets = generic_spk_widgets,
911+
.num_widgets = ARRAY_SIZE(generic_spk_widgets),
832912
},
833913
},
834914
.dai_num = 1,
@@ -905,6 +985,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
905985
.init = sof_sdw_rt_sdca_jack_init,
906986
.exit = sof_sdw_rt_sdca_jack_exit,
907987
.rtd_init = rt_sdca_jack_rtd_init,
988+
.controls = generic_jack_controls,
989+
.num_controls = ARRAY_SIZE(generic_jack_controls),
990+
.widgets = generic_jack_widgets,
991+
.num_widgets = ARRAY_SIZE(generic_jack_widgets),
908992
},
909993
{
910994
.direction = {true, false},
@@ -915,6 +999,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
915999
.init = sof_sdw_rt_amp_init,
9161000
.exit = sof_sdw_rt_amp_exit,
9171001
.rtd_init = rt722_spk_rtd_init,
1002+
.controls = generic_spk_controls,
1003+
.num_controls = ARRAY_SIZE(generic_spk_controls),
1004+
.widgets = generic_spk_widgets,
1005+
.num_widgets = ARRAY_SIZE(generic_spk_widgets),
9181006
},
9191007
{
9201008
.direction = {false, true},
@@ -936,6 +1024,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
9361024
.dailink = {SDW_AMP_OUT_DAI_ID, SDW_AMP_IN_DAI_ID},
9371025
.init = sof_sdw_maxim_init,
9381026
.rtd_init = maxim_spk_rtd_init,
1027+
.controls = maxim_controls,
1028+
.num_controls = ARRAY_SIZE(maxim_controls),
1029+
.widgets = maxim_widgets,
1030+
.num_widgets = ARRAY_SIZE(maxim_widgets),
9391031
},
9401032
},
9411033
.dai_num = 1,
@@ -950,6 +1042,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
9501042
.dailink = {SDW_AMP_OUT_DAI_ID, SDW_UNUSED_DAI_ID},
9511043
.init = sof_sdw_maxim_init,
9521044
.rtd_init = maxim_spk_rtd_init,
1045+
.controls = maxim_controls,
1046+
.num_controls = ARRAY_SIZE(maxim_controls),
1047+
.widgets = maxim_widgets,
1048+
.num_widgets = ARRAY_SIZE(maxim_widgets),
9531049
},
9541050
},
9551051
.dai_num = 1,
@@ -963,6 +1059,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
9631059
.dai_type = SOF_SDW_DAI_TYPE_JACK,
9641060
.dailink = {SDW_JACK_OUT_DAI_ID, SDW_JACK_IN_DAI_ID},
9651061
.rtd_init = rt5682_rtd_init,
1062+
.controls = generic_jack_controls,
1063+
.num_controls = ARRAY_SIZE(generic_jack_controls),
1064+
.widgets = generic_jack_widgets,
1065+
.num_widgets = ARRAY_SIZE(generic_jack_widgets),
9661066
},
9671067
},
9681068
.dai_num = 1,
@@ -977,6 +1077,8 @@ static struct sof_sdw_codec_info codec_info_list[] = {
9771077
.dailink = {SDW_AMP_OUT_DAI_ID, SDW_AMP_IN_DAI_ID},
9781078
.init = sof_sdw_cs_amp_init,
9791079
.rtd_init = cs_spk_rtd_init,
1080+
.widgets = generic_spk_widgets,
1081+
.num_widgets = ARRAY_SIZE(generic_spk_widgets),
9801082
},
9811083
},
9821084
.dai_num = 1,
@@ -990,6 +1092,10 @@ static struct sof_sdw_codec_info codec_info_list[] = {
9901092
.dai_type = SOF_SDW_DAI_TYPE_JACK,
9911093
.dailink = {SDW_JACK_OUT_DAI_ID, SDW_JACK_IN_DAI_ID},
9921094
.rtd_init = cs42l42_rtd_init,
1095+
.controls = generic_jack_controls,
1096+
.num_controls = ARRAY_SIZE(generic_jack_controls),
1097+
.widgets = generic_jack_widgets,
1098+
.num_widgets = ARRAY_SIZE(generic_jack_widgets),
9931099
},
9941100
},
9951101
.dai_num = 1,
@@ -1006,13 +1112,17 @@ static struct sof_sdw_codec_info codec_info_list[] = {
10061112
.dai_type = SOF_SDW_DAI_TYPE_JACK,
10071113
.dailink = {SDW_JACK_OUT_DAI_ID, SDW_UNUSED_DAI_ID},
10081114
.rtd_init = cs42l43_hs_rtd_init,
1115+
.widgets = generic_jack_widgets,
1116+
.num_widgets = ARRAY_SIZE(generic_jack_widgets),
10091117
},
10101118
{
10111119
.direction = {false, true},
10121120
.dai_name = "cs42l43-dp1",
10131121
.dai_type = SOF_SDW_DAI_TYPE_MIC,
10141122
.dailink = {SDW_UNUSED_DAI_ID, SDW_DMIC_DAI_ID},
10151123
.rtd_init = cs42l43_dmic_rtd_init,
1124+
.widgets = generic_dmic_widgets,
1125+
.num_widgets = ARRAY_SIZE(generic_dmic_widgets),
10161126
},
10171127
{
10181128
.direction = {false, true},
@@ -1027,6 +1137,8 @@ static struct sof_sdw_codec_info codec_info_list[] = {
10271137
.dailink = {SDW_AMP_OUT_DAI_ID, SDW_UNUSED_DAI_ID},
10281138
.init = sof_sdw_cs42l43_spk_init,
10291139
.rtd_init = cs42l43_spk_rtd_init,
1140+
.widgets = generic_spk_widgets,
1141+
.num_widgets = ARRAY_SIZE(generic_spk_widgets),
10301142
.quirk = SOF_CODEC_SPKR | SOF_SIDECAR_AMPS,
10311143
},
10321144
},

sound/soc/intel/boards/sof_sdw_cs42l42.c

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,6 @@
1717
#include <sound/jack.h>
1818
#include "sof_sdw_common.h"
1919

20-
static const struct snd_soc_dapm_widget generic_jack_widgets[] = {
21-
SND_SOC_DAPM_HP("Headphone", NULL),
22-
SND_SOC_DAPM_MIC("Headset Mic", NULL),
23-
};
24-
2520
static const struct snd_soc_dapm_route cs42l42_map[] = {
2621
/* HP jack connectors - unknown if we have jack detection */
2722
{"Headphone", NULL, "cs42l42 HP"},
@@ -30,11 +25,6 @@ static const struct snd_soc_dapm_route cs42l42_map[] = {
3025
{"cs42l42 HS", NULL, "Headset Mic"},
3126
};
3227

33-
static const struct snd_kcontrol_new generic_jack_controls[] = {
34-
SOC_DAPM_PIN_SWITCH("Headphone"),
35-
SOC_DAPM_PIN_SWITCH("Headset Mic"),
36-
};
37-
3828
static struct snd_soc_jack_pin cs42l42_jack_pins[] = {
3929
{
4030
.pin = "Headphone",
@@ -70,20 +60,6 @@ int cs42l42_rtd_init(struct snd_soc_pcm_runtime *rtd)
7060
if (!card->components)
7161
return -ENOMEM;
7262

73-
ret = snd_soc_add_card_controls(card, generic_jack_controls,
74-
ARRAY_SIZE(generic_jack_controls));
75-
if (ret) {
76-
dev_err(card->dev, "cs42l42 control addition failed: %d\n", ret);
77-
return ret;
78-
}
79-
80-
ret = snd_soc_dapm_new_controls(&card->dapm, generic_jack_widgets,
81-
ARRAY_SIZE(generic_jack_widgets));
82-
if (ret) {
83-
dev_err(card->dev, "cs42l42 widgets addition failed: %d\n", ret);
84-
return ret;
85-
}
86-
8763
ret = snd_soc_dapm_add_routes(&card->dapm, cs42l42_map,
8864
ARRAY_SIZE(cs42l42_map));
8965

sound/soc/intel/boards/sof_sdw_cs42l43.c

Lines changed: 0 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -18,33 +18,20 @@
1818
#include <sound/soc-dapm.h>
1919
#include "sof_sdw_common.h"
2020

21-
static const struct snd_soc_dapm_widget generic_jack_widgets[] = {
22-
SND_SOC_DAPM_HP("Headphone", NULL),
23-
SND_SOC_DAPM_MIC("Headset Mic", NULL),
24-
};
25-
2621
static const struct snd_soc_dapm_route cs42l43_hs_map[] = {
2722
{ "Headphone", NULL, "cs42l43 AMP3_OUT" },
2823
{ "Headphone", NULL, "cs42l43 AMP4_OUT" },
2924
{ "cs42l43 ADC1_IN1_P", NULL, "Headset Mic" },
3025
{ "cs42l43 ADC1_IN1_N", NULL, "Headset Mic" },
3126
};
3227

33-
static const struct snd_soc_dapm_widget generic_spk_widgets[] = {
34-
SND_SOC_DAPM_SPK("Speaker", NULL),
35-
};
36-
3728
static const struct snd_soc_dapm_route cs42l43_spk_map[] = {
3829
{ "Speaker", NULL, "cs42l43 AMP1_OUT_P", },
3930
{ "Speaker", NULL, "cs42l43 AMP1_OUT_N", },
4031
{ "Speaker", NULL, "cs42l43 AMP2_OUT_P", },
4132
{ "Speaker", NULL, "cs42l43 AMP2_OUT_N", },
4233
};
4334

44-
static const struct snd_soc_dapm_widget generic_dmic_widgets[] = {
45-
SND_SOC_DAPM_MIC("DMIC", NULL),
46-
};
47-
4835
static const struct snd_soc_dapm_route cs42l43_dmic_map[] = {
4936
{ "cs42l43 PDM1_DIN", NULL, "DMIC" },
5037
{ "cs42l43 PDM2_DIN", NULL, "DMIC" },
@@ -74,13 +61,6 @@ int cs42l43_hs_rtd_init(struct snd_soc_pcm_runtime *rtd)
7461
if (!card->components)
7562
return -ENOMEM;
7663

77-
ret = snd_soc_dapm_new_controls(&card->dapm, generic_jack_widgets,
78-
ARRAY_SIZE(generic_jack_widgets));
79-
if (ret) {
80-
dev_err(card->dev, "cs42l43 hs widgets addition failed: %d\n", ret);
81-
return ret;
82-
}
83-
8464
ret = snd_soc_dapm_add_routes(&card->dapm, cs42l43_hs_map,
8565
ARRAY_SIZE(cs42l43_hs_map));
8666
if (ret) {
@@ -133,13 +113,6 @@ int cs42l43_spk_rtd_init(struct snd_soc_pcm_runtime *rtd)
133113
return -ENOMEM;
134114
}
135115

136-
ret = snd_soc_dapm_new_controls(&card->dapm, generic_spk_widgets,
137-
ARRAY_SIZE(generic_spk_widgets));
138-
if (ret) {
139-
dev_err(card->dev, "cs42l43 speaker widgets addition failed: %d\n", ret);
140-
return ret;
141-
}
142-
143116
ret = snd_soc_dapm_add_routes(&card->dapm, cs42l43_spk_map,
144117
ARRAY_SIZE(cs42l43_spk_map));
145118
if (ret)
@@ -172,13 +145,6 @@ int cs42l43_dmic_rtd_init(struct snd_soc_pcm_runtime *rtd)
172145
if (!card->components)
173146
return -ENOMEM;
174147

175-
ret = snd_soc_dapm_new_controls(&card->dapm, generic_dmic_widgets,
176-
ARRAY_SIZE(generic_dmic_widgets));
177-
if (ret) {
178-
dev_err(card->dev, "cs42l43 dmic widgets addition failed: %d\n", ret);
179-
return ret;
180-
}
181-
182148
ret = snd_soc_dapm_add_routes(&card->dapm, cs42l43_dmic_map,
183149
ARRAY_SIZE(cs42l43_dmic_map));
184150
if (ret)

sound/soc/intel/boards/sof_sdw_cs_amp.c

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,6 @@
1414

1515
#define CODEC_NAME_SIZE 8
1616

17-
static const struct snd_soc_dapm_widget generic_spk_widgets[] = {
18-
SND_SOC_DAPM_SPK("Speaker", NULL),
19-
};
20-
2117
int cs_spk_rtd_init(struct snd_soc_pcm_runtime *rtd)
2218
{
2319
const char *dai_name = rtd->dai_link->codecs->dai_name;
@@ -35,13 +31,6 @@ int cs_spk_rtd_init(struct snd_soc_pcm_runtime *rtd)
3531
if (!card->components)
3632
return -ENOMEM;
3733

38-
ret = snd_soc_dapm_new_controls(&card->dapm, generic_spk_widgets,
39-
ARRAY_SIZE(generic_spk_widgets));
40-
if (ret) {
41-
dev_err(card->dev, "widgets addition failed: %d\n", ret);
42-
return ret;
43-
}
44-
4534
for_each_rtd_codec_dais(rtd, i, codec_dai) {
4635
if (!strstr(codec_dai->name, "cs35l56"))
4736
continue;

0 commit comments

Comments
 (0)