diff --git a/include/sound/sof/topology.h b/include/sound/sof/topology.h index f56e80d09b3207..7d40da05b23380 100644 --- a/include/sound/sof/topology.h +++ b/include/sound/sof/topology.h @@ -39,6 +39,12 @@ enum sof_comp_type { SOF_COMP_ASRC, /**< Asynchronous sample rate converter */ SOF_COMP_DCBLOCK, SOF_COMP_SMART_AMP, /**< smart amplifier component */ + + /* + * No more _COMP_ types to be added. + * Use SOF_COMP_PROCESS from now on. + */ + SOF_COMP_PROCESS = 1000, /**< generic process component */ /* keep FILEREAD/FILEWRITE as the last ones */ SOF_COMP_FILEREAD = 10000, /**< host test based file IO */ SOF_COMP_FILEWRITE = 10001, /**< host test based file IO */ @@ -57,8 +63,7 @@ struct sof_ipc_comp { uint32_t pipeline_id; uint32_t core; - /* reserved for future use */ - uint32_t reserved[1]; + uint32_t subtype; /**< flavour for generic component type */ } __packed; /* diff --git a/include/uapi/sound/sof/abi.h b/include/uapi/sound/sof/abi.h index d54be303090fc3..6af32f82fb99a7 100644 --- a/include/uapi/sound/sof/abi.h +++ b/include/uapi/sound/sof/abi.h @@ -26,7 +26,7 @@ /* SOF ABI version major, minor and patch numbers */ #define SOF_ABI_MAJOR 3 -#define SOF_ABI_MINOR 16 +#define SOF_ABI_MINOR 17 #define SOF_ABI_PATCH 0 /* SOF ABI version number. Format within 32bit word is MMmmmppp */ diff --git a/sound/soc/sof/topology.c b/sound/soc/sof/topology.c index 34f2dace020f82..537785fac70133 100644 --- a/sound/soc/sof/topology.c +++ b/sound/soc/sof/topology.c @@ -2183,7 +2183,13 @@ static int sof_process_load(struct snd_soc_component *scomp, int index, process->comp.hdr.size = ipc_size; process->comp.hdr.cmd = SOF_IPC_GLB_TPLG_MSG | SOF_IPC_TPLG_COMP_NEW; process->comp.id = swidget->comp_id; - process->comp.type = type; + if (sdev->fw_ready.version.abi_version >= SOF_ABI_VER(3, 17, 0)) { + /* use generic process component if supported */ + process->comp.type = SOF_COMP_PROCESS; + process->comp.subtype = type; + } else { + process->comp.type = SOF_COMP_PROCESS; + } process->comp.pipeline_id = index; process->config.hdr.size = sizeof(process->config);