@@ -468,14 +468,14 @@ int ipc_comp_connect(struct ipc *ipc, ipc_pipe_comp_connect *_connect)
468468 if (!cpu_is_me (source -> ipc_config .core ) && !cross_core_bind )
469469 return ipc4_process_on_core (source -> ipc_config .core , false);
470470
471- struct processing_module * srcmod = comp_mod (source );
472- struct processing_module * dstmod = comp_mod (sink );
473- struct module_config * dstcfg = & dstmod -> priv .cfg ;
474- struct module_config * srccfg = & srcmod -> priv .cfg ;
471+ if (source -> drv -> type == SOF_COMP_MODULE_ADAPTER ) {
472+ struct processing_module * srcmod = comp_mod (source );
473+ struct module_config * srccfg = & srcmod -> priv .cfg ;
475474
476- /* get obs from the base config extension if the src queue ID is non-zero */
477- if (bu -> extension .r .src_queue && bu -> extension .r .src_queue < srccfg -> nb_output_pins )
478- obs = srccfg -> output_pins [bu -> extension .r .src_queue ].obs ;
475+ /* get obs from the base config extension if the src queue ID is non-zero */
476+ if (bu -> extension .r .src_queue && bu -> extension .r .src_queue < srccfg -> nb_output_pins )
477+ obs = srccfg -> output_pins [bu -> extension .r .src_queue ].obs ;
478+ }
479479
480480 /* get obs from base config if src queue ID is 0 or if base config extn is missing */
481481 if (!obs ) {
@@ -490,10 +490,14 @@ int ipc_comp_connect(struct ipc *ipc, ipc_pipe_comp_connect *_connect)
490490 obs = source_src_cfg .obs ;
491491 }
492492
493- /* get ibs from the base config extension if the sink queue ID is non-zero */
494- if ( bu -> extension . r . dst_queue && bu -> extension . r . dst_queue < dstcfg -> nb_input_pins )
495- ibs = dstcfg -> input_pins [ bu -> extension . r . dst_queue ]. ibs ;
493+ if ( sink -> drv -> type == SOF_COMP_MODULE_ADAPTER ) {
494+ struct processing_module * dstmod = comp_mod ( sink );
495+ struct module_config * dstcfg = & dstmod -> priv . cfg ;
496496
497+ /* get ibs from the base config extension if the sink queue ID is non-zero */
498+ if (bu -> extension .r .dst_queue && bu -> extension .r .dst_queue < dstcfg -> nb_input_pins )
499+ ibs = dstcfg -> input_pins [bu -> extension .r .dst_queue ].ibs ;
500+ }
497501 /* get ibs from base config if sink queue ID is 0 or if base config extn is missing */
498502 if (!ibs ) {
499503 ret = comp_get_attribute (sink , COMP_ATTR_BASE_CONFIG , & sink_src_cfg );
@@ -538,13 +542,10 @@ int ipc_comp_connect(struct ipc *ipc, ipc_pipe_comp_connect *_connect)
538542 source_set_min_available (audio_stream_get_source (& buffer -> stream ), ibs );
539543
540544#if CONFIG_ZEPHYR_DP_SCHEDULER
541- /* mod->dev may be null in case of a module not using module adapter */
542- if (dstmod -> dev &&
543- dstmod -> dev -> ipc_config .proc_domain == COMP_PROCESSING_DOMAIN_DP )
545+ if (sink -> ipc_config .proc_domain == COMP_PROCESSING_DOMAIN_DP )
544546 /* data destination module needs to use dp_queue */
545547 buffer_create_shadow_dp_queue (buffer , false /* at_input = false */ );
546- else if (srcmod -> dev &&
547- srcmod -> dev -> ipc_config .proc_domain == COMP_PROCESSING_DOMAIN_DP )
548+ else if (source -> ipc_config .proc_domain == COMP_PROCESSING_DOMAIN_DP )
548549 /* data source module needs to use dp_queue */
549550 buffer_create_shadow_dp_queue (buffer , true /* at_input = true */ );
550551#endif /* CONFIG_ZEPHYR_DP_SCHEDULER */
0 commit comments