On 6/14/26 8:26 AM, David Heidelberg wrote:
> 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 ?


                qcom,tdm-sync-mode = <0>;
                qcom,tdm-sync-src = <1>;
sets the short sync with 1 clk delay making it DSP_A.

for DSP_B you would need, no delay.

--srini
> 
> 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