aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMengdong Lin <mengdong.lin@linux.intel.com>2016-11-02 13:03:17 -0400
committerMark Brown <broonie@kernel.org>2016-11-03 12:27:57 -0400
commit288b8da7e992f0b86b283f98e92885781ffdcaee (patch)
treea49fea14e44783737f80badfc53c5facc438c1fd
parent8f27c4abc2cd7a31adb896a6b4861cdcb921d063 (diff)
ASoC: topology: Support topology file of ABI v4
Users start to use topology ABI from v4. ABI v5 updated existing manifest and PCM elements. Two previous patches can support these ABI updates in a backward compatible way. So if the topology file from user space is generated by ABI v4, kernel will no longer quit but continue parsing. Signed-off-by: Mengdong Lin <mengdong.lin@linux.intel.com> Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--include/uapi/sound/asoc.h3
-rw-r--r--sound/soc/soc-topology.c4
2 files changed, 5 insertions, 2 deletions
diff --git a/include/uapi/sound/asoc.h b/include/uapi/sound/asoc.h
index 8d9814b17c46..69cae7198b18 100644
--- a/include/uapi/sound/asoc.h
+++ b/include/uapi/sound/asoc.h
@@ -83,7 +83,8 @@
83#define SND_SOC_TPLG_NUM_TEXTS 16 83#define SND_SOC_TPLG_NUM_TEXTS 16
84 84
85/* ABI version */ 85/* ABI version */
86#define SND_SOC_TPLG_ABI_VERSION 0x5 86#define SND_SOC_TPLG_ABI_VERSION 0x5 /* current version */
87#define SND_SOC_TPLG_ABI_VERSION_MIN 0x4 /* oldest version supported */
87 88
88/* Max size of TLV data */ 89/* Max size of TLV data */
89#define SND_SOC_TPLG_TLV_SIZE 32 90#define SND_SOC_TPLG_TLV_SIZE 32
diff --git a/sound/soc/soc-topology.c b/sound/soc/soc-topology.c
index 0f1c8ebf8cda..2f9b64ec5904 100644
--- a/sound/soc/soc-topology.c
+++ b/sound/soc/soc-topology.c
@@ -2056,7 +2056,9 @@ static int soc_valid_header(struct soc_tplg *tplg,
2056 return -EINVAL; 2056 return -EINVAL;
2057 } 2057 }
2058 2058
2059 if (hdr->abi != SND_SOC_TPLG_ABI_VERSION) { 2059 /* Support ABI from version 4 */
2060 if (hdr->abi > SND_SOC_TPLG_ABI_VERSION
2061 || hdr->abi < SND_SOC_TPLG_ABI_VERSION_MIN) {
2060 dev_err(tplg->dev, 2062 dev_err(tplg->dev,
2061 "ASoC: pass %d invalid ABI version got 0x%x need 0x%x at offset 0x%lx size 0x%zx.\n", 2063 "ASoC: pass %d invalid ABI version got 0x%x need 0x%x at offset 0x%lx size 0x%zx.\n",
2062 tplg->pass, hdr->abi, 2064 tplg->pass, hdr->abi,