Re: [PATCH v4 3/8] ASoC: qcom: sdm845: Use per-speaker RX masks for TDM slot assignment

From: Srinivas Kandagatla

Date: Fri Sep 25 2026 - 04:23:54 EST


On 9/24/26 2:24 PM, David Heidelberg via B4 Relay wrote:
> From: David Heidelberg <david@xxxxxxx>
>
> Both Left and Right codec DAIs were passing the same SPK_TDM_RX_MASK,
> both speakers ended up on slot 0, breaking the one speaker in
> configuration such as on Pixel 3.
>
> Split SPK_TDM_RX_MASK into per-speaker masks so that the Left codec
> gets slot 0 (rx_mask=0x01) and the Right codec gets slot 1
> (rx_mask=0x02).
>
> This commit is here, so later CS35L36 receives correct slot for right
> and left speakers.
>
> Assisted-by: Claude:claude-4.6-opus
> Signed-off-by: David Heidelberg <david@xxxxxxx>
> ---

Reviewed-by: Srinivas Kandagatla <srinivas.kandagatla@xxxxxxxxxxxxxxxx>

> sound/soc/qcom/sdm845.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/sound/soc/qcom/sdm845.c b/sound/soc/qcom/sdm845.c
> index d1cc825fc5cdc..59cfa3b26cd4d 100644
> --- a/sound/soc/qcom/sdm845.c
> +++ b/sound/soc/qcom/sdm845.c
> @@ -152,29 +152,29 @@ static int sdm845_tdm_snd_hw_params(struct snd_pcm_substream *substream,
> }
> }
>
> for_each_rtd_codec_dais(rtd, j, codec_dai) {
>
> if (!strcmp(codec_dai->component->name_prefix, "Left")) {
> ret = snd_soc_dai_set_tdm_slot(
> codec_dai, LEFT_SPK_TDM_TX_MASK,
> - SPK_TDM_RX_MASK, NUM_TDM_SLOTS,
> + LEFT_SPK_TDM_RX_MASK, NUM_TDM_SLOTS,
> slot_width);
> if (ret < 0) {
> dev_err(rtd->dev,
> "DEV0 TDM slot err:%d\n", ret);
> return ret;
> }
> }
>
> if (!strcmp(codec_dai->component->name_prefix, "Right")) {
> ret = snd_soc_dai_set_tdm_slot(
> codec_dai, RIGHT_SPK_TDM_TX_MASK,
> - SPK_TDM_RX_MASK, NUM_TDM_SLOTS,
> + RIGHT_SPK_TDM_RX_MASK, NUM_TDM_SLOTS,
> slot_width);
> if (ret < 0) {
> dev_err(rtd->dev,
> "DEV1 TDM slot err:%d\n", ret);
> return ret;
> }
> }
> }
>