From: David Heidelberg <[email protected]> I'm currently pairing this with cs35l36 codec.
Currently this worked only because the cs35l36 codec mapped both DSP_A and DSP_B to the same hardware register value (asp_fmt = 0), which is inherently DSP_A timing. The CPU-side AFE is configured with qcom,tdm-data-delay = <1> which produces DSP_A framing. The codec format should match what is actually on the wire. So I'm pretty lost if I should go fixing cs35l36 or sdm845.c. Signed-off-by: David Heidelberg <[email protected]> --- sound/soc/qcom/sdm845.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/qcom/sdm845.c b/sound/soc/qcom/sdm845.c index 0ce9dff4dc525..7bf22e24b193a 100644 --- a/sound/soc/qcom/sdm845.c +++ b/sound/soc/qcom/sdm845.c @@ -376,17 +376,17 @@ static int sdm845_snd_startup(struct snd_pcm_substream *substream) case QUATERNARY_TDM_RX_0: case QUATERNARY_TDM_TX_0: if (++(data->quat_tdm_clk_count) == 1) { snd_soc_dai_set_sysclk(cpu_dai, Q6AFE_LPASS_CLK_ID_QUAD_TDM_IBIT, TDM_BCLK_RATE, SNDRV_PCM_STREAM_PLAYBACK); } - codec_dai_fmt |= SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_DSP_B; + codec_dai_fmt |= SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_DSP_A; for_each_rtd_codec_dais(rtd, j, codec_dai) { if (!strcmp(codec_dai->component->name_prefix, "Left")) { ret = snd_soc_dai_set_fmt( codec_dai, codec_dai_fmt); if (ret < 0) { --- base-commit: ec039126b7fac4e3af35ebccaa7c6f9b6875ba81 change-id: 20260613-rfc-dsp-b-to-a-178a3c0ae7e1 Best regards, -- David Heidelberg <[email protected]>

