Message ID | 20221031-gpiolib-swnode-v1-0-a0ab48d229c7@gmail.com (mailing list archive) |
---|---|
Headers | show |
Series | Add support for software nodes to gpiolib | expand |
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
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 >
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