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