Re: [PATCH] regcache: Use a consistent sort for defaults table

From: Péter Ujfalusi

Date: Thu Aug 06 2026 - 04:28:43 EST




On 05/08/2026 20:51, Mark Brown wrote:
> When we look up registers in the defaults table we use a binary search,
> and we have a regcache_sort_defaults() API to help drivers that constuct
> their defaults tables on the fly. Unfortunately the lookup and the sort
> don't use the same comparison function, and to make matters worse the
> comparison function used during lookups is written for signed register
> numbers rather than the unsigned ones we actually have so can produce
> suprising results when some of the addresses have the top bit set.
>
> Standardise on the more explicitly coded function to ensure consistent
> results.

Reviewed-by: Peter Ujfalusi <peter.ujfalusi@xxxxxxxxxxxxxxx>

>
> Signed-off-by: Mark Brown <broonie@xxxxxxxxxx>
> ---
> drivers/base/regmap/regcache.c | 10 +---------
> 1 file changed, 1 insertion(+), 9 deletions(-)
>
> diff --git a/drivers/base/regmap/regcache.c b/drivers/base/regmap/regcache.c
> index aa8f2efed779..480bc76f9a02 100644
> --- a/drivers/base/regmap/regcache.c
> +++ b/drivers/base/regmap/regcache.c
> @@ -727,14 +727,6 @@ unsigned int regcache_get_val(struct regmap *map, const void *base,
> return -1;
> }
>
> -static int regcache_default_cmp(const void *a, const void *b)
> -{
> - const struct reg_default *_a = a;
> - const struct reg_default *_b = b;
> -
> - return _a->reg - _b->reg;
> -}
> -
> int regcache_lookup_reg(struct regmap *map, unsigned int reg)
> {
> struct reg_default key;
> @@ -744,7 +736,7 @@ int regcache_lookup_reg(struct regmap *map, unsigned int reg)
> key.def = 0;
>
> r = bsearch(&key, map->reg_defaults, map->num_reg_defaults,
> - sizeof(struct reg_default), regcache_default_cmp);
> + sizeof(struct reg_default), regcache_defaults_cmp);
>
> if (r)
> return r - map->reg_defaults;
>
> ---
> base-commit: 075b74841bd0065a3bda3440873c747938e69b68
> change-id: 20260805-regmap-regcache-sort-8d144a68bf8d
>
> Best regards,
> --
> Mark Brown <broonie@xxxxxxxxxx>
>

--
Péter