@@ -93,9 +93,14 @@ int dai_config_dma_channel(struct dai_data *dd, struct comp_dev *dev, const void
9393 break ;
9494 case SOF_DAI_AMD_HS :
9595 case SOF_DAI_AMD_HS_VIRTUAL :
96- case SOF_DAI_AMD_SW_AUDIO :
96+ case SOF_DAI_AMD_SDW :
9797 channel = dai_get_handshake (dd -> dai , dai -> direction ,
9898 dd -> stream_id );
99+ #if defined(CONFIG_SOC_ACP_7_0 )
100+ if (channel >= 64 && channel < 128 ) {
101+ channel = channel - 64 ;
102+ }
103+ #endif
99104 break ;
100105 case SOF_DAI_MEDIATEK_AFE :
101106 handshake = dai_get_handshake (dd -> dai , dai -> direction ,
@@ -188,8 +193,28 @@ int ipc_dai_data_config(struct dai_data *dd, struct comp_dev *dev)
188193 break ;
189194 case SOF_DAI_AMD_HS :
190195 case SOF_DAI_AMD_HS_VIRTUAL :
191- case SOF_DAI_AMD_SW_AUDIO :
192- dev -> ipc_config .frame_fmt = SOF_IPC_FRAME_S16_LE ;
196+ case SOF_DAI_AMD_SDW :
197+ #if defined(CONFIG_AMD ) && !defined(CONFIG_SOC_ACP_6_0 )
198+ {
199+ struct acp_dma_dev_data * dev_data = dd -> dma -> z_dev -> data ;
200+ struct sdw_pin_data * pin_data ;
201+
202+ /* Allocate memory only if not already allocated */
203+ if (!dev_data -> dai_index_ptr ) {
204+ pin_data = rzalloc (SOF_MEM_FLAG_USER | SOF_MEM_FLAG_COHERENT ,
205+ sizeof (* pin_data ));
206+ dev_data -> dai_index_ptr = pin_data ;
207+ } else {
208+ pin_data = dev_data -> dai_index_ptr ;
209+ }
210+ pin_data -> pin_num = dd -> dai -> index ;
211+ pin_data -> pin_dir = dai -> direction ;
212+ pin_data -> dma_channel = dd -> chan ? dd -> chan -> index : 0xFFFF ;
213+ pin_data -> index = 0xFFFF ;
214+ pin_data -> instance = 0xFFFF ;
215+ dev_data -> dai_index_ptr = pin_data ;
216+ }
217+ #endif
193218 break ;
194219 case SOF_DAI_MEDIATEK_AFE :
195220 break ;
0 commit comments