@@ -1281,7 +1281,7 @@ static void sof_ipc4_widget_free_comp_process(struct snd_sof_widget *swidget)
12811281
12821282static void
12831283sof_ipc4_update_resource_usage (struct snd_sof_dev * sdev , struct snd_sof_widget * swidget ,
1284- struct sof_ipc4_base_module_cfg * base_config )
1284+ struct sof_ipc4_base_module_cfg * base_config , int dir )
12851285{
12861286 struct sof_ipc4_fw_module * fw_module = swidget -> module_info ;
12871287 struct snd_sof_widget * pipe_widget ;
@@ -1313,6 +1313,10 @@ sof_ipc4_update_resource_usage(struct snd_sof_dev *sdev, struct snd_sof_widget *
13131313 pipeline = pipe_widget -> private ;
13141314 pipeline -> mem_usage += total ;
13151315
1316+ /* set pipeline direction */
1317+ pipeline -> msg .extension |= SOF_IPC4_GLB_PIPE_EXT_DIRECTION_SET (0x1 );
1318+ pipeline -> msg .extension |= SOF_IPC4_GLB_PIPE_EXT_DIRECTION (dir );
1319+
13161320 /* Update base_config->cpc from the module manifest */
13171321 sof_ipc4_update_cpc_from_manifest (sdev , fw_module , base_config );
13181322
@@ -2452,7 +2456,7 @@ sof_ipc4_prepare_copier_module(struct snd_sof_widget *swidget,
24522456 input_fmt_index , output_fmt_index );
24532457
24542458 /* update pipeline memory usage */
2455- sof_ipc4_update_resource_usage (sdev , swidget , & copier_data -> base_config );
2459+ sof_ipc4_update_resource_usage (sdev , swidget , & copier_data -> base_config , dir );
24562460
24572461 /* copy IPC data */
24582462 memcpy (* ipc_config_data , (void * )copier_data , sizeof (* copier_data ));
@@ -2515,7 +2519,7 @@ static int sof_ipc4_prepare_gain_module(struct snd_sof_widget *swidget,
25152519 input_fmt_index , output_fmt_index );
25162520
25172521 /* update pipeline memory usage */
2518- sof_ipc4_update_resource_usage (sdev , swidget , & gain -> data .base_config );
2522+ sof_ipc4_update_resource_usage (sdev , swidget , & gain -> data .base_config , dir );
25192523
25202524 return 0 ;
25212525}
@@ -2560,7 +2564,7 @@ static int sof_ipc4_prepare_mixer_module(struct snd_sof_widget *swidget,
25602564 input_fmt_index , output_fmt_index );
25612565
25622566 /* update pipeline memory usage */
2563- sof_ipc4_update_resource_usage (sdev , swidget , & mixer -> base_config );
2567+ sof_ipc4_update_resource_usage (sdev , swidget , & mixer -> base_config , dir );
25642568
25652569 return 0 ;
25662570}
@@ -2626,7 +2630,7 @@ static int sof_ipc4_prepare_src_module(struct snd_sof_widget *swidget,
26262630 input_fmt_index , output_fmt_index );
26272631
26282632 /* update pipeline memory usage */
2629- sof_ipc4_update_resource_usage (sdev , swidget , & src -> data .base_config );
2633+ sof_ipc4_update_resource_usage (sdev , swidget , & src -> data .base_config , dir );
26302634
26312635 out_audio_fmt = & available_fmt -> output_pin_fmts [output_fmt_index ].audio_fmt ;
26322636 src -> data .sink_rate = out_audio_fmt -> sampling_frequency ;
@@ -2783,7 +2787,7 @@ static int sof_ipc4_prepare_process_module(struct snd_sof_widget *swidget,
27832787 input_fmt_index , output_fmt_index );
27842788
27852789 /* update pipeline memory usage */
2786- sof_ipc4_update_resource_usage (sdev , swidget , & process -> base_config );
2790+ sof_ipc4_update_resource_usage (sdev , swidget , & process -> base_config , dir );
27872791
27882792 /* ipc_config_data is composed of the base_config followed by an optional extension */
27892793 memcpy (cfg , & process -> base_config , sizeof (struct sof_ipc4_base_module_cfg ));
0 commit comments