@@ -670,7 +670,9 @@ static void ssp_dai_config_pcm_params_match(struct snd_sof_dev *sdev, const char
670670 if (!dai -> name || strcmp (link_name , dai -> name ))
671671 continue ;
672672 for (i = 0 ; i < dai -> number_configs ; i ++ ) {
673- config = & dai -> dai_config [i ];
673+ struct sof_dai_private_data * private = dai -> private ;
674+
675+ config = & private -> dai_config [i ];
674676 if (config -> ssp .fsync_rate == params_rate (params )) {
675677 dev_dbg (sdev -> dev , "DAI config %d matches pcm hw params\n" , i );
676678 dai -> current_config = i ;
@@ -693,6 +695,7 @@ int sof_pcm_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_pa
693695 struct snd_sof_dai * dai =
694696 snd_sof_find_dai (component , (char * )rtd -> dai_link -> name );
695697 struct snd_sof_dev * sdev = snd_soc_component_get_drvdata (component );
698+ struct sof_dai_private_data * private = dai -> private ;
696699 struct snd_soc_dpcm * dpcm ;
697700
698701 /* no topology exists for this BE, try a common configuration */
@@ -717,7 +720,7 @@ int sof_pcm_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_pa
717720 /* read format from topology */
718721 snd_mask_none (fmt );
719722
720- switch (dai -> comp_dai -> config .frame_fmt ) {
723+ switch (private -> comp_dai -> config .frame_fmt ) {
721724 case SOF_IPC_FRAME_S16_LE :
722725 snd_mask_set_format (fmt , SNDRV_PCM_FORMAT_S16_LE );
723726 break ;
@@ -733,15 +736,15 @@ int sof_pcm_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_pa
733736 }
734737
735738 /* read rate and channels from topology */
736- switch (dai -> dai_config -> type ) {
739+ switch (private -> dai_config -> type ) {
737740 case SOF_DAI_INTEL_SSP :
738741 /* search for config to pcm params match, if not found use default */
739742 ssp_dai_config_pcm_params_match (sdev , (char * )rtd -> dai_link -> name , params );
740743
741- rate -> min = dai -> dai_config [dai -> current_config ].ssp .fsync_rate ;
742- rate -> max = dai -> dai_config [dai -> current_config ].ssp .fsync_rate ;
743- channels -> min = dai -> dai_config [dai -> current_config ].ssp .tdm_slots ;
744- channels -> max = dai -> dai_config [dai -> current_config ].ssp .tdm_slots ;
744+ rate -> min = private -> dai_config [dai -> current_config ].ssp .fsync_rate ;
745+ rate -> max = private -> dai_config [dai -> current_config ].ssp .fsync_rate ;
746+ channels -> min = private -> dai_config [dai -> current_config ].ssp .tdm_slots ;
747+ channels -> max = private -> dai_config [dai -> current_config ].ssp .tdm_slots ;
745748
746749 dev_dbg (component -> dev ,
747750 "rate_min: %d rate_max: %d\n" , rate -> min , rate -> max );
@@ -752,11 +755,11 @@ int sof_pcm_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_pa
752755 break ;
753756 case SOF_DAI_INTEL_DMIC :
754757 /* DMIC only supports 16 or 32 bit formats */
755- if (dai -> comp_dai -> config .frame_fmt == SOF_IPC_FRAME_S24_4LE ) {
758+ if (private -> comp_dai -> config .frame_fmt == SOF_IPC_FRAME_S24_4LE ) {
756759 dev_err (component -> dev ,
757760 "error: invalid fmt %d for DAI type %d\n" ,
758- dai -> comp_dai -> config .frame_fmt ,
759- dai -> dai_config -> type );
761+ private -> comp_dai -> config .frame_fmt ,
762+ private -> dai_config -> type );
760763 }
761764 break ;
762765 case SOF_DAI_INTEL_HDA :
@@ -776,14 +779,14 @@ int sof_pcm_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_pa
776779 * Dai could run with different channel count compared with
777780 * front end, so get dai channel count from topology
778781 */
779- channels -> min = dai -> dai_config -> alh .channels ;
780- channels -> max = dai -> dai_config -> alh .channels ;
782+ channels -> min = private -> dai_config -> alh .channels ;
783+ channels -> max = private -> dai_config -> alh .channels ;
781784 break ;
782785 case SOF_DAI_IMX_ESAI :
783- rate -> min = dai -> dai_config -> esai .fsync_rate ;
784- rate -> max = dai -> dai_config -> esai .fsync_rate ;
785- channels -> min = dai -> dai_config -> esai .tdm_slots ;
786- channels -> max = dai -> dai_config -> esai .tdm_slots ;
786+ rate -> min = private -> dai_config -> esai .fsync_rate ;
787+ rate -> max = private -> dai_config -> esai .fsync_rate ;
788+ channels -> min = private -> dai_config -> esai .tdm_slots ;
789+ channels -> max = private -> dai_config -> esai .tdm_slots ;
787790
788791 dev_dbg (component -> dev ,
789792 "rate_min: %d rate_max: %d\n" , rate -> min , rate -> max );
@@ -792,10 +795,10 @@ int sof_pcm_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_pa
792795 channels -> min , channels -> max );
793796 break ;
794797 case SOF_DAI_MEDIATEK_AFE :
795- rate -> min = dai -> dai_config -> afe .rate ;
796- rate -> max = dai -> dai_config -> afe .rate ;
797- channels -> min = dai -> dai_config -> afe .channels ;
798- channels -> max = dai -> dai_config -> afe .channels ;
798+ rate -> min = private -> dai_config -> afe .rate ;
799+ rate -> max = private -> dai_config -> afe .rate ;
800+ channels -> min = private -> dai_config -> afe .channels ;
801+ channels -> max = private -> dai_config -> afe .channels ;
799802
800803 dev_dbg (component -> dev ,
801804 "rate_min: %d rate_max: %d\n" , rate -> min , rate -> max );
@@ -804,10 +807,10 @@ int sof_pcm_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_pa
804807 channels -> min , channels -> max );
805808 break ;
806809 case SOF_DAI_IMX_SAI :
807- rate -> min = dai -> dai_config -> sai .fsync_rate ;
808- rate -> max = dai -> dai_config -> sai .fsync_rate ;
809- channels -> min = dai -> dai_config -> sai .tdm_slots ;
810- channels -> max = dai -> dai_config -> sai .tdm_slots ;
810+ rate -> min = private -> dai_config -> sai .fsync_rate ;
811+ rate -> max = private -> dai_config -> sai .fsync_rate ;
812+ channels -> min = private -> dai_config -> sai .tdm_slots ;
813+ channels -> max = private -> dai_config -> sai .tdm_slots ;
811814
812815 dev_dbg (component -> dev ,
813816 "rate_min: %d rate_max: %d\n" , rate -> min , rate -> max );
@@ -816,10 +819,10 @@ int sof_pcm_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_pa
816819 channels -> min , channels -> max );
817820 break ;
818821 case SOF_DAI_AMD_BT :
819- rate -> min = dai -> dai_config -> acpbt .fsync_rate ;
820- rate -> max = dai -> dai_config -> acpbt .fsync_rate ;
821- channels -> min = dai -> dai_config -> acpbt .tdm_slots ;
822- channels -> max = dai -> dai_config -> acpbt .tdm_slots ;
822+ rate -> min = private -> dai_config -> acpbt .fsync_rate ;
823+ rate -> max = private -> dai_config -> acpbt .fsync_rate ;
824+ channels -> min = private -> dai_config -> acpbt .tdm_slots ;
825+ channels -> max = private -> dai_config -> acpbt .tdm_slots ;
823826
824827 dev_dbg (component -> dev ,
825828 "AMD_BT rate_min: %d rate_max: %d\n" , rate -> min , rate -> max );
@@ -828,10 +831,10 @@ int sof_pcm_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_pa
828831 channels -> min , channels -> max );
829832 break ;
830833 case SOF_DAI_AMD_SP :
831- rate -> min = dai -> dai_config -> acpsp .fsync_rate ;
832- rate -> max = dai -> dai_config -> acpsp .fsync_rate ;
833- channels -> min = dai -> dai_config -> acpsp .tdm_slots ;
834- channels -> max = dai -> dai_config -> acpsp .tdm_slots ;
834+ rate -> min = private -> dai_config -> acpsp .fsync_rate ;
835+ rate -> max = private -> dai_config -> acpsp .fsync_rate ;
836+ channels -> min = private -> dai_config -> acpsp .tdm_slots ;
837+ channels -> max = private -> dai_config -> acpsp .tdm_slots ;
835838
836839 dev_dbg (component -> dev ,
837840 "AMD_SP rate_min: %d rate_max: %d\n" , rate -> min , rate -> max );
@@ -840,10 +843,10 @@ int sof_pcm_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_pa
840843 channels -> min , channels -> max );
841844 break ;
842845 case SOF_DAI_AMD_DMIC :
843- rate -> min = dai -> dai_config -> acpdmic .fsync_rate ;
844- rate -> max = dai -> dai_config -> acpdmic .fsync_rate ;
845- channels -> min = dai -> dai_config -> acpdmic .tdm_slots ;
846- channels -> max = dai -> dai_config -> acpdmic .tdm_slots ;
846+ rate -> min = private -> dai_config -> acpdmic .fsync_rate ;
847+ rate -> max = private -> dai_config -> acpdmic .fsync_rate ;
848+ channels -> min = private -> dai_config -> acpdmic .tdm_slots ;
849+ channels -> max = private -> dai_config -> acpdmic .tdm_slots ;
847850
848851 dev_dbg (component -> dev ,
849852 "AMD_DMIC rate_min: %d rate_max: %d\n" , rate -> min , rate -> max );
@@ -853,7 +856,7 @@ int sof_pcm_dai_link_fixup(struct snd_soc_pcm_runtime *rtd, struct snd_pcm_hw_pa
853856 break ;
854857 default :
855858 dev_err (component -> dev , "error: invalid DAI type %d\n" ,
856- dai -> dai_config -> type );
859+ private -> dai_config -> type );
857860 break ;
858861 }
859862
0 commit comments