On 14/06/2026 01:53, Mark Brown wrote:
On Sat, Jun 13, 2026 at 09:55:59PM +0200, David Heidelberg via B4 Relay wrote:

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.

That sounds like both.  The Cirrus driver is definitely buggy if it's
mapping DSP A and B to the same register value, at least one of those is
wrong.

I need to clarify. The CS35L36 supports by default only DSP_A, but when extended to "take DSP_B", speaker just works.

This was done previously.

Since there isn't any different configuration on the codec side when added DSP_B into same codepath as DSP_A, I would assume QCOM ASoC send DSP_A, just marking it as DSP_B ?

There isn't any other consumer to check against and I would assume incorrectly configured TDM slot would lead - at least - to disorted output.

The reference (which now works) is here [1].

David

[1] https://codeberg.org/sdm845/linux/commits/branch/b4/pixel3-audio

Reply via email to