Re: [RFC PATCH v2 07/16] gpio: Add support for unified device properties interface
From: Mika Westerberg <hidden>
Date: 2014-09-23 15:52:47
Also in:
linux-acpi, lkml
On Tue, Sep 23, 2014 at 05:45:57PM +0200, Arnd Bergmann wrote:
On Tuesday 23 September 2014 17:25:50 Linus Walleij wrote:quoted
On Tue, Sep 16, 2014 at 1:52 PM, Mika Westerberg [off-list ref] wrote:quoted
Some drivers need to deal with only firmware representation of its GPIOs. An example would be a GPIO button array driver where each button is described as a separate firmware node in device tree. Typically these child nodes do not have physical representation in the Linux device model. In order to help device drivers to handle such firmware child nodes we add dev[m]_node_get_named_gpiod() that takes a firmware node pointer as parameter, finds the GPIO using whatever is the underlying firmware method, and requests the GPIO properly. Signed-off-by: Mika Westerberg <mika.westerberg-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>I have a hard time figuring out if this is what we want for common accessors between DT and ACPI. Can I get some input from Grant, Arnd, Mark, Darren...?I just took a brief look at this. My first impression is that the fw_dev_node structure is weird when all callers just do (in patch 2) + struct fw_dev_node fdn = { + .of_node = dev->of_node, + .acpi_node = ACPI_COMPANION(dev), + }; I'd much rather see an interface that passes the 'struct device' pointer down to dev_get_named_gpiod() and all other exported functions, and then internally does the conversion at the point where the access is done.
Problem is that if you don't have the dev pointer in the first place. Please look how leds-gpio.c or gpio_keys_polled.c are using this. Of course you have the first level device but when you need to iterate "leds" or "buttons" below where there is no Linux device available we need something like this. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html