lkml.org 
[lkml]   [2014]   [Mar]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH v5 3/9] at91: pinctrl: don't request GPIOs used for interrupts but lock them as IRQ
Date
During the xlate stage of the DT interrupt parsing, the at91 pinctrl driver
requests the GPIOs that are described as interrupt sources. This prevents a
driver to request the gpio later to get its electrical value.
This patch replaces the gpio_request with a gpio_lock_as_irq to prevent the
gpio to be set as an ouput while allowing a subsequent gpio_request to succeed

Signed-off-by: Jean-Jacques Hiblot <jjhiblot@traphandler.com>
---
drivers/pinctrl/pinctrl-at91.c | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/pinctrl/pinctrl-at91.c b/drivers/pinctrl/pinctrl-at91.c
index d990e33..db55b96 100644
--- a/drivers/pinctrl/pinctrl-at91.c
+++ b/drivers/pinctrl/pinctrl-at91.c
@@ -1478,18 +1478,17 @@ static int at91_gpio_irq_domain_xlate(struct irq_domain *d,
{
struct at91_gpio_chip *at91_gpio = d->host_data;
int ret;
- int pin = at91_gpio->chip.base + intspec[0];

if (WARN_ON(intsize < 2))
return -EINVAL;
*out_hwirq = intspec[0];
*out_type = intspec[1] & IRQ_TYPE_SENSE_MASK;

- ret = gpio_request(pin, ctrlr->full_name);
+ ret = gpio_lock_as_irq(&at91_gpio->chip, intspec[0]);
if (ret)
return ret;

- ret = gpio_direction_input(pin);
+ ret = at91_gpio_direction_input(&at91_gpio->chip, intspec[0]);
if (ret)
return ret;

--
1.9.0


\
 
 \ /
  Last update: 2014-03-03 11:41    [W:1.395 / U:0.028 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site