summaryrefslogtreecommitdiff
path: root/src/topology
diff options
context:
space:
mode:
authorMengdong Lin <mengdong.lin@intel.com>2015-09-16 17:07:13 +0800
committerTakashi Iwai <tiwai@suse.de>2015-09-23 10:45:52 +0200
commit8b0a5310bf3cb6ca1f7d70e3f4149b25b17b453a (patch)
tree22a08ca2ba998449dd4a9a9badb1706f1483d797 /src/topology
parentc82417650a1ea4446c19dd82bfab9d8e6cd5a969 (diff)
downloadalsa-lib-8b0a5310bf3cb6ca1f7d70e3f4149b25b17b453a.tar.gz
topology: Add API to set a vendor specific version number
This vendor-specific version number is optional. It will be written to the 'version' field of each block header of the binary toplogy data file. The vendor driver can check this number for further processing in kernel. The topology ABI version number is still stored in the 'abi' field of block headers. Signed-off-by: Mengdong Lin <mengdong.lin@intel.com> Reviewed-by: Liam Girdwood <liam.r.girdwood@linux.intel.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'src/topology')
-rw-r--r--src/topology/builder.c6
-rw-r--r--src/topology/parser.c7
2 files changed, 10 insertions, 3 deletions
diff --git a/src/topology/builder.c b/src/topology/builder.c
index 91412aad..8d57a8b7 100644
--- a/src/topology/builder.c
+++ b/src/topology/builder.c
@@ -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;
@@ -124,7 +124,7 @@ static int write_elem_block(snd_tplg_t *tplg,
vendor_type = elem->vendor_type;
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);
@@ -242,7 +242,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);
diff --git a/src/topology/parser.c b/src/topology/parser.c
index 44c6146b..6671055a 100644
--- a/src/topology/parser.c
+++ b/src/topology/parser.c
@@ -361,6 +361,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;