gpio: add API to be strict about GPIO IRQ usage
authorLinus Walleij <linus.walleij@linaro.org>
Tue, 24 Sep 2013 09:54:38 +0000 (11:54 +0200)
committerLinus Walleij <linus.walleij@linaro.org>
Wed, 16 Oct 2013 07:59:54 +0000 (09:59 +0200)
commitd468bf9ecaabd3bf3a6134e5a369ced82b1d1ca1
tree452eaf82c5c50a4673ccd5fccdc1407b1243d03d
parentd27e06ac5dcf60d5502269e1875bcb0f05f1b1c1
gpio: add API to be strict about GPIO IRQ usage

It is currently often possible in many GPIO drivers to request
a GPIO line to be used as IRQ after calling gpio_to_irq() and,
as the gpiolib is not aware of this, set the same line to
output and start driving it, with undesired side effects.

As it is a bogus usage scenario to request a line flagged as
output to used as IRQ, we introduce APIs to let gpiolib track
the use of a line as IRQ, and also set this flag from the
userspace ABI.

The API is symmetric so that lines can also be flagged from
.irq_enable() and unflagged from IRQ by .irq_disable().
The debugfs file is altered so that we see if a line is
reserved for IRQ.

Cc: Enric Balletbo i Serra <eballetbo@gmail.com>
Cc: Grant Likely <grant.likely@linaro.org>
Cc: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Cc: Santosh Shilimkar <santosh.shilimkar@ti.com>
Acked-by: Alexandre Courbot <acourbot@nvidia.com>
Reviewed-by: Stephen Warren <swarren@nvidia.com>
Reviewed-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
drivers/gpio/gpiolib.c
include/asm-generic/gpio.h
include/linux/gpio.h