Skip to content

Commit 064fd55

Browse files
author
Jyri Sarha
committed
ASoC: SOF: ipc4: sof_ipc4_module_init_ext_init structs and macros
Add structs and macros for struct sof_ipc4_module_init_ext_init, following struct sof_ipc4_module_init_ext_object array, and struct sof_ipc4_mod_init_ext_dp_memory_data as object payload. Signed-off-by: Jyri Sarha <jyri.sarha@linux.intel.com>
1 parent 92ffbcd commit 064fd55

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

include/sound/sof/ipc4/header.h

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,10 @@ struct sof_ipc4_base_module_cfg {
353353
#define SOF_IPC4_MOD_EXT_DOMAIN_MASK BIT(28)
354354
#define SOF_IPC4_MOD_EXT_DOMAIN(x) ((x) << SOF_IPC4_MOD_EXT_DOMAIN_SHIFT)
355355

356+
#define SOF_IPC4_MOD_EXT_EXTENDED_INIT_SHIFT 29
357+
#define SOF_IPC4_MOD_EXT_EXTENDED_INIT_MASK BIT(29)
358+
#define SOF_IPC4_MOD_EXT_EXTENDED_INIT(x) ((x) << SOF_IPC4_MOD_EXT_EXTENDED_SHIFT)
359+
356360
/* bind/unbind module ipc msg */
357361
#define SOF_IPC4_MOD_EXT_DST_MOD_ID_SHIFT 0
358362
#define SOF_IPC4_MOD_EXT_DST_MOD_ID_MASK GENMASK(15, 0)
@@ -616,6 +620,77 @@ struct sof_ipc4_notify_module_data {
616620
#define SOF_IPC4_NOTIFY_MODULE_EVENTID_ALSA_MAGIC_VAL 0xA15A0000
617621
#define SOF_IPC4_NOTIFY_MODULE_EVENTID_ALSA_PARAMID_MASK GENMASK(15, 0)
618622

623+
/*
624+
* Macros for creating struct sof_ipc4_module_init_ext_init payload
625+
* with its associated data. ext_init payload should be the first
626+
* piece of payload following SOF_IPC4_MOD_INIT_INSTANCE msg, and its
627+
* existence is indicated with SOF_IPC4_MOD_EXT_EXTENDED-bit.
628+
*
629+
* The macros below apply to sof_ipc4_module_init_ext_init.word0
630+
*/
631+
#define SOF_IPC4_MOD_INIT_EXT_RTOS_DOMAIN_SHIFT 0
632+
#define SOF_IPC4_MOD_INIT_EXT_RTOS_DOMAIN_MASK BIT(0)
633+
#define SOF_IPC4_MOD_INIT_EXT_RTOS_DOMAIN(x) ((x) << SOF_IPC4_MOD_INIT_EXT_RTOS_DOMAIN_SHIFT)
634+
635+
#define SOF_IPC4_MOD_INIT_EXT_GNA_USED_SHIFT 1
636+
#define SOF_IPC4_MOD_INIT_EXT_GNA_USED_MASK BIT(1)
637+
#define SOF_IPC4_MOD_INIT_EXT_GNA_USED(x) ((x) << SOF_IPC4_MOD_INIT_EXT_GNA_USED_SHIFT)
638+
639+
#define SOF_IPC4_MOD_INIT_EXT_OBJ_ARRAY_SHIFT 2
640+
#define SOF_IPC4_MOD_INIT_EXT_OBJ_ARRAY_MASK BIT(2)
641+
#define SOF_IPC4_MOD_INIT_EXT_DATA_ARRAY(x) ((x) << SOF_IPC4_MOD_INIT_EXT_OBJ_ARRAY_SHIFT)
642+
643+
struct sof_ipc4_module_init_ext_init {
644+
u32 word0;
645+
u32 rsvd1;
646+
u32 rsvd2;
647+
} __packed __aligned(4);
648+
649+
/*
650+
* SOF_IPC4_MOD_EXT_EXTENDED payload may be followed by arbitrary
651+
* number of object array objects. SOF_IPC4_MOD_INIT_EXT_DATA_ARRAY
652+
* -bit indicates that an array object follows struct
653+
* sof_ipc4_module_init_ext_init.
654+
*
655+
* The object header's SOF_IPC4_MOD_INIT_EXT_OBJ_LAST-bit in struct
656+
* sof_ipc4_module_init_ext_object indicates if the array is continued
657+
* with another object. The header has also fields to identify the
658+
* object, SOF_IPC4_MOD_INIT_EXT_OBJ_ID, and to indicate the object's
659+
* size in 32-bit words, SOF_IPC4_MOD_INIT_EXT_OBJ_WORDS, not
660+
* including the header itself.
661+
*
662+
* The macros below apply to sof_ipc4_module_init_ext_object.header
663+
*/
664+
#define SOF_IPC4_MOD_INIT_EXT_OBJ_LAST_SHIFT 0
665+
#define SOF_IPC4_MOD_INIT_EXT_OBJ_LAST_MASK BIT(0)
666+
#define SOF_IPC4_MOD_INIT_EXT_OBJ_LAST(x) ((x) << SOF_IPC4_MOD_INIT_EXT_OBJ_LAST_SHIFT)
667+
668+
#define SOF_IPC4_MOD_INIT_EXT_OBJ_ID_SHIFT 1
669+
#define SOF_IPC4_MOD_INIT_EXT_OBJ_ID_MASK GENMASK(15, 1)
670+
#define SOF_IPC4_MOD_INIT_EXT_OBJ_ID(x) ((x) << SOF_IPC4_MOD_INIT_EXT_OBJ_ID_SHIFT)
671+
672+
#define SOF_IPC4_MOD_INIT_EXT_OBJ_WORDS_SHIFT 16
673+
#define SOF_IPC4_MOD_INIT_EXT_OBJ_WORDS_MASK GENMASK(31, 16)
674+
#define SOF_IPC4_MOD_INIT_EXT_OBJ_WORDS(x) ((x) << SOF_IPC4_MOD_INIT_EXT_OBJ_WORDS_SHIFT)
675+
676+
struct sof_ipc4_module_init_ext_object {
677+
u32 header;
678+
u32 data[];
679+
} __packed __aligned(4);
680+
681+
enum sof_ipc4_mod_init_ext_obj_id {
682+
SOF_IPC4_MOD_INIT_DATA_ID_INVALID = 0,
683+
SOF_IPC4_MOD_INIT_DATA_ID_DP_DATA,
684+
SOF_IPC4_MOD_INIT_DATA_ID_MAX = SOF_IPC4_MOD_INIT_DATA_ID_DP_DATA,
685+
};
686+
687+
/* DP module memory configuration data object for ext_init object array */
688+
struct sof_ipc4_mod_init_ext_dp_memory_data {
689+
u32 domain_id; /* userspace domain ID */
690+
u32 stack_bytes; /* stack size in bytes, 0 means default size */
691+
u32 heap_bytes; /* stack size in bytes, 0 means default size */
692+
} __packed __aligned(4);
693+
619694
/** @}*/
620695

621696
#endif

0 commit comments

Comments
 (0)