ASoC: topology: Remove ABI v4 support
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>
This commit is contained in:
parent
251ea65205
commit
c57468dc1f
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user