@@ -135,6 +135,7 @@ struct asoc_sdw_codec_info codec_info_list[] = {
135135 {
136136 .direction = {true, false},
137137 .dai_name = "rt712-sdca-aif2" ,
138+ .component_name = "rt712" ,
138139 .dai_type = SOC_SDW_DAI_TYPE_AMP ,
139140 .dailink = {SOC_SDW_AMP_OUT_DAI_ID , SOC_SDW_UNUSED_DAI_ID },
140141 .init = asoc_sdw_rt_amp_init ,
@@ -275,6 +276,7 @@ struct asoc_sdw_codec_info codec_info_list[] = {
275276 {
276277 .direction = {true, false},
277278 .dai_name = "rt1320-aif1" ,
279+ .component_name = "rt1320" ,
278280 .dai_type = SOC_SDW_DAI_TYPE_AMP ,
279281 .dailink = {SOC_SDW_AMP_OUT_DAI_ID , SOC_SDW_UNUSED_DAI_ID },
280282 .init = asoc_sdw_rt_amp_init ,
@@ -409,6 +411,7 @@ struct asoc_sdw_codec_info codec_info_list[] = {
409411 {
410412 .direction = {true, false},
411413 .dai_name = "rt722-sdca-aif2" ,
414+ .component_name = "rt722" ,
412415 .dai_type = SOC_SDW_DAI_TYPE_AMP ,
413416 /* No feedback capability is provided by rt722-sdca codec driver*/
414417 .dailink = {SOC_SDW_AMP_OUT_DAI_ID , SOC_SDW_UNUSED_DAI_ID },
@@ -438,6 +441,7 @@ struct asoc_sdw_codec_info codec_info_list[] = {
438441 {
439442 .direction = {true, true},
440443 .dai_name = "max98373-aif1" ,
444+ .component_name = "mx8373" ,
441445 .dai_type = SOC_SDW_DAI_TYPE_AMP ,
442446 .dailink = {SOC_SDW_AMP_OUT_DAI_ID , SOC_SDW_AMP_IN_DAI_ID },
443447 .init = asoc_sdw_maxim_init ,
@@ -456,6 +460,7 @@ struct asoc_sdw_codec_info codec_info_list[] = {
456460 {
457461 .direction = {true, false},
458462 .dai_name = "max98363-aif1" ,
463+ .component_name = "mx8363" ,
459464 .dai_type = SOC_SDW_DAI_TYPE_AMP ,
460465 .dailink = {SOC_SDW_AMP_OUT_DAI_ID , SOC_SDW_UNUSED_DAI_ID },
461466 .init = asoc_sdw_maxim_init ,
@@ -491,6 +496,7 @@ struct asoc_sdw_codec_info codec_info_list[] = {
491496 {
492497 .direction = {true, false},
493498 .dai_name = "cs35l56-sdw1" ,
499+ .component_name = "cs35l56" ,
494500 .dai_type = SOC_SDW_DAI_TYPE_AMP ,
495501 .dailink = {SOC_SDW_AMP_OUT_DAI_ID , SOC_SDW_UNUSED_DAI_ID },
496502 .init = asoc_sdw_cs_amp_init ,
@@ -516,6 +522,7 @@ struct asoc_sdw_codec_info codec_info_list[] = {
516522 {
517523 .direction = {true, false},
518524 .dai_name = "cs35l56-sdw1" ,
525+ .component_name = "cs35l56" ,
519526 .dai_type = SOC_SDW_DAI_TYPE_AMP ,
520527 .dailink = {SOC_SDW_AMP_OUT_DAI_ID , SOC_SDW_UNUSED_DAI_ID },
521528 .init = asoc_sdw_cs_amp_init ,
@@ -733,6 +740,7 @@ int asoc_sdw_rtd_init(struct snd_soc_pcm_runtime *rtd)
733740 struct snd_soc_card * card = rtd -> card ;
734741 struct asoc_sdw_codec_info * codec_info ;
735742 struct snd_soc_dai * dai ;
743+ const char * spk_components = "" ;
736744 int dai_index ;
737745 int ret ;
738746 int i ;
@@ -785,7 +793,32 @@ int asoc_sdw_rtd_init(struct snd_soc_pcm_runtime *rtd)
785793 if (ret )
786794 return ret ;
787795 }
796+
797+ /* Generate the spk component string for card->components string */
798+ if (codec_info -> dais [dai_index ].dai_type == SOC_SDW_DAI_TYPE_AMP &&
799+ codec_info -> dais [dai_index ].component_name ) {
800+ if (strlen (spk_components ) == 0 )
801+ spk_components =
802+ devm_kasprintf (card -> dev , GFP_KERNEL , "%s" ,
803+ codec_info -> dais [dai_index ].component_name );
804+ else
805+ /* Append component name to spk_components */
806+ spk_components =
807+ devm_kasprintf (card -> dev , GFP_KERNEL ,
808+ "%s+%s" , spk_components ,
809+ codec_info -> dais [dai_index ].component_name );
810+ }
811+
788812 codec_info -> dais [dai_index ].rtd_init_done = true;
813+
814+ }
815+
816+ if (strlen (spk_components ) > 0 ) {
817+ /* Update card components for speaker components */
818+ card -> components = devm_kasprintf (card -> dev , GFP_KERNEL , "%s spk:%s" ,
819+ card -> components , spk_components );
820+ if (!card -> components )
821+ return - ENOMEM ;
789822 }
790823
791824 return 0 ;
0 commit comments