From: Grygorii Strashko <grygorii.strashko@ti.com>
To: Javier Martinez Canillas <javier@dowhile0.org>
Cc: Markus Mayer <markus.mayer@linaro.org>,
Linus Walleij <linus.walleij@linaro.org>,
Linux GPIO List <linux-gpio@vger.kernel.org>,
Alexandre Courbot <acourbot@nvidia.com>,
Christian Daudt <bcm@fixthebug.org>
Subject: Re: [PATCH] gpio: bcm-kona: lock IRQs when starting them
Date: Thu, 21 Nov 2013 12:10:14 +0200 [thread overview]
Message-ID: <528DDC06.9070405@ti.com> (raw)
In-Reply-To: <CABxcv=m1Ltkr7TFSEcqRSYZ-VsWx5i5CGSkP9o0k_HsJLchO9Q@mail.gmail.com>
On 11/21/2013 11:50 AM, Javier Martinez Canillas wrote:
> Hi,
>
> On Thu, Nov 21, 2013 at 10:04 AM, Grygorii Strashko
> <grygorii.strashko@ti.com> wrote:
>> On 11/21/2013 03:21 AM, Markus Mayer wrote:
>>>
>>> Fixing Christian's e-mail address.
>>>
>>> On 20 November 2013 17:13, Markus Mayer <markus.mayer@linaro.org> wrote:
>>>>
>>>> On 19 November 2013 05:17, Linus Walleij <linus.walleij@linaro.org>
>>>> wrote:
>>>>>
>>>>> This uses the new API for tagging GPIO lines as in use by
>>>>> IRQs. This enforces a few semantic checks on how the underlying
>>>>> GPIO line is used.
>>>>>
>>>>> Cc: Markus Mayer <markus.mayer@linaro.org>
>>>>> Cc: Christian Daudt <csd@broadcom.com>
>>>>> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
>>>>> ---
>>>>> drivers/gpio/gpio-bcm-kona.c | 20 ++++++++++++++++++++
>>>>> 1 file changed, 20 insertions(+)
>>>>>
>>>>> diff --git a/drivers/gpio/gpio-bcm-kona.c b/drivers/gpio/gpio-bcm-kona.c
>>>>> index 72c927dc3be1..dee6d03a7959 100644
>>>>> --- a/drivers/gpio/gpio-bcm-kona.c
>>>>> +++ b/drivers/gpio/gpio-bcm-kona.c
>>>>> @@ -449,12 +449,32 @@ static void bcm_kona_gpio_irq_handler(unsigned int
>>>>> irq, struct irq_desc *desc)
>>>>> chained_irq_exit(chip, desc);
>>>>> }
>>>>>
>>>>> +static unsigned int bcm_kona_gpio_irq_startup(struct irq_data *d)
>>>>> +{
>>>>> + struct bcm_kona_gpio *kona_gpio = irq_data_get_irq_chip_data(d);
>>>>> +
>>>>> + if (gpio_lock_as_irq(&kona_gpio->gpio_chip, d->hwirq))
>>>>> + dev_err(kona_gpio->gpio_chip.dev,
>>>>> + "unable to lock HW IRQ %lu for IRQ\n",
>>>>> + d->hwirq);
>>>>> + return 0;
>>>>> +}
>>>>> +
>>>>> +static void bcm_kona_gpio_irq_shutdown(struct irq_data *d)
>>>>> +{
>>>>> + struct bcm_kona_gpio *kona_gpio = irq_data_get_irq_chip_data(d);
>>>>> +
>>>>> + gpio_unlock_as_irq(&kona_gpio->gpio_chip, d->hwirq);
>>>>> +}
>>>>> +
>>>>> static struct irq_chip bcm_gpio_irq_chip = {
>>>>> .name = "bcm-kona-gpio",
>>>>> .irq_ack = bcm_kona_gpio_irq_ack,
>>>>> .irq_mask = bcm_kona_gpio_irq_mask,
>>>>> .irq_unmask = bcm_kona_gpio_irq_unmask,
>>>>> .irq_set_type = bcm_kona_gpio_irq_set_type,
>>>>> + .irq_startup = bcm_kona_gpio_irq_startup,
>>>>> + .irq_shutdown = bcm_kona_gpio_irq_shutdown,
>>>>> };
>>>>>
>>>>> static struct __initconst of_device_id bcm_kona_gpio_of_match[] = {
>>>>> --
>>>>> 1.8.3.1
>>>>>
>>>>
>>>> I don't know yet why, but as soon as I apply that patch, the cd-gpio
>>>> interrupt doesn't seem to get triggered anymore.
>>>>
>>>> $ grep bcm-kona-gpio /proc/interrupts
>>>> 270: 0 bcm-kona-gpio 14 3f1b0000.sdio cd
>>>>
>>>> The counter remains at 0. If I comment-out the irq_startup &
>>>> irq_shutdown assignments to temporarily disable the new code, the
>>>> interrupt counter increases again when I insert/remove an SD card.
>>
>>
>> Possibly, you have the same problem as I explained here
>> "[PATCH] gpio: lynxpoint: lock IRQs when starting them"
>> http://comments.gmane.org/gmane.linux.kernel.gpio/1163
>>
>
> How about locking the GPIO as IRQ on the .irq_set_type function
> handler instead of adding a .irq_startup?
>
> That's how we did on gpio-omap driver and it works pretty well.
As for me - .irq_startup/.irq_shutdown are fit the best to do gpio lock,
but they have to be implemented accordingly.
Because .irq_startup()/.irq_shutdown() are called exactly when GPIO is
requested/freed as opposed to .irq_set_type() which may be called any
time and many times.
Looks like, It will be enough to unmask/mask IRQ from
bcm_kona_gpio_irq_startup/shutdown() for this driver.
Regards,
- grygorii
prev parent reply other threads:[~2013-11-21 10:13 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-19 13:17 [PATCH] gpio: bcm-kona: lock IRQs when starting them Linus Walleij
2013-11-21 1:13 ` Markus Mayer
2013-11-21 1:21 ` Markus Mayer
2013-11-21 9:04 ` Grygorii Strashko
2013-11-21 9:50 ` Javier Martinez Canillas
2013-11-21 10:10 ` Grygorii Strashko [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=528DDC06.9070405@ti.com \
--to=grygorii.strashko@ti.com \
--cc=acourbot@nvidia.com \
--cc=bcm@fixthebug.org \
--cc=javier@dowhile0.org \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=markus.mayer@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).