Linus Walleij 9c10280d85 gpio: flush direction status in gpiochip_lock_as_irq()
As irqchip and gpiochip functions are orthogonal, the IRQ
set-up or something else can have changed the direction of
the GPIO line from what the GPIO descriptor knows when we
get into gpiochip_lock_as_irq(). Make sure to re-read the
direction setting if we have the .get_direction() callback
enabled for the chip.

Else we get problems like this:

iio iio:device2: interrupts on the rising edge
gpio gpiochip2: (8012e080.gpio): gpiochip_lock_as_irq:
  tried to flag a GPIO set as output for IRQ
gpio gpiochip2: (8012e080.gpio): unable to lock HW IRQ 0 for IRQ
genirq: Failed to request resources for l3g4200d-trigger
  (irq 111) on irqchip nmk1-32-63
iio iio:device2: failed to request trigger IRQ.
st-gyro-i2c: probe of 2-0068 failed with error -22

Fixes: 72d320006177 ("gpio: set up initial state from .get_direction()")
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
2016-05-30 09:42:03 +02:00
..
2016-05-27 15:26:11 -07:00
2016-05-27 15:26:11 -07:00
2016-05-24 11:00:20 -07:00
2016-05-26 19:34:26 -07:00
2016-05-27 15:26:11 -07:00
2016-05-19 11:27:09 -07:00
2016-05-27 15:26:11 -07:00
2016-05-27 15:26:11 -07:00
2016-05-20 21:26:15 -07:00
2016-05-27 15:26:11 -07:00
2016-05-28 17:37:42 +02:00
2016-05-27 15:26:11 -07:00
2016-05-25 10:40:15 -07:00
2016-05-24 11:00:20 -07:00
2016-05-18 16:38:59 -07:00
2016-05-27 15:26:11 -07:00
2016-05-27 15:26:11 -07:00
2016-05-27 15:26:11 -07:00
2016-05-26 19:34:26 -07:00
2016-05-27 15:26:11 -07:00
2016-05-24 11:00:20 -07:00
2016-05-20 21:20:31 -07:00
2016-05-20 21:12:25 -07:00
2016-05-20 21:26:15 -07:00
2016-05-25 10:40:15 -07:00
2016-05-26 19:34:26 -07:00
2016-05-20 18:33:37 -07:00
2016-05-28 12:23:12 -07:00
2016-05-27 15:26:11 -07:00
2016-05-25 09:47:26 -07:00
2016-05-10 01:19:26 -07:00
2016-05-27 15:26:11 -07:00
2016-05-23 11:18:01 -07:00