@@ -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,9 +193,29 @@ 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+ #define SDW_INSTANCES 2
198+ #if defined(CONFIG_SOC_ACP_6_0 )
199+ break ;
200+ #else
201+ struct acp_dma_dev_data * dev_data = dd -> dma -> z_dev -> data ;
202+ struct sdw_pin_data * pin_data ;
203+ /* Allocate memory only if not already allocated */
204+ if (!dev_data -> dai_index_ptr ) {
205+ pin_data = rzalloc (SOF_MEM_FLAG_USER | SOF_MEM_FLAG_COHERENT ,
206+ sizeof (* pin_data ));
207+ dev_data -> dai_index_ptr = pin_data ;
208+ } else {
209+ pin_data = dev_data -> dai_index_ptr ;
210+ }
211+ pin_data -> pin_num = dd -> dai -> index ;
212+ pin_data -> pin_dir = dai -> direction ;
213+ pin_data -> dma_channel = dd -> chan ? dd -> chan -> index : 0xFFFF ;
214+ pin_data -> index = 0xFFFF ;
215+ pin_data -> instance = 0xFFFF ;
216+ dev_data -> dai_index_ptr = pin_data ;
193217 break ;
218+ #endif
194219 case SOF_DAI_MEDIATEK_AFE :
195220 break ;
196221 default :
0 commit comments