> +struct apm_sub_graph_params { > + struct apm_module_param_data param_data; > + uint32_t num_sub_graphs; > + struct apm_sub_graph_data sg_cfg[]; > +} __packed; The style you use is num_foobar and later foobar[] > +/* container config */ > +struct apm_container_obj { > + struct apm_container_cfg container_cfg; > + /* Capability ID list */ > + struct apm_prop_data cap_data; > + uint32_t num_capability_id; > + uint32_t capability_id; but here you have both a num_capability_id and capability_id It's not very clear what they mean, or if there is a dependency? > + /* Container graph Position */ > + struct apm_prop_data pos_data; > + struct apm_cont_prop_id_graph_pos pos; > + > + /* Container Stack size */ > + struct apm_prop_data stack_data; > + struct apm_cont_prop_id_stack_size stack; > + > + /* Container proc domain id */ > + struct apm_prop_data domain_data; > + struct apm_cont_prop_id_domain domain; > +} __packed; > +/* Module IDs */ > +#define MODULE_ID_WR_SHARED_MEM_EP 0x07001000 > +#define MODULE_ID_RD_SHARED_MEM_EP 0x07001001 > +#define MODULE_ID_GAIN 0x07001002 > +#define MODULE_ID_PCM_CNV 0x07001003 > +#define MODULE_ID_PCM_ENC 0x07001004 > +#define MODULE_ID_PCM_DEC 0x07001005 > +#define MODULE_ID_CODEC_DMA_SINK 0x07001023 > +#define MODULE_ID_CODEC_DMA_SOURCE 0x07001024 > +#define MODULE_ID_I2S_SINK 0x0700100A > +#define MODULE_ID_I2S_SOURCE 0x0700100b > +#define MODULE_ID_DATA_LOGGING 0x0700101A > + > +#define APM_CMD_GET_SPF_STATE 0x01001021 > +#define APM_CMD_RSP_GET_SPF_STATE 0x02001007 > + > +#define APM_MODULE_INSTANCE_ID 0x00000001 > +#define PRM_MODULE_INSTANCE_ID 0x00000002 > +#define AMDB_MODULE_INSTANCE_ID 0x00000003 > +#define VCPM_MODULE_INSTANCE_ID 0x00000004 > +#define AR_MODULE_INSTANCE_ID_START 0x00006000 > +#define AR_MODULE_INSTANCE_ID_END 0x00007000 > +#define AR_MODULE_DYNAMIC_INSTANCE_ID_START 0x00007000 > +#define AR_MODULE_DYNAMIC_INSTANCE_ID_END 0x00008000 > +#define AR_CONT_INSTANCE_ID_START 0x00005000 > +#define AR_CONT_INSTANCE_ID_END 0x00006000 > +#define AR_SG_INSTANCE_ID_START 0x00004000 > + > +#define APM_CMD_GRAPH_OPEN 0x01001000 > +#define APM_CMD_GRAPH_PREPARE 0x01001001 > +#define APM_CMD_GRAPH_START 0x01001002 > +#define APM_CMD_GRAPH_STOP 0x01001003 > +#define APM_CMD_GRAPH_CLOSE 0x01001004 > +#define APM_CMD_GRAPH_FLUSH 0x01001005 > +#define APM_CMD_SET_CFG 0x01001006 > +#define APM_CMD_GET_CFG 0x01001007 > +#define APM_CMD_SHARED_MEM_MAP_REGIONS 0x0100100c > +#define APM_CMD_SHARED_MEM_UNMAP_REGIONS 0x0100100d > +#define APM_CMD_RSP_SHARED_MEM_MAP_REGIONS 0x02001001 > +#define APM_CMD_RSP_GET_CFG 0x02001000 > +#define APM_CMD_CLOSE_ALL 0x01001013 > +#define APM_CMD_REGISTER_SHARED_CFG 0x0100100A > +/* APM module */ > +#define APM_PARAM_ID_SUB_GRAPH_LIST 0x08001005 > + > +#define APM_PARAM_ID_MODULE_LIST 0x08001002 > +#define APM_PARAM_ID_MODULE_PROP 0x08001003 It seems like those definition follow a pattern, e.g. bits 28..32 a type and bits 0..15 a token? >