ASoC: topology: Remove ABI v4 support
authorCezary Rojewski <cezary.rojewski@intel.com>
Wed, 3 Apr 2024 09:16:27 +0000 (11:16 +0200)
committerMark Brown <broonie@kernel.org>
Thu, 4 Apr 2024 14:50:04 +0000 (15:50 +0100)
There are no users of soc-topology ABI v4 since kernel v5.4 so remove
all v4 -> v5 converters.

Cc: Curtis Malainey <cujomalainey@chromium.org>
Cc: Ɓukasz Majczak <lmajczak@google.com>
Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Link: https://msgid.link/r/20240403091629.647267-3-cezary.rojewski@intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-topology.c

index ba4890991f0d7850b6269c24bc83e5e2f679852c..75a7481a4f182bd1511fe501847a5f839ea998c7 100644 (file)
@@ -1761,75 +1761,6 @@ static int soc_tplg_pcm_create(struct soc_tplg *tplg,
        return  soc_tplg_fe_link_create(tplg, pcm);
 }
 
-/* copy stream caps from the old version 4 of source */
-static void stream_caps_new_ver(struct snd_soc_tplg_stream_caps *dest,
-                               struct snd_soc_tplg_stream_caps_v4 *src)
-{
-       dest->size = cpu_to_le32(sizeof(*dest));
-       memcpy(dest->name, src->name, SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
-       dest->formats = src->formats;
-       dest->rates = src->rates;
-       dest->rate_min = src->rate_min;
-       dest->rate_max = src->rate_max;
-       dest->channels_min = src->channels_min;
-       dest->channels_max = src->channels_max;
-       dest->periods_min = src->periods_min;
-       dest->periods_max = src->periods_max;
-       dest->period_size_min = src->period_size_min;
-       dest->period_size_max = src->period_size_max;
-       dest->buffer_size_min = src->buffer_size_min;
-       dest->buffer_size_max = src->buffer_size_max;
-}
-
-/**
- * pcm_new_ver - Create the new version of PCM from the old version.
- * @tplg: topology context
- * @src: older version of pcm as a source
- * @pcm: latest version of pcm created from the source
- *
- * Support from version 4. User should free the returned pcm manually.
- */
-static int pcm_new_ver(struct soc_tplg *tplg,
-                      struct snd_soc_tplg_pcm *src,
-                      struct snd_soc_tplg_pcm **pcm)
-{
-       struct snd_soc_tplg_pcm *dest;
-       struct snd_soc_tplg_pcm_v4 *src_v4;
-       int i;
-
-       *pcm = NULL;
-
-       if (le32_to_cpu(src->size) != sizeof(*src_v4)) {
-               dev_err(tplg->dev, "ASoC: invalid PCM size\n");
-               return -EINVAL;
-       }
-
-       dev_warn(tplg->dev, "ASoC: old version of PCM\n");
-       src_v4 = (struct snd_soc_tplg_pcm_v4 *)src;
-       dest = kzalloc(sizeof(*dest), GFP_KERNEL);
-       if (!dest)
-               return -ENOMEM;
-
-       dest->size = cpu_to_le32(sizeof(*dest)); /* size of latest abi version */
-       memcpy(dest->pcm_name, src_v4->pcm_name, SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
-       memcpy(dest->dai_name, src_v4->dai_name, SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
-       dest->pcm_id = src_v4->pcm_id;
-       dest->dai_id = src_v4->dai_id;
-       dest->playback = src_v4->playback;
-       dest->capture = src_v4->capture;
-       dest->compress = src_v4->compress;
-       dest->num_streams = src_v4->num_streams;
-       for (i = 0; i < le32_to_cpu(dest->num_streams); i++)
-               memcpy(&dest->stream[i], &src_v4->stream[i],
-                      sizeof(struct snd_soc_tplg_stream));
-
-       for (i = 0; i < 2; i++)
-               stream_caps_new_ver(&dest->caps[i], &src_v4->caps[i]);
-
-       *pcm = dest;
-       return 0;
-}
-
 static int soc_tplg_pcm_elems_load(struct soc_tplg *tplg,
        struct snd_soc_tplg_hdr *hdr)
 {
@@ -1845,8 +1776,7 @@ static int soc_tplg_pcm_elems_load(struct soc_tplg *tplg,
        /* check the element size and count */
        pcm = (struct snd_soc_tplg_pcm *)tplg->pos;
        size = le32_to_cpu(pcm->size);
-       if (size > sizeof(struct snd_soc_tplg_pcm)
-               || size < sizeof(struct snd_soc_tplg_pcm_v4)) {
+       if (size > sizeof(struct snd_soc_tplg_pcm)) {
                dev_err(tplg->dev, "ASoC: invalid size %d for PCM elems\n",
                        size);
                return -EINVAL;
@@ -1865,15 +1795,11 @@ static int soc_tplg_pcm_elems_load(struct soc_tplg *tplg,
                /* check ABI version by size, create a new version of pcm
                 * if abi not match.
                 */
-               if (size == sizeof(*pcm)) {
-                       abi_match = true;
-                       _pcm = pcm;
-               } else {
-                       abi_match = false;
-                       ret = pcm_new_ver(tplg, pcm, &_pcm);
-                       if (ret < 0)
-                               return ret;
-               }
+               if (size != sizeof(*pcm))
+                       return -EINVAL;
+
+               abi_match = true;
+               _pcm = pcm;
 
                /* create the FE DAIs and DAI links */
                ret = soc_tplg_pcm_create(tplg, _pcm);
@@ -1965,49 +1891,6 @@ static void set_link_hw_format(struct snd_soc_dai_link *link,
        }
 }
 
-/**
- * link_new_ver - Create a new physical link config from the old
- * version of source.
- * @tplg: topology context
- * @src: old version of phyical link config as a source
- * @link: latest version of physical link config created from the source
- *
- * Support from version 4. User need free the returned link config manually.
- */
-static int link_new_ver(struct soc_tplg *tplg,
-                       struct snd_soc_tplg_link_config *src,
-                       struct snd_soc_tplg_link_config **link)
-{
-       struct snd_soc_tplg_link_config *dest;
-       struct snd_soc_tplg_link_config_v4 *src_v4;
-       int i;
-
-       *link = NULL;
-
-       if (le32_to_cpu(src->size) !=
-           sizeof(struct snd_soc_tplg_link_config_v4)) {
-               dev_err(tplg->dev, "ASoC: invalid physical link config size\n");
-               return -EINVAL;
-       }
-
-       dev_warn(tplg->dev, "ASoC: old version of physical link config\n");
-
-       src_v4 = (struct snd_soc_tplg_link_config_v4 *)src;
-       dest = kzalloc(sizeof(*dest), GFP_KERNEL);
-       if (!dest)
-               return -ENOMEM;
-
-       dest->size = cpu_to_le32(sizeof(*dest));
-       dest->id = src_v4->id;
-       dest->num_streams = src_v4->num_streams;
-       for (i = 0; i < le32_to_cpu(dest->num_streams); i++)
-               memcpy(&dest->stream[i], &src_v4->stream[i],
-                      sizeof(struct snd_soc_tplg_stream));
-
-       *link = dest;
-       return 0;
-}
-
 /**
  * snd_soc_find_dai_link - Find a DAI link
  *
@@ -2124,8 +2007,7 @@ static int soc_tplg_link_elems_load(struct soc_tplg *tplg,
        /* check the element size and count */
        link = (struct snd_soc_tplg_link_config *)tplg->pos;
        size = le32_to_cpu(link->size);
-       if (size > sizeof(struct snd_soc_tplg_link_config)
-               || size < sizeof(struct snd_soc_tplg_link_config_v4)) {
+       if (size > sizeof(struct snd_soc_tplg_link_config)) {
                dev_err(tplg->dev, "ASoC: invalid size %d for physical link elems\n",
                        size);
                return -EINVAL;
@@ -2140,15 +2022,11 @@ static int soc_tplg_link_elems_load(struct soc_tplg *tplg,
        for (i = 0; i < count; i++) {
                link = (struct snd_soc_tplg_link_config *)tplg->pos;
                size = le32_to_cpu(link->size);
-               if (size == sizeof(*link)) {
-                       abi_match = true;
-                       _link = link;
-               } else {
-                       abi_match = false;
-                       ret = link_new_ver(tplg, link, &_link);
-                       if (ret < 0)
-                               return ret;
-               }
+               if (size != sizeof(*link))
+                       return -EINVAL;
+
+               abi_match = true;
+               _link = link;
 
                ret = soc_tplg_link_config(tplg, _link);
                if (ret < 0) {
@@ -2273,57 +2151,6 @@ static int soc_tplg_dai_elems_load(struct soc_tplg *tplg,
        return 0;
 }
 
-/**
- * manifest_new_ver - Create a new version of manifest from the old version
- * of source.
- * @tplg: topology context
- * @src: old version of manifest as a source
- * @manifest: latest version of manifest created from the source
- *
- * Support from version 4. Users need free the returned manifest manually.
- */
-static int manifest_new_ver(struct soc_tplg *tplg,
-                           struct snd_soc_tplg_manifest *src,
-                           struct snd_soc_tplg_manifest **manifest)
-{
-       struct snd_soc_tplg_manifest *dest;
-       struct snd_soc_tplg_manifest_v4 *src_v4;
-       int size;
-
-       *manifest = NULL;
-
-       size = le32_to_cpu(src->size);
-       if (size != sizeof(*src_v4)) {
-               dev_warn(tplg->dev, "ASoC: invalid manifest size %d\n",
-                        size);
-               if (size)
-                       return -EINVAL;
-               src->size = cpu_to_le32(sizeof(*src_v4));
-       }
-
-       dev_warn(tplg->dev, "ASoC: old version of manifest\n");
-
-       src_v4 = (struct snd_soc_tplg_manifest_v4 *)src;
-       dest = kzalloc(sizeof(*dest) + le32_to_cpu(src_v4->priv.size),
-                      GFP_KERNEL);
-       if (!dest)
-               return -ENOMEM;
-
-       dest->size = cpu_to_le32(sizeof(*dest)); /* size of latest abi version */
-       dest->control_elems = src_v4->control_elems;
-       dest->widget_elems = src_v4->widget_elems;
-       dest->graph_elems = src_v4->graph_elems;
-       dest->pcm_elems = src_v4->pcm_elems;
-       dest->dai_link_elems = src_v4->dai_link_elems;
-       dest->priv.size = src_v4->priv.size;
-       if (dest->priv.size)
-               memcpy(dest->priv.data, src_v4->priv.data,
-                      le32_to_cpu(src_v4->priv.size));
-
-       *manifest = dest;
-       return 0;
-}
-
 static int soc_tplg_manifest_load(struct soc_tplg *tplg,
                                  struct snd_soc_tplg_hdr *hdr)
 {
@@ -2334,16 +2161,11 @@ static int soc_tplg_manifest_load(struct soc_tplg *tplg,
        manifest = (struct snd_soc_tplg_manifest *)tplg->pos;
 
        /* check ABI version by size, create a new manifest if abi not match */
-       if (le32_to_cpu(manifest->size) == sizeof(*manifest)) {
-               abi_match = true;
-               _manifest = manifest;
-       } else {
-               abi_match = false;
+       if (le32_to_cpu(manifest->size) != sizeof(*manifest))
+               return -EINVAL;
 
-               ret = manifest_new_ver(tplg, manifest, &_manifest);
-               if (ret < 0)
-                       return ret;
-       }
+       abi_match = true;
+       _manifest = manifest;
 
        /* pass control to component driver for optional further init */
        if (tplg->ops && tplg->ops->manifest)