Skip to content

Commit 1934f8e

Browse files
committed
ASoC: SOF: ipc4-topology: Add direction in the pipeline message
Add a couple of bitfields in the IPC message extension for pipelines to include the direction. This will be useful to set the direction for modules belonging to hostless pipelines. Signed-off-by: Ranjani Sridharan <[email protected]>
1 parent 30fdccc commit 1934f8e

2 files changed

Lines changed: 16 additions & 6 deletions

File tree

include/sound/sof/ipc4/header.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,12 @@ enum sof_ipc4_pipeline_state {
188188
#define SOF_IPC4_GLB_PIPE_EXT_CORE_ID_MASK GENMASK(23, 20)
189189
#define SOF_IPC4_GLB_PIPE_EXT_CORE_ID(x) ((x) << SOF_IPC4_GLB_PIPE_EXT_CORE_ID_SHIFT)
190190

191+
#define SOF_IPC4_GLB_PIPE_EXT_DIRECTION_SET_SHIFT 24
192+
#define SOF_IPC4_GLB_PIPE_EXT_DIRECTION_SET(x) ((x) << SOF_IPC4_GLB_PIPE_EXT_DIRECTION_SET_SHIFT)
193+
194+
#define SOF_IPC4_GLB_PIPE_EXT_DIRECTION_SHIFT 25
195+
#define SOF_IPC4_GLB_PIPE_EXT_DIRECTION(x) ((x) << SOF_IPC4_GLB_PIPE_EXT_DIRECTION_SHIFT)
196+
191197
/* pipeline set state ipc msg */
192198
#define SOF_IPC4_GLB_PIPE_STATE_ID_SHIFT 16
193199
#define SOF_IPC4_GLB_PIPE_STATE_ID_MASK GENMASK(23, 16)

sound/soc/sof/ipc4-topology.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1281,7 +1281,7 @@ static void sof_ipc4_widget_free_comp_process(struct snd_sof_widget *swidget)
12811281

12821282
static void
12831283
sof_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

Comments
 (0)