From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BC04D1684BE for ; Wed, 5 Aug 2026 18:04:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785953077; cv=none; b=QsRrB7PzSXV+R4HrGEsENL1RTvebWjXZonjjPVfO0bmdIGbdscHw8rRHhUd90h4y19sqYxFw55dYN/FYGj0+8q8bwrAyM2JbxirTTD1Lgsa13qtoEP2w9kWM+/8QZgk4RxvAHtPmLn4oIsd9DY0D/zLCTP872qkJF2TpYVPoaA8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785953077; c=relaxed/simple; bh=BBVcD5/bAaIf5ynP2iF9X6hGf96rkd/26kK/fLHQzWE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=hM5NPzz/lfGKUlcjpzjyY46g1X7V10fdg3VMUHIdyTM/9W2X1kfmjOwmz9zKwWVUbmEqbLQacdUCkk9SHf41cKIuzQ14furGZbJ/+5Lik5OPJDn3e4ItNCf+vJofLiCcIX5b8o0/KmH8F5gto6iCRnKxdF/jjnZuTcQ3khMdQV0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=YLH1ly74; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="YLH1ly74" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 343D51F000E9; Wed, 5 Aug 2026 18:04:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1785953076; bh=gMjybYlcaGns/peTfjnlCiH140whRUoqZIMLEgQ3rxY=; h=From:Date:Subject:To:Cc; b=YLH1ly74SuGCUrfzVH8ALaw7WMyJVVvTZMXvYCoUfHtVd3YeyOvG90WbEQM3TbnBt URa5FEKZQSOC1+i/wjsKpla7KCuFOVb5oo0UaoWyoI8Cg1In93c/MJQMa9WIV9na+f 1bfJ/7p3ZinRmmkhmZ2McRR3XXhEVupBOjiQ0BLAwr+JaUuTG5WMmEgNph/kRZEvyi saGx4gw0RnLrGEa45ejjUjOC/sA62mW3bmcSpoMZrQFEQtxH66TbqgOm2KmdLIt+1k dg4lgsizFWGilepzhR23AkC4vKSFvLiOxwIpZnX3Hu7y2nGax0WLEFELndqPLsNSfv +tG7jFD8yNkGA== From: Mark Brown Date: Wed, 05 Aug 2026 18:51:00 +0100 Subject: [PATCH] regcache: Use a consistent sort for defaults table Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260805-regmap-regcache-sort-v1-1-162186aad8b9@kernel.org> X-B4-Tracking: v=1; b=H4sIAAN4c2oC/yXM3QpAQBCG4VvRHNtaQptbkYP9GYzy0wxScu8WR 1/PwfdeIMiEAnVyAeNBQssckaUJ+MHOPSoK0ZDrvNJGl4qxn+z6jrd+QCULb8qErChsZVxnAsT rytjR+WWb9rfsbkS/vS247wdUazaweAAAAA== X-Change-ID: 20260805-regmap-regcache-sort-8d144a68bf8d To: Peter Ujfalusi Cc: Charles Keepax , Richard Fitzgerald , Pierre-Louis Bossart , linux-kernel@vger.kernel.org, Mark Brown X-Mailer: b4 0.16-dev X-Developer-Signature: v=1; a=openpgp-sha256; l=1828; i=broonie@kernel.org; h=from:subject:message-id; bh=BBVcD5/bAaIf5ynP2iF9X6hGf96rkd/26kK/fLHQzWE=; b=owGbwMvMwMWocq27KDak/QLjabUkhqziaqObL2/3zVYQEPaVfJGY+2bBOYm98RceO558EyThH cZa84Svk9GYhYGRi0FWTJFl7bOMVenhElvnP5r/CmYQKxPIFAYuTgGYCIsB+z9zr8YvzvcrjdgT Qho16qNk1ui1z/XTjzqXtmdDf7qpWGr+tKYW2RediRMjTEVkwqXvh5m//pOi9M1yQS7/RMeKxY6 tja+uBtS7m0jN0Wq9u/Dze2eWrOnb+aZ/mqnq9m8T91cpGYm3q39VHN7zOcyBXac+oKYkw37dW7 c3Fm59bIZu71dcyHqwXXh66NUDv59abeye0b0mMae22eLGkWdrM86dWRjNe03ebqm6sdGzC08/P Zt2UOLFMrf0Pb9vK7tyn7Q21OWXLFQuF3CabrXroq/Gs03Rxy5/DGGOyW5m8o4/VP/axSi5TkNy U9EXxyDhuPu1Z1U6PmWEuQpEB60MCveTsQz5s/S2xOn5AA== X-Developer-Key: i=broonie@kernel.org; a=openpgp; fpr=3F2568AAC26998F9E813A1C5C3F436CA30F5D8EB 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. Signed-off-by: Mark Brown --- 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