[PATCH v1 1/1] regmap: Add REG_FIELD_GENMASK() helper macro
From: Andy Shevchenko
Date: Thu Nov 05 2026 - 05:50:22 EST
One time in regmap and already a few times over the whole kernel
the users want to extract a mask from the regmap field data type.
Provide a helper and convert regmap core to use it. Others may
follow later on.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx>
---
Inspired by a patch SN1PR12MB25282EC93A27F3577BB9B454A5772@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
that leaves the driver to handle the custom macro for that.
drivers/base/regmap/regmap.c | 2 +-
include/linux/regmap.h | 3 +++
2 files changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
index 83f1f5942135..48e96bc9e7b6 100644
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -1215,7 +1215,7 @@ static void regmap_field_init(struct regmap_field *rm_field,
rm_field->regmap = regmap;
rm_field->reg = reg_field.reg;
rm_field->shift = reg_field.lsb;
- rm_field->mask = GENMASK(reg_field.msb, reg_field.lsb);
+ rm_field->mask = REG_FIELD_GENMASK(reg_field);
WARN_ONCE(rm_field->mask == 0, "invalid empty mask defined\n");
diff --git a/include/linux/regmap.h b/include/linux/regmap.h
index a72f17ab6264..8f3034881f8a 100644
--- a/include/linux/regmap.h
+++ b/include/linux/regmap.h
@@ -10,6 +10,7 @@
* Author: Mark Brown <broonie@xxxxxxxxxxxxxxxxxxxxxxxxxxx>
*/
+#include <linux/bits.h>
#include <linux/bug.h>
#include <linux/cleanup.h>
#include <linux/delay.h>
@@ -1477,6 +1478,8 @@ struct reg_field {
.id_offset = _offset, \
}
+#define REG_FIELD_GENMASK(_reg_field) GENMASK(_reg_field.msb, _reg_field.lsb)
+
struct regmap_field *regmap_field_alloc(struct regmap *regmap,
struct reg_field reg_field);
void regmap_field_free(struct regmap_field *field);
--
2.50.1