Re: [PATCH v2] ASoC: codecs: lpass-macro: Add support for channel map mixer control

From: Alexey Klimov
Date: Wed Oct 01 2025 - 10:07:13 EST


On Tue Sep 2, 2025 at 7:23 AM BST, Mohammad Rafi Shaik wrote:
> Introduce the channel map mixer control support for LPASS macro
> codec Digital Audio Interfaces (DAIs). The channel map mixer controls
> are required by APPS to configure usecase-specific audio routing and

What is APPS here? Will be good to have this abbreviation or acronym explained.

> channel mapping.
>
> Signed-off-by: Mohammad Rafi Shaik <mohammad.rafi.shaik@xxxxxxxxxxxxxxxx>
> ---
> Changes in v2:
> - Updated patch with improved commit description..
> - Link to v1: https://lore.kernel.org/linux-sound/20240930053111.3986838-1-quic_mohs@xxxxxxxxxxx/
> ---
> sound/soc/codecs/lpass-macro-common.c | 55 +++++++++++++++++++++++++++
> sound/soc/codecs/lpass-macro-common.h | 2 +
> sound/soc/codecs/lpass-rx-macro.c | 12 ++++++
> sound/soc/codecs/lpass-tx-macro.c | 9 +++++
> sound/soc/codecs/lpass-va-macro.c | 9 +++++
> sound/soc/codecs/lpass-wsa-macro.c | 12 ++++++
> 6 files changed, 99 insertions(+)
>
> diff --git a/sound/soc/codecs/lpass-macro-common.c b/sound/soc/codecs/lpass-macro-common.c
> index 6e3b8d0897dd..777af4885245 100644
> --- a/sound/soc/codecs/lpass-macro-common.c
> +++ b/sound/soc/codecs/lpass-macro-common.c
> @@ -8,12 +8,67 @@
> #include <linux/platform_device.h>
> #include <linux/pm_domain.h>
> #include <linux/pm_runtime.h>
> +#include <sound/control.h>
> +#include <sound/pcm.h>
> +#include <sound/soc.h>
>
> #include "lpass-macro-common.h"
>
> static DEFINE_MUTEX(lpass_codec_mutex);
> static enum lpass_codec_version lpass_codec_version;
>
> +static int lpass_macro_chmap_ctl_get(struct snd_kcontrol *kcontrol,
> + struct snd_ctl_elem_value *ucontrol)
> +{
> + struct snd_pcm_chmap *info = snd_kcontrol_chip(kcontrol);
> + struct snd_soc_dai *dai = info->private_data;
> + u32 *chmap_data = NULL;

You probably don't need to set it to NULL here, if it will be overwritten
by kzalloc() call few lines below

> + u32 rx_ch_cnt = 0;
> + u32 tx_ch_cnt = 0;
> + u32 rx_ch, tx_ch;
> +
> + chmap_data = kzalloc(sizeof(u32) * 2, GFP_KERNEL);

here.

[..]

Thanks,
Alexey