Re: [PATCH 0/3] ASoC: cs35l41/cs35l45/cs4265: sort the reg_defaults tables
Charles Keepax <[email protected]> Wed, 5 Aug 2026 09:59:01 +0100
| Newsgroups | org.kernel.vger.linux-sound,org.kernel.vger.stable |
|---|---|
| Message-ID | <[email protected]> |
On Wed, Aug 05, 2026 at 11:24:10AM +0300, Peter Ujfalusi wrote:
> Hi,
>
> reg_defaults must be sorted by ascending register address as
> regcache_lookup_reg() locates the entries in it with bsearch(), see commit
> fd80df352ba1 ("regcache: Add support for sorting defaults arrays").
>
> These three tables have entries which are out of order, so the binary search
> does not find part of them. For those registers regcache_reg_needs_sync()
> cannot compare the cached value against the default and reports that a sync
> is needed, so they are written to the device on every regcache_sync() even
> when they were never touched.
>
> The patches only reorder the existing entries, the text of every entry is
> kept verbatim and no default value is changed. Each table was verified by
> evaluating the register addresses and replaying lib/bsearch.c on them.
>
> Entries not reachable by the binary search, per table:
>
> cs35l41_reg 2 (of 47)
> cs35l45_defaults 36 (of 73)
> cs4265_reg_defaults 3 (of 16)
>
> For cs35l45 this is nearly half of the table: the DSP1_RX*_RATE and
> DSP1_TX*_RATE registers sit in the middle of it while their addresses are
> far above everything else, which cuts the search off from the whole
> 0x4c40 - 0xf010 range.
>
> Found by an audit of all reg_defaults tables under sound/, the SoundWire
> codec drivers are fixed by a separate series.
>
> Regards,
> Peter
>
> Peter Ujfalusi (3):
> ASoC: cs35l41: sort the register default table
> ASoC: cs35l45: sort the register default table
> ASoC: cs4265: sort the register default table
>
> sound/soc/codecs/cs35l41-lib.c | 2 +-
> sound/soc/codecs/cs35l45-tables.c | 32 +++++++++++++++----------------
> sound/soc/codecs/cs4265.c | 4 ++--
> 3 files changed, 19 insertions(+), 19 deletions(-)
Good spot.
Reviewed-by: Charles Keepax <[email protected]>
Thanks,
Charles