Skip to content

Commit 40e0638

Browse files
author
Jyri Sarha
committed
ipc4: Add payload structs definitions to ipc4_pipeline_create msg
Adds structs and definitions for adding a payload to struct ipc4_pipeline_create message. The structure of the payload is very similar to struct ipc4_module_init_ext_init payload for struct ipc4_module_init_instance. Signed-off-by: Jyri Sarha <[email protected]>
1 parent fe0aea9 commit 40e0638

1 file changed

Lines changed: 35 additions & 1 deletion

File tree

src/include/ipc4/pipeline.h

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,39 @@ enum ipc4_pipeline_state {
6969
SOF_IPC4_PIPELINE_STATE_SAVED
7070
};
7171

72+
/* IDs for all pipeline ext data types in struct ipc4_pipeline_init_ext_object */
73+
enum ipc4_pipeline_ext_obj_id {
74+
IPC4_GLB_PIPE_EXT_OBJ_ID_INVALID = 0,
75+
IPC4_GLB_PIPE_EXT_OBJ_ID_MEM_DATA = 1,
76+
IPC4_GLB_PIPE_EXT_OBJ_ID_MAX = IPC4_GLB_PIPE_EXT_OBJ_ID_MEM_DATA,
77+
};
78+
79+
/* data object for vendor bespoke data with ABI growth and backwards compat */
80+
struct ipc4_pipeline_ext_object {
81+
uint32_t last_object : 1; /* object is last in array if 1 else object follows. */
82+
uint32_t object_id : 15; /* unique ID for this object or globally */
83+
uint32_t object_words : 16; /* size in dwords (excluding this structure) */
84+
} __packed __aligned(4);
85+
/* the object data will be placed in memory here and will have size "object_words" */
86+
87+
/* Ext array data object for pipeline instance's memory requirements */
88+
struct ipc4_pipeline_ext_obj_mem_data {
89+
uint32_t domain_id; /* userspace domain ID */
90+
uint32_t stack_bytes; /* required stack size in bytes, 0 means default size */
91+
uint32_t heap_bytes; /* required heap size in bytes, 0 means default size */
92+
} __packed __aligned(4);
93+
94+
/*
95+
* Host Driver sends this message to create a new pipeline instance.
96+
*/
97+
struct ipc4_pipeline_ext_payload {
98+
uint32_t payload_words : 24; /* size in dwords (excluding this structure) */
99+
uint32_t data_obj_array : 1; /* struct ipc4_pipeline_ext_object data */
100+
uint32_t rsvd0 : 7;
101+
uint32_t rsvd1;
102+
uint32_t rsvd2;
103+
} __packed __aligned(4);
104+
72105
/*!
73106
* lp - indicates whether the pipeline should be kept on running in low power
74107
* mode. On BXT the driver should set this flag to 1 for WoV pipeline.
@@ -106,7 +139,8 @@ struct ipc4_pipeline_create {
106139
uint32_t rsvd1 : 3;
107140
uint32_t attributes : 16;
108141
uint32_t core_id : 4;
109-
uint32_t rsvd2 : 6;
142+
uint32_t rsvd2 : 5;
143+
uint32_t payload : 1;
110144
uint32_t _reserved_2 : 2;
111145
} r;
112146
} extension;

0 commit comments

Comments
 (0)