Linux Sound subsystem development
 help / color / mirror / Atom feed
* [PATCH] ASoC: qcom: lpass-cpu: use DAI table index for playback constraints
@ 2026-09-20 14:58 Zimeng Li
  2026-09-20 16:05 ` Srinivas Kandagatla
  2026-09-20 19:38 ` [PATCH v2] " Zimeng Li
  0 siblings, 2 replies; 7+ messages in thread
From: Zimeng Li @ 2026-09-20 14:58 UTC (permalink / raw)
  To: srini, broonie; +Cc: lgirdwood, tiwai, linux-sound, linux-arm-msm, Zimeng Li

The DAI ID is a hardware port ID and is not necessarily the index of
the corresponding entry in variant->dai_driver.

When configuring a DAI with LPAIF_I2SCTL_MODE_QUAD01, the probe code
currently uses dai_id to index variant->dai_driver. This is incorrect
for platforms where DAI IDs are sparse. For example, the IPQ806x MI2S
DAI has ID 4 while it is the only entry in the DAI driver table, so
the current code accesses dai_driver[4] instead of the DAI being
processed.

Use the loop index i when updating the current DAI's playback channel
constraints, while retaining dai_id for indexing the hardware-port
specific playback SD-line mode array.

This fixes the incorrect DAI table access for platforms where the DAI
ID does not match its position in the driver table.

Fixes: c223f41c1a52 ("ASoC: qcom: Add four speaker support on MI2S secondary")
Signed-off-by: Zimeng Li <me@lizi.moe>
Assisted-by: LLM
---
Compile-tested with LLVM for ARM using multi_v7_defconfig with
CONFIG_SND_SOC_STORM=m. The lpass-cpu.o, lpass-ipq806x.o and
lpass-platform.o targets built successfully. Not hardware-tested;
the IPQ806x example is based on static analysis, not a reproduced crash.

 sound/soc/qcom/lpass-cpu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/sound/soc/qcom/lpass-cpu.c b/sound/soc/qcom/lpass-cpu.c
index 242bc16da..079177a6d 100644
--- a/sound/soc/qcom/lpass-cpu.c
+++ b/sound/soc/qcom/lpass-cpu.c
@@ -1234,8 +1234,8 @@ int asoc_qcom_lpass_cpu_platform_probe(struct platform_device *pdev)
 		}
 		if (drvdata->mi2s_playback_sd_mode[dai_id] ==
 			LPAIF_I2SCTL_MODE_QUAD01) {
-			variant->dai_driver[dai_id].playback.channels_min = 4;
-			variant->dai_driver[dai_id].playback.channels_max = 4;
+			variant->dai_driver[i].playback.channels_min = 4;
+			variant->dai_driver[i].playback.channels_max = 4;
 		}
 	}
 

base-commit: 0ed6f7f62318a581fe9698f8a4e98c7ca01160e4
-- 
2.55.0

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2026-09-21 13:10 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-09-20 14:58 [PATCH] ASoC: qcom: lpass-cpu: use DAI table index for playback constraints Zimeng Li
2026-09-20 16:05 ` Srinivas Kandagatla
2026-09-20 19:33   ` Zimeng Li
2026-09-21 13:10   ` Mark Brown
2026-09-20 19:38 ` [PATCH v2] " Zimeng Li
2026-09-21  8:27   ` Mark Brown
2026-09-21  9:46     ` Li Tadokoro

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox