@@ -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+
518562struct 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 },
0 commit comments