From patchwork Fri Feb 14 13:55:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Geert Uytterhoeven X-Patchwork-Id: 865166 Received: from weierstrass.telenet-ops.be (weierstrass.telenet-ops.be [195.130.137.81]) (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 C2B8E263F57 for ; Fri, 14 Feb 2025 14:04:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.130.137.81 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739541844; cv=none; b=EVloz1QPHMGePR+FgoFwzXf1aHwY7j/bJQjEptWjRHkT4iAE3vn33ITTG5QuDAW0AfuvAtBjT4irVX518O5vred8IKOQJjePWvRdW2KEKGOxhhb0sT5mCDclXK8x+j4p05/KbWkNm7oAYCZHaJNNLNZWIVpZxm9fvkfQ806B/2A= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1739541844; c=relaxed/simple; bh=veJJxIvxnpCnxt1HkukhxI/mnr0l3/TL9eBE4sYCmlQ=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=s7ZSeY6aQZ37/uMIC6+V5CO0YPPGi6uStbcI9UZDHr/3W9vgr+LcNm0S6JZwwDi2gEfIj5GA6MMRpguxoamZ2qXGqkW7ClySVGhCXsEMHhUw90j5+0l/LR+4weD+si4GUgkR5cx0InJa4366t9uLyKUleerWaUQnWZ9S0H/URAM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=glider.be; spf=none smtp.mailfrom=linux-m68k.org; arc=none smtp.client-ip=195.130.137.81 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=glider.be Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux-m68k.org Received: from michel.telenet-ops.be (michel.telenet-ops.be [IPv6:2a02:1800:110:4::f00:18]) by weierstrass.telenet-ops.be (Postfix) with ESMTPS id 4YvYVy03JRz4wy21 for ; Fri, 14 Feb 2025 14:56:26 +0100 (CET) Received: from ramsan.of.borg ([IPv6:2a02:1810:ac12:ed80:6395:73cc:7fc4:4cab]) by michel.telenet-ops.be with cmsmtp id DRvu2E00M1MuxXz06RvuMZ; Fri, 14 Feb 2025 14:56:25 +0100 Received: from rox.of.borg ([192.168.97.57]) by ramsan.of.borg with esmtp (Exim 4.97) (envelope-from ) id 1tiwAL-00000006p2a-0rh2; Fri, 14 Feb 2025 14:55:54 +0100 Received: from geert by rox.of.borg with local (Exim 4.97) (envelope-from ) id 1tiwAc-00000000qEe-1aws; Fri, 14 Feb 2025 14:55:54 +0100 From: Geert Uytterhoeven To: Michael Turquette , Stephen Boyd , Nicolas Ferre , Alexandre Belloni , Claudiu Beznea , Giovanni Cabiddu , Herbert Xu , David Miller , Linus Walleij , Bartosz Golaszewski , Joel Stanley , Andrew Jeffery , Crt Mori , Jonathan Cameron , Lars-Peter Clausen , Jacky Huang , Shan-Chun Hung , Yury Norov , Rasmus Villemoes , Jaroslav Kysela , Takashi Iwai , Johannes Berg , Jakub Kicinski , Alex Elder , David Laight , Vincent Mailhol Cc: linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-renesas-soc@vger.kernel.org, linux-crypto@vger.kernel.org, qat-linux@intel.com, linux-gpio@vger.kernel.org, linux-aspeed@lists.ozlabs.org, linux-iio@vger.kernel.org, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, Geert Uytterhoeven Subject: [PATCH v3 0/4] Non-const bitfield helpers Date: Fri, 14 Feb 2025 14:55:49 +0100 Message-ID: X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-crypto@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Hi all, This is an updated subset of a patch series I sent more than 3 years ago[2]. contains various helpers for accessing bitfields, as typically used in hardware registers for memory-mapped I/O blocks. These helpers ensure type safety, and deduce automatically shift values from mask values, avoiding mistakes due to inconsistent shifts and masks, and leading to a reduction in source code size. The existing FIELD_{GET,PREP}() macros are limited to compile-time constants. However, it is very common to prepare or extract bitfield elements where the bitfield mask is not a compile-time constant. To avoid this limitation, the AT91 clock driver introduced its own field_{prep,get}() macros. Hence my v1 series aimed to make them available for general use, and convert several drivers to the existing FIELD_{GET,PREP}() and the new field_{get,prep}() helpers. Due to some pushback (mostly centered around using the typed {u*,be*,le*,...}_get_bits() macros instead, which of course would require making them work with non-constant masks first, too), this series was never applied, and became buried deep in my TODO haystack... However, several people still liked the idea: since v1, multiple copies of the field_{prep,get}() macros appeared upstream, and one more is queued for v6.15. Hence I think it's time to revive and consolidate... Changes compared to v2[1]: - New patch "[PATCH v3 1/4] bitfield: Drop underscores from macro parameters", - Add Acked-by, - Drop underscores from macro parameters, - Use __auto_type where possible, - Correctly cast reg to the mask type, - Introduces __val and __reg intermediates to simplify the actual operation, - Drop unneeded parentheses, - Clarify having both FIELD_{GET,PREP}() and field_{get,prep}(), Changes compared to v1[2]: - Cast val resp. reg to the mask type, - Fix 64-bit use on 32-bit architectures, - Convert new upstream users: - drivers/crypto/intel/qat/qat_common/adf_gen4_pm_debugfs.c - drivers/gpio/gpio-aspeed.c - drivers/iio/temperature/mlx90614.c - drivers/pinctrl/nuvoton/pinctrl-ma35.c - sound/usb/mixer_quirks.c - Convert new user queued in renesas-devel for v6.15: - drivers/soc/renesas/rz-sysc.c - Drop the last 14 RFC patches. They can be updated/resubmitted/applied later. I can take all four patches through the Renesas tree, and provide an immutable branch with the first two patches for the interested parties. Thanks for your comments! [1] "[PATCH v2 0/3] Non-const bitfield helpers" https://lore.kernel.org/all/cover.1738329458.git.geert+renesas@glider.be [2] "[PATCH 00/17] Non-const bitfield helper conversions" https://lore.kernel.org/all/cover.1637592133.git.geert+renesas@glider.be Geert Uytterhoeven (4): bitfield: Drop underscores from macro parameters bitfield: Add non-constant field_{prep,get}() helpers clk: renesas: Use bitfield helpers soc: renesas: Use bitfield helpers drivers/clk/at91/clk-peripheral.c | 1 + drivers/clk/at91/pmc.h | 3 - drivers/clk/renesas/clk-div6.c | 6 +- drivers/clk/renesas/rcar-gen3-cpg.c | 15 +-- drivers/clk/renesas/rcar-gen4-cpg.c | 9 +- .../qat/qat_common/adf_gen4_pm_debugfs.c | 8 +- drivers/gpio/gpio-aspeed.c | 5 +- drivers/iio/temperature/mlx90614.c | 5 +- drivers/pinctrl/nuvoton/pinctrl-ma35.c | 4 - drivers/soc/renesas/renesas-soc.c | 4 +- drivers/soc/renesas/rz-sysc.c | 3 +- include/linux/bitfield.h | 122 ++++++++++++------ sound/usb/mixer_quirks.c | 4 - 13 files changed, 97 insertions(+), 92 deletions(-)