Re: [PATCH RFC 5/6] ASoC: cs35l36: Implement set_tdm_slot to program RX slot register

From: Richard Fitzgerald

Date: Thu Jul 30 2026 - 05:29:40 EST


On 30/7/26 09:53, Charles Keepax wrote:
On Wed, Jul 29, 2026 at 08:22:42PM +0200, David Heidelberg wrote:
On 06/07/2026 10:52, Charles Keepax wrote:
On Sun, Jul 05, 2026 at 10:06:55PM +0200, David Heidelberg via B4 Relay wrote:
+ if (rx_mask)
+ regmap_update_bits(cs35l36->regmap, CS35L36_ASP_RX1_SLOT,
+ CS35L36_ASP_RX1_SLOT_MASK,
+ ffs(rx_mask) - 1);

It is more normal for the masks to specify the slot number rather
than the bit number, it would probably be nicer to stick with
that convention even though it will complicate the code here a
little.

Thank you, is there one of the cs*l* series which implements in similar
fashion as requested?

sound/soc/codecs/arizona.c, sound/soc/codecs/cs42l43.c or
sound/soc/codecs/cs35l56.c all implement set_tdm, those are
probably reasonable inspiration.

Thanks,
Charles

Worth noting that it's not mandatory to implement set_tdm_slot().
If nothing needs it this is just adding dead code.

However, cs35l56_make_tdm_config_word() is probably what you want
as a starting point. It uses the mask to indicate which TDM slots are
active and assigns those slot numbers to consecutive RX/TX channels.
But the register layout of the *X_SLOT fields is different on CS35L36,
so the code will need some adjustment.