Re: [RFC 4/5] gpiolib: add gpiod_get() and gpiod_put() functions
From: Linus Walleij <hidden>
Date: 2013-09-20 18:40:51
Also in:
linux-arch, linux-gpio, lkml
On Wed, Sep 4, 2013 at 9:56 PM, Stephen Warren [off-list ref] wrote:
On 09/04/2013 05:29 AM, Alexandre Courbot wrote:quoted
Add gpiod_get() and gpiod_put() functions that provide safer handling of GPIOs. These functions put the GPIO framework in line with the conventions of other frameworks in the kernel, and help ensure every GPIO is declared properly and valid while it is used.quoted
diff --git a/include/linux/gpio/consumer.h b/include/linux/gpio/consumer.hquoted
+struct gpio_desc *__must_check gpiod_get(struct device *dev, + const char *con_id); +void gpiod_put(struct gpio_desc *desc);It might be nice to add an "int index" parameter to this function. For example, a bit-banged parallel bus protocol driver might have 1 chip-select GPIO, 1 clock GPIO, and 8 data GPIOs. gpiod_get(dev, "bus", 0)..gpiod_get(dev, "bus", 7) might be nicer than gpiod_get(dev, "bus0")..gpiod_get(dev, "bus7")? Possibly for client-simplicity, implement both gpiod_get(dev, con_id) (as an inline wrapper for ...) and gpiod_get_index(dev, con_id, index)? In DT terms, this would map to: cs-gpios = <&gpio 3 0>; clock-gpios = <&gpio 5 0>; bus-gpios = <&gpio 10 0 ... &gpio 17 0>; ... and with the mapping table registration mechanism, we could presumably add "int index" to struct gpiod_lookup.
This is an interesting usability aspect of the API, so I'd especially like some input from the ACPI people on this as well. Paging Mika, Rafael, Mathias. Yours, Linus Walleij -- 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