This series attempts to add support for software nodes to gpiolib, using software node references. This allows us to convert more drivers to the generic device properties and drop support for custom platform data. To describe a GPIO via software nodes we can create the following data items: /* Node representing the GPIO controller/GPIO bank */ static const struct software_node gpio_bank_b_node = { .name = "B", }; /* * Properties that will be assigned to a software node assigned to * the devicei that used platform data. */ static const struct property_entry simone_key_enter_props[] = { PROPERTY_ENTRY_U32("linux,code", KEY_ENTER), PROPERTY_ENTRY_STRING("label", "enter"), PROPERTY_ENTRY_REF("gpios", &gpio_bank_b_node, 123, GPIO_ACTIVE_LOW), { } }; The code in gpiolib handling software nodes uses the name in the software node representing GPIO controller to locate the actual instance of GPIO controller. Note that kbuild robot is likely to complain about this patchset because it depends on patches removing [devm_]gpiod_get_from_of_node() and devm_fwnode_get_[index_]gpiod_from_child() APIs that are still pending. I pushed them to git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git tmp-gpiolib for your reference. To: Linus Walleij <linus.walleij@xxxxxxxxxx> To: Bartosz Golaszewski <brgl@xxxxxxxx> To: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> Cc: linux-gpio@xxxxxxxxxxxxxxx Cc: linux-kernel@xxxxxxxxxxxxxxx Cc: linux-acpi@xxxxxxxxxxxxxxx --- Dmitry Torokhov (6): gpiolib: of: change of_find_gpio() to accept device node gpiolib: acpi: change acpi_find_gpio() to accept firmware node gpiolib: acpi: teach acpi_find_gpio() to handle data-only nodes gpiolib: acpi: avoid leaking ACPI details into upper gpiolib layers gpiolib: consolidate GPIO lookups gpiolib: add support for software nodes drivers/gpio/Makefile | 1 + drivers/gpio/gpiolib-acpi.c | 132 +++++++++++++---------- drivers/gpio/gpiolib-acpi.h | 54 +--------- drivers/gpio/gpiolib-of.c | 52 +-------- drivers/gpio/gpiolib-of.h | 16 +-- drivers/gpio/gpiolib-swnode.c | 106 +++++++++++++++++++ drivers/gpio/gpiolib-swnode.h | 13 +++ drivers/gpio/gpiolib.c | 239 ++++++++++++++++++++---------------------- 8 files changed, 316 insertions(+), 297 deletions(-) --- base-commit: dc04f5ab1b1114aa19b9026f816fc01ca9c9941d change-id: 20221031-gpiolib-swnode-948203f49b23 -- Dmitry