OSDN Git Service

ASoC: topology: Add support for WO and RO TLV byte kcontrols
authorDharageswari R <dharageswari.r@intel.com>
Tue, 8 Sep 2020 09:28:24 +0000 (12:28 +0300)
committerMark Brown <broonie@kernel.org>
Tue, 8 Sep 2020 12:54:59 +0000 (13:54 +0100)
This patch adds support for write-only and read-only TLV byte kcontrols
by checking for appropriate get/put IO handlers.

Signed-off-by: Dharageswari R <dharageswari.r@intel.com>
Reviewed-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
Link: https://lore.kernel.org/r/20200908092825.1813847-1-kai.vehmanen@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/soc-topology.c

index cee9986..28faaf5 100644 (file)
@@ -603,10 +603,11 @@ static int soc_tplg_kcontrol_bind_io(struct snd_soc_tplg_ctl_hdr *hdr,
                                sbe->get = ext_ops[i].get;
                }
 
-               if (sbe->put && sbe->get)
-                       return 0;
-               else
+               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;
+               return 0;
        }
 
        /* try and map vendor specific kcontrol handlers first */