ASoC: topology: Support topology file of ABI v4
authorMengdong Lin <mengdong.lin@linux.intel.com>
Wed, 2 Nov 2016 17:03:17 +0000 (01:03 +0800)
committerMark Brown <broonie@kernel.org>
Thu, 3 Nov 2016 16:27:57 +0000 (10:27 -0600)
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>
include/uapi/sound/asoc.h
sound/soc/soc-topology.c

index 8d9814b17c4648caea6c0acde5a8c9496fb9bc1a..69cae7198b18d6789eb91d2345a0573f9aeeb3cd 100644 (file)
@@ -83,7 +83,8 @@
 #define SND_SOC_TPLG_NUM_TEXTS         16
 
 /* ABI version */
-#define SND_SOC_TPLG_ABI_VERSION       0x5
+#define SND_SOC_TPLG_ABI_VERSION       0x5     /* current version */
+#define SND_SOC_TPLG_ABI_VERSION_MIN   0x4     /* oldest version supported */
 
 /* Max size of TLV data */
 #define SND_SOC_TPLG_TLV_SIZE          32
index 0f1c8ebf8cda40b84141a34e28a3cac45640e286..2f9b64ec590478e450194b9489c89092f081468d 100644 (file)
@@ -2056,7 +2056,9 @@ static int soc_valid_header(struct soc_tplg *tplg,
                return -EINVAL;
        }
 
-       if (hdr->abi != SND_SOC_TPLG_ABI_VERSION) {
+       /* Support ABI from version 4 */
+       if (hdr->abi > SND_SOC_TPLG_ABI_VERSION
+               || hdr->abi < SND_SOC_TPLG_ABI_VERSION_MIN) {
                dev_err(tplg->dev,
                        "ASoC: pass %d invalid ABI version got 0x%x need 0x%x at offset 0x%lx size 0x%zx.\n",
                        tplg->pass, hdr->abi,