Re: [PATCH] regcache: Use a consistent sort for defaults table
Péter Ujfalusi <[email protected]>
| Newsgroups | gmane.linux.kernel |
|---|---|
| Message-ID | <[email protected]> |
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 <[email protected]> > > Signed-off-by: Mark Brown <[email protected]> > --- > 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 <[email protected]> > -- Péter