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(-)
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@linaro.org>
To: Bartosz Golaszewski <brgl@bgdev.pl>
To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Cc: linux-gpio@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Cc: linux-acpi@vger.kernel.org
---
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
On Fri, Nov 4, 2022 at 7:10 AM Dmitry Torokhov
<dmitry.torokhov@gmail.com> wrote:
> 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@linaro.org>
> To: Bartosz Golaszewski <brgl@bgdev.pl>
> To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Cc: linux-gpio@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Cc: linux-acpi@vger.kernel.org
I have waited literally years for this patch series :D
Acked-by: Linus Walleij <linus.walleij@linaro.org>
The ACPI details is Andy territory so I dare not speak about those,
but for everything else I think this is a go.
Yours,
Linus Walleij
On Thu, Nov 03, 2022 at 11:10:10PM -0700, Dmitry Torokhov wrote:
> 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.
I agree with Bart, this is nice work!
So, for the patches 1-4:
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> To: Linus Walleij <linus.walleij@linaro.org>
> To: Bartosz Golaszewski <brgl@bgdev.pl>
> To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Cc: linux-gpio@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Cc: linux-acpi@vger.kernel.org
>
> ---
> 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
>
--
With Best Regards,
Andy Shevchenko
On Fri, Nov 4, 2022 at 7:10 AM Dmitry Torokhov
<dmitry.torokhov@gmail.com> wrote:
>
> 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@linaro.org>
> To: Bartosz Golaszewski <brgl@bgdev.pl>
> To: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Cc: linux-gpio@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
> Cc: linux-acpi@vger.kernel.org
>
> ---
> 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
>
This is great work. I'll wait for Andy to Ack the ACPI patches and
let's get it in.
Bartosz
© 2016 - 2026 Red Hat, Inc.