]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: topology: Save num_channels value for mixer controls
authorCezary Rojewski <cezary.rojewski@intel.com>
Mon, 17 Feb 2025 10:21:07 +0000 (11:21 +0100)
committerMark Brown <broonie@kernel.org>
Mon, 24 Feb 2025 16:01:52 +0000 (16:01 +0000)
To provide minimal support for multi-channel kcontrols i.e.: more than
stereo configuration, store the number of channels specified within the
SectionControlMixer. The field is part of the topology standard,
currently skipped by the ASoC core.

Signed-off-by: Cezary Rojewski <cezary.rojewski@intel.com>
Link: https://patch.msgid.link/20250217102115.3539427-3-cezary.rojewski@intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
include/sound/soc.h
sound/soc/soc-topology.c

index 644cfe26022edcc6f5fa13d66e130e638f62b0aa..6bb2fca044c5e4a2447a26f512e9061716917caf 100644 (file)
@@ -1254,6 +1254,7 @@ struct soc_mixer_control {
        int min, max, platform_max;
        int reg, rreg;
        unsigned int shift, rshift;
+       u32 num_channels;
        unsigned int sign_bit;
        unsigned int invert:1;
        unsigned int autodisable:1;
index 921521a84e29728e8a6f865fe616c553edae9193..2b86cc3311f760c3f5c91ddae8c9646e77e7ba65 100644 (file)
@@ -669,6 +669,7 @@ static int soc_tplg_control_dmixer_create(struct soc_tplg *tplg, struct snd_kcon
        sm->min = le32_to_cpu(mc->min);
        sm->invert = le32_to_cpu(mc->invert);
        sm->platform_max = le32_to_cpu(mc->platform_max);
+       sm->num_channels = le32_to_cpu(mc->num_channels);
 
        /* map io handlers */
        err = soc_tplg_kcontrol_bind_io(&mc->hdr, kc, tplg);