@@ -690,6 +690,14 @@ int snd_tplg_build(snd_tplg_t *tplg, const char *outfile);
*/
int snd_tplg_set_manifest_data(snd_tplg_t *tplg, const void *data, int len);
+/**
+ * \brief Set an optional vendor specific version number.
+ * \param tplg Topology instance.
+ * \param version Vendor specific version number.
+ * \return Zero on success, otherwise a negative error code
+ */
+int snd_tplg_set_version(snd_tplg_t *tplg, unsigned int version);
+
/* \} */
#ifdef __cplusplus
@@ -89,7 +89,7 @@ static int write_data_block(snd_tplg_t *tplg, int size, int tplg_type,
/* write the header for this block */
ret = write_block_header(tplg, tplg_type, 0,
- SND_SOC_TPLG_ABI_VERSION, 0, size, 1);
+ tplg->version, 0, size, 1);
if (ret < 0) {
SNDERR("error: failed to write %s block %d\n", obj_name, ret);
return ret;
@@ -125,7 +125,7 @@ static int write_elem_block(snd_tplg_t *tplg,
}
ret = write_block_header(tplg, tplg_type, vendor_type,
- SND_SOC_TPLG_ABI_VERSION, 0, size, count);
+ tplg->version, 0, size, count);
if (ret < 0) {
SNDERR("error: failed to write %s block %d\n",
obj_name, ret);
@@ -243,7 +243,7 @@ static int write_manifest_data(snd_tplg_t *tplg)
/* write the header for this block */
ret = write_block_header(tplg, SND_SOC_TPLG_TYPE_MANIFEST, 0,
- SND_SOC_TPLG_ABI_VERSION, 0,
+ tplg->version, 0,
sizeof(tplg->manifest) + tplg->manifest.priv.size, 1);
if (ret < 0) {
SNDERR("error: failed to write manifest block %d\n", ret);
@@ -362,6 +362,13 @@ int snd_tplg_set_manifest_data(snd_tplg_t *tplg, const void *data, int len)
return 0;
}
+int snd_tplg_set_version(snd_tplg_t *tplg, unsigned int version)
+{
+ tplg->version = version;
+
+ return 0;
+}
+
void snd_tplg_verbose(snd_tplg_t *tplg, int verbose)
{
tplg->verbose = verbose;