Re: [PATCH v2] ASoC: qcom: audioreach: support multichannel PCM formats

From: Zhangfei Gao

Date: Tue Oct 27 2026 - 05:57:47 EST


On Tue, Oct 27, 2026 at 4:46 PM Prasad Kumpatla
<prasad.kumpatla@xxxxxxxxxxxxxxxx> wrote:
>
> > #define DRV_NAME "q6apm-dai"
> > #define POS_BUFFER_BYTES 4096
> > @@ -344,7 +345,10 @@ static int q6apm_dai_prepare(struct snd_soc_component *component,
> > cfg.num_channels = runtime->channels;
> > cfg.bit_width = prtd->bits_per_sample;
> > cfg.fmt = SND_AUDIOCODEC_PCM;
> > - audioreach_set_default_channel_mapping(cfg.channel_map, runtime->channels);
> > + ret = q6dsp_map_channels(cfg.channel_map, runtime->channels);
> > + if (ret)
> > + return ret;
> > +
> > if (prtd->state) {
> > /* clear the previous setup if any */
> > q6apm_graph_stop(prtd->graph);
> > @@ -1007,8 +1011,10 @@ static int q6apm_dai_compr_set_params(struct snd_soc_component *component,
> > cfg.num_channels = 2;
> > cfg.bit_width = prtd->bits_per_sample;
> > cfg.fmt = codec->id;
> > - audioreach_set_default_channel_mapping(cfg.channel_map,
> > - cfg.num_channels);
> > + ret = q6dsp_map_channels(cfg.channel_map, cfg.num_channels);
> |
> |
> |q6dsp_map_channels()| changes the mono mapping from |PCM_CHANNEL_FL| to
> |PCM_CHANNEL_FC| and does not handle 7 channels. Have these cases been
> checked and confirmed to be supported as expected for AudioReach ?

Yes, have checked with Rafi, should be PCM_CHANNEL_FC.

Also confirmed from audioreach-engine
https://github.com/AudioReach/audioreach-engine/blob/master/modules/processing/bassboost/capi/src/capi_bassboost_utils.cpp
case 1:
if (PCM_CHANNEL_C != format_ptr->format.channel_type[0])

https://github.com/AudioReach/audioreach-engine/blob/master/modules/processing/Virtualizer/api/Virtualizer_api.h
uint16_t channel_map[0];
/**< @h2xmle_description { Payload consisting of channel mapping
information for all the channels. \n
The channel mapping is specific for
specific number of channels \n
for 1 : [PCM_CHANNEL_C] \n
for 2 : [PCM_CHANNEL_L, PCM_CHANNEL_R] \n }

About 7 channel.
If hw requirement is there then we can add right.
Currently no qcom upstream device is testing 7 channels,

For example, RRD 4 chanels and Ride 6 channels.

Thanks