]> www.infradead.org Git - users/dwmw2/linux.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 8 Apr 2022 12:40:44 +0000 (14:40 +0200)
commit feb00b736af64875560f371fe7f58b0b7f239046 upstream.

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>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
sound/soc/soc-topology.c

index 4d24ac255d2532a64def67a2b04a9011a05ef087..23a5f9a52da0fddf8ea0b95d3910811893deee70 100644 (file)
@@ -578,7 +578,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;