[PATCH v3 0/2] Support sparse unidirectional GPIO lines.
From: Linus Walleij
Date: Mon May 11 2026 - 15:43:49 EST
This adds a fixed_direction_mask bitmap to the regmap GPIO
config and state holder. This works the following way:
- If the bitmap is NULL all GPIOs are assumed to be fixed
direction and that is specified in fixed_direction_output.
This makes sure old drivers keep working as before.
- If the fixed_direction_mask bitmap is present (!= NULL)
the lines set to 1 in the bitmask are fixed direction,
all other lines can change their direction dynamically.
To be used in a forthcoming submission.
As a consequence, be more elaborate when handling direction
setting (patch 2).
Signed-off-by: Linus Walleij <linusw@xxxxxxxxxx>
---
Changes in v3:
- Rename fixed_direction_sparse to fixed_direction_mask which is more
to the point.
- Make gpio_regmap_set_direction() fail if the requested direction is
not the same as the fixed direction.
- Augment gpio_regmap_direction_output() such that it will first check
if the line is a fixed direction line and only continue if it is
fixed as output in this case.
- Link to v2: https://patch.msgid.link/20260508-regmap-gpio-sparse-fixed-dir-v2-0-deee84df3027@xxxxxxxxxx
Changes in v2:
- Make a second patch to exclude setting on unidirectional
lines.
- Link to v1: https://patch.msgid.link/20260507-regmap-gpio-sparse-fixed-dir-v1-1-a2e5855e2701@xxxxxxxxxx
---
Linus Walleij (2):
gpio: regmap: Support sparsed fixed direction
gpio: regmap: Don't set a fixed direction line
drivers/gpio/gpio-regmap.c | 74 ++++++++++++++++++++++++++++++++++++++++++---
include/linux/gpio/regmap.h | 7 +++++
2 files changed, 77 insertions(+), 4 deletions(-)
---
base-commit: 254f49634ee16a731174d2ae34bc50bd5f45e731
change-id: 20260507-regmap-gpio-sparse-fixed-dir-1d5c0d2e2c6f
Best regards,
--
Linus Walleij <linusw@xxxxxxxxxx>