]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
ASoC: topology: Allow TLV control to be either read or write
authorAmadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Wed, 12 Jan 2022 17:00:29 +0000 (18:00 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 24 Jan 2022 13:31:22 +0000 (13:31 +0000)
There is no reason to force readwrite access on TLV controls. It can be
either read, write or both. This is further evidenced in code where it
performs following checks:
                if ((k->access & SNDRV_CTL_ELEM_ACCESS_TLV_READ) && !sbe->get)
                        return -EINVAL;
                if ((k->access & SNDRV_CTL_ELEM_ACCESS_TLV_WRITE) && !sbe->put)
                        return -EINVAL;

Fixes: 1a3232d2f61d ("ASoC: topology: Add support for TLV bytes controls")
Signed-off-by: Amadeusz Sławiński <amadeuszx.slawinski@linux.intel.com>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://lore.kernel.org/r/20220112170030.569712-3-amadeuszx.slawinski@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-topology.c

index a97c02c4ef6b5fe1515e018e747c6b3ecc22c194..a9a9c46d0316a1e89d8377aa22427f6879503bfc 100644 (file)
@@ -512,7 +512,8 @@ static int soc_tplg_kcontrol_bind_io(struct snd_soc_tplg_ctl_hdr *hdr,
 
        if (le32_to_cpu(hdr->ops.info) == SND_SOC_TPLG_CTL_BYTES
                && k->iface & SNDRV_CTL_ELEM_IFACE_MIXER
-               && k->access & SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE
+               && (k->access & SNDRV_CTL_ELEM_ACCESS_TLV_READ
+                   || k->access & SNDRV_CTL_ELEM_ACCESS_TLV_WRITE)
                && k->access & SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK) {
                struct soc_bytes_ext *sbe;
                struct snd_soc_tplg_bytes_control *be;