[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CACRpkdZLCzNbpmWFAT=OD5zqyq-7cuLXcUo3FvnH-pkf3zrYBA@mail.gmail.com>
Date: Mon, 11 Aug 2014 10:35:57 +0200
From: Linus Walleij <linus.walleij@...aro.org>
To: Javier Martinez Canillas <javier.martinez@...labora.co.uk>
Cc: Tomasz Figa <t.figa@...sung.com>,
Dmitry Torokhov <dmitry.torokhov@...il.com>,
Nick Dyer <nick.dyer@...ev.co.uk>,
Stephen Warren <swarren@...dia.com>,
Yufeng Shen <miletus@...omium.org>,
Benson Leung <bleung@...omium.org>,
Doug Anderson <dianders@...omium.org>,
Olof Johansson <olof@...om.net>,
Tomasz Figa <tomasz.figa@...il.com>,
"devicetree@...r.kernel.org" <devicetree@...r.kernel.org>,
linux-samsung-soc <linux-samsung-soc@...r.kernel.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH 1/1] pinctrl: exynos: Lock GPIOs as interrupts when used
as EINTs
On Sat, Aug 9, 2014 at 1:48 AM, Javier Martinez Canillas
<javier.martinez@...labora.co.uk> wrote:
> From: Tomasz Figa <t.figa@...sung.com>
>
> Currently after configuring a GPIO pin as an interrupt related pinmux
> registers are changed, but there is no protection from calling
> gpio_direction_*() in a badly written driver, which would cause the same
> pinmux register to be reconfigured for regular input/output and this
> disabling interrupt capability of the pin.
>
> This patch addresses this issue by moving pinmux reconfiguration to
> .irq_{request,release}_resources() callback of irq_chip and calling
> gpio_lock_as_irq() helper to prevent reconfiguration of pin direction.
>
> Setting up a GPIO interrupt on Samsung SoCs is a two-step operation -
> in addition to trigger configuration in a dedicated register, the pinmux
> must be also reconfigured to GPIO interrupt, which is a different function
> than normal GPIO input, although I/O-wise they both behave in the same way
> and gpio_get_value() can be used on a pin configured as IRQ as well.
>
> Such design implies subtleties such as gpio_direction_input() not having
> to fail if a pin is already configured as an interrupt nor change the
> configuration to normal input. But the FLAG_USED_AS_IRQ set in gpiolib by
> gpio_lock_as_irq() is only used to check that gpio_direction_output() is
> not called, it's not used to prevent gpio_direction_input() to be called.
> So this is not a complete solution for Samsung SoCs but it's definitely a
> move in the right direction.
>
> Signed-off-by: Tomasz Figa <t.figa@...sung.com>
> [javier: use request resources instead of startup and expand commit message]
> Signed-off-by: Javier Martinez Canillas <javier.martinez@...labora.co.uk>
> ---
>
> This patch solves the issue explained in https://lkml.org/lkml/2014/8/8/461
Hm, this looks much better atleast, it is not possible to use the
irqchip helpers from gpiolib then, because that grabs the request/release
resource callbacks.
If I get some ACKs on this we can go for this solution.
Yours,
Linus Walleij
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists