* [PATCH 0/6] gpiolib: unify gpio-hog code
@ 2026-03-05 9:51 Bartosz Golaszewski
2026-03-05 9:51 ` [PATCH 1/6] gpio: of: clear OF_POPULATED on hog nodes in remove path Bartosz Golaszewski
2026-03-06 11:58 ` [PATCH 0/6] gpiolib: unify gpio-hog code Andy Shevchenko
0 siblings, 2 replies; 4+ messages in thread
From: Bartosz Golaszewski @ 2026-03-05 9:51 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Geert Uytterhoeven,
Frank Rowand, Mika Westerberg, Andy Shevchenko, Aaro Koskinen,
Janusz Krzysztofik, Tony Lindgren, Russell King, Jonathan Corbet,
Shuah Khan
Cc: linux-gpio, linux-kernel, linux-acpi, linux-arm-kernel,
linux-omap, linux-doc, brgl, Bartosz Golaszewski, stable
GPIO hogs are handled separately in three places: for OF, ACPI and
machine lookup. In addition hogs cannot be set up using software nodes.
A lot of that code is actually redundant and - except for some special
handling of OF nodes - can be unified in one place.
This series moves hogging into GPIO core and bases it on fwnode API
(with a single helper from OF to translate devicetree properties into
lookup flags), converts the two remaining users of machine hogs to using
software node approach and removes machine hog support entirely. In
addition, there's a patch extending the configurability of gpio-sim now
that it uses software nodes for hogs.
For merging: I think this should go through the GPIO tree with an Ack
from OMAP1 maintainers.
Even with the new feature for gpio-sim, this series still removes twice
the number of lines, it adds.
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
---
Bartosz Golaszewski (6):
gpio: of: clear OF_POPULATED on hog nodes in remove path
gpio: move hogs into GPIO core
gpio: sim: use fwnode-based GPIO hogs
ARM: omap1: ams-delta: convert GPIO hogs to using firmware nodes
gpio: remove machine hogs
gpio: sim: allow to define the active-low setting of a simulated hog
Documentation/driver-api/gpio/board.rst | 16 ---
arch/arm/mach-omap1/board-ams-delta.c | 32 ++++-
drivers/gpio/gpio-sim.c | 200 +++++++++++++++-----------------
drivers/gpio/gpiolib-acpi-core.c | 70 -----------
drivers/gpio/gpiolib-of.c | 148 +++--------------------
drivers/gpio/gpiolib-of.h | 9 ++
drivers/gpio/gpiolib.c | 139 +++++++++++++---------
drivers/gpio/gpiolib.h | 3 +
include/linux/gpio/machine.h | 33 ------
9 files changed, 233 insertions(+), 417 deletions(-)
---
base-commit: c025f6cf4209e1542ec2afebe49f42bbaf1a5c7b
change-id: 20260224-gpio-hog-fwnode-b46a53196253
Best regards,
--
Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH 1/6] gpio: of: clear OF_POPULATED on hog nodes in remove path
2026-03-05 9:51 [PATCH 0/6] gpiolib: unify gpio-hog code Bartosz Golaszewski
@ 2026-03-05 9:51 ` Bartosz Golaszewski
2026-03-05 12:58 ` Linus Walleij
2026-03-06 11:58 ` [PATCH 0/6] gpiolib: unify gpio-hog code Andy Shevchenko
1 sibling, 1 reply; 4+ messages in thread
From: Bartosz Golaszewski @ 2026-03-05 9:51 UTC (permalink / raw)
To: Linus Walleij, Bartosz Golaszewski, Geert Uytterhoeven,
Frank Rowand, Mika Westerberg, Andy Shevchenko, Aaro Koskinen,
Janusz Krzysztofik, Tony Lindgren, Russell King, Jonathan Corbet,
Shuah Khan
Cc: linux-gpio, linux-kernel, linux-acpi, linux-arm-kernel,
linux-omap, linux-doc, brgl, Bartosz Golaszewski, stable
The previously set OF_POPULATED flag should be cleared on the hog nodes
when removing the chip.
Cc: stable@vger.kernel.org
Fixes: 63636d956c455 ("gpio: of: Add DT overlay support for GPIO hogs")
Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
---
drivers/gpio/gpiolib-of.c | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c
index ef1ac68b94b78f09e768cc740e893632b8817505..08b7b662512b825086cd70440be98b59befc3ffe 100644
--- a/drivers/gpio/gpiolib-of.c
+++ b/drivers/gpio/gpiolib-of.c
@@ -1210,7 +1210,14 @@ int of_gpiochip_add(struct gpio_chip *chip)
void of_gpiochip_remove(struct gpio_chip *chip)
{
- of_node_put(dev_of_node(&chip->gpiodev->dev));
+ struct device_node *np = dev_of_node(&chip->gpiodev->dev);
+
+ for_each_child_of_node_scoped(np, child) {
+ if (of_property_present(child, "gpio-hog"))
+ of_node_clear_flag(child, OF_POPULATED);
+ }
+
+ of_node_put(np);
}
bool of_gpiochip_instance_match(struct gpio_chip *gc, unsigned int index)
--
2.47.3
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH 1/6] gpio: of: clear OF_POPULATED on hog nodes in remove path
2026-03-05 9:51 ` [PATCH 1/6] gpio: of: clear OF_POPULATED on hog nodes in remove path Bartosz Golaszewski
@ 2026-03-05 12:58 ` Linus Walleij
0 siblings, 0 replies; 4+ messages in thread
From: Linus Walleij @ 2026-03-05 12:58 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Bartosz Golaszewski, Geert Uytterhoeven, Frank Rowand,
Mika Westerberg, Andy Shevchenko, Aaro Koskinen,
Janusz Krzysztofik, Tony Lindgren, Russell King, Jonathan Corbet,
Shuah Khan, linux-gpio, linux-kernel, linux-acpi,
linux-arm-kernel, linux-omap, linux-doc, stable
On Thu, Mar 5, 2026 at 10:51 AM Bartosz Golaszewski
<bartosz.golaszewski@oss.qualcomm.com> wrote:
> The previously set OF_POPULATED flag should be cleared on the hog nodes
> when removing the chip.
>
> Cc: stable@vger.kernel.org
> Fixes: 63636d956c455 ("gpio: of: Add DT overlay support for GPIO hogs")
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>
I have no idea how OF_POPULATED is supposed to be used
so I just trust you on this one:
Acked-by: Linus Walleij <linusw@kernel.org>
Yours,
Linus Walleij
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 0/6] gpiolib: unify gpio-hog code
2026-03-05 9:51 [PATCH 0/6] gpiolib: unify gpio-hog code Bartosz Golaszewski
2026-03-05 9:51 ` [PATCH 1/6] gpio: of: clear OF_POPULATED on hog nodes in remove path Bartosz Golaszewski
@ 2026-03-06 11:58 ` Andy Shevchenko
1 sibling, 0 replies; 4+ messages in thread
From: Andy Shevchenko @ 2026-03-06 11:58 UTC (permalink / raw)
To: Bartosz Golaszewski
Cc: Linus Walleij, Bartosz Golaszewski, Geert Uytterhoeven,
Frank Rowand, Mika Westerberg, Aaro Koskinen, Janusz Krzysztofik,
Tony Lindgren, Russell King, Jonathan Corbet, Shuah Khan,
linux-gpio, linux-kernel, linux-acpi, linux-arm-kernel,
linux-omap, linux-doc, stable
On Thu, Mar 05, 2026 at 10:51:25AM +0100, Bartosz Golaszewski wrote:
> GPIO hogs are handled separately in three places: for OF, ACPI and
> machine lookup. In addition hogs cannot be set up using software nodes.
> A lot of that code is actually redundant and - except for some special
> handling of OF nodes - can be unified in one place.
>
> This series moves hogging into GPIO core and bases it on fwnode API
> (with a single helper from OF to translate devicetree properties into
> lookup flags), converts the two remaining users of machine hogs to using
> software node approach and removes machine hog support entirely. In
> addition, there's a patch extending the configurability of gpio-sim now
> that it uses software nodes for hogs.
>
> For merging: I think this should go through the GPIO tree with an Ack
> from OMAP1 maintainers.
>
> Even with the new feature for gpio-sim, this series still removes twice
> the number of lines, it adds.
Lovely! This was in my TODO list somewhere deep, but I never started it for
real (had some very very initial patches)
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
(Maybe I will have time to test it later on, I need to check if there is a use
of them on Intel Galileo Gen1 platform).
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-03-06 11:58 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-03-05 9:51 [PATCH 0/6] gpiolib: unify gpio-hog code Bartosz Golaszewski
2026-03-05 9:51 ` [PATCH 1/6] gpio: of: clear OF_POPULATED on hog nodes in remove path Bartosz Golaszewski
2026-03-05 12:58 ` Linus Walleij
2026-03-06 11:58 ` [PATCH 0/6] gpiolib: unify gpio-hog code Andy Shevchenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox