All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: Octavian Purdila <octavian.purdila@intel.com>
Cc: Linus Walleij <linus.walleij@linaro.org>,
	Lars-Peter Clausen <lars@metafoo.de>,
	Robert Dolca <robert.dolca@gmail.com>,
	Robert Dolca <robert.dolca@intel.com>,
	"linux-iio@vger.kernel.org" <linux-iio@vger.kernel.org>,
	Jonathan Cameron <jic23@kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Hartmut Knaack <knaack.h@gmx.de>,
	Peter Meerwald <pmeerw@pmeerw.net>,
	Denis CIOCCA <denis.ciocca@st.com>
Subject: Re: [PATCH] IIO: Adds ACPI support for ST gyroscopes
Date: Thu, 26 Mar 2015 16:04:30 +0200	[thread overview]
Message-ID: <20150326140430.GM1878@lahna.fi.intel.com> (raw)
In-Reply-To: <CAE1zotKAJBS2_rnYG9K0DxbvVP9-G4iGm_E+b5jQtHVYjiQwVA@mail.gmail.com>

On Thu, Mar 26, 2015 at 02:04:35PM +0200, Octavian Purdila wrote:
> On Thu, Mar 26, 2015 at 12:16 PM, Mika Westerberg
> <mika.westerberg@linux.intel.com> wrote:
> > On Wed, Mar 25, 2015 at 11:12:16PM +0200, Octavian Purdila wrote:
> >> On Wed, Mar 25, 2015 at 3:21 PM, Mika Westerberg
> >> <mika.westerberg@linux.intel.com> wrote:
> >> > On Wed, Mar 25, 2015 at 02:25:05PM +0200, Mika Westerberg wrote:
> >> >> I think we can do the same for ACPI GpioInts so that we introduce
> >> >> acpi_gpio_irq_get() that translates from GpioInt to Linux IRQ
> >> >> numberspace. Then we can do something like below in I2C core:
> >> >>
> >> >>       if (client->irq <= 0) {
> >> >>               int irq = -ENOENT;
> >> >>
> >> >>                 if (dev->of_node)
> >> >>                         irq = of_irq_get(dev->of_node, 0);
> >> >>                 else if (ACPI_COMPANION(dev))
> >> >>                         irq = acpi_gpio_irq_get(ACPI_COMPANION(dev), 0);
> >> >>
> >> >>               if (irq == -EPROBE_DEFER)
> >> >>                         return irq;
> >> >>                 if (irq < 0)
> >> >>                         irq = 0;
> >> >>
> >> >>                 client->irq = irq;
> >> >>       }
> >> >>
> >> >> Now it has the drawback that the first GpioInt will not be available to
> >> >> the driver anymore (as a GPIO since it is locked) but if DT already does
> >> >> the same we should be fine.
> >> >
> >> > Below patch should take care of this.
> >> >
> >>
> >> One issue we noticed is that now the gpio request and set input
> >> directions operations are not called anymore. Some gpio controller
> >> drivers (dln2, adnp, lynx_point from quickly browsing the code) do not
> >> explicitly enable the GPIO pin nor set direction to input when the
> >> interrupt is enabled. Depending on hardware this may be an issue - it
> >> is on dln2 for example.
> >>
> >> Should the gpio controllers enable and set to input in irq_enable,
> >> irq_bus_sync_unlock, etc.? Or should this be done in gpiolib?
> >
> > Good question.
> >
> > In general I think that it is assumed that the boot firmware configures
> > the pin upfront. However, we have seen too many times that it actually
> > doesn't happen or it is configured wrong.
> >
> > Perhaps we could do this in GPIO core, for example in
> > gpiochip_irq_reqres/gpiochip_irq_map or so.
> >
> 
> That sounds good to me. We tested your patch with the patch below and
> we can now directly use client->irq:
> 
> diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
> index 568aa2b..9865627 100644
> --- a/drivers/gpio/gpiolib.c
> +++ b/drivers/gpio/gpiolib.c
> @@ -511,6 +511,19 @@ static const struct irq_domain_ops gpiochip_domain_ops = {
>  static int gpiochip_irq_reqres(struct irq_data *d)
>  {
>         struct gpio_chip *chip = irq_data_get_irq_chip_data(d);
> +       int ret;
> +
> +       ret = gpiod_request(&chip->desc[d->hwirq], "IRQ");
> +       if (ret) {
> +               chip_err(chip, "unable to request %lu for IRQ\n", d->hwirq);
> +               return ret;
> +       }

What if the driver has already requested the GPIO?

> +
> +       ret = gpiod_direction_input(&chip->desc[d->hwirq]);
> +       if (ret) {
> +               chip_err(chip, "unable to set HW IRQ %lu as input\n", d->hwirq);
> +               return ret;
> +       }
> 
>         if (gpiochip_lock_as_irq(chip, d->hwirq)) {
>                 chip_err(chip,

  reply	other threads:[~2015-03-26 14:04 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-03-23 13:40 [PATCH] IIO: Adds ACPI support for ST gyroscopes Robert Dolca
2015-03-23 13:40 ` [PATCH] IIO: Add support for L3GD20H gyroscope Robert Dolca
2015-03-24 10:29   ` Linus Walleij
2015-03-28 11:14     ` Jonathan Cameron
2015-03-23 15:18 ` [PATCH] IIO: Adds ACPI support for ST gyroscopes Mika Westerberg
2015-03-24 11:51   ` Daniel Baluta
2015-03-24 11:51     ` Daniel Baluta
2015-03-24 10:22 ` Linus Walleij
2015-03-24 10:37 ` Linus Walleij
2015-03-24 10:44 ` Linus Walleij
2015-03-24 12:17 ` Lars-Peter Clausen
2015-03-24 13:26   ` Robert Dolca
2015-03-24 13:38     ` Lars-Peter Clausen
2015-03-24 13:57       ` Linus Walleij
2015-03-24 15:06         ` Mika Westerberg
     [not found]           ` <20150324150630.GP1878-3PARRvDOhMZrdx17CPfAsdBPR1lH4CV8@public.gmane.org>
2015-03-24 15:22             ` Lars-Peter Clausen
2015-03-24 15:22               ` Lars-Peter Clausen
2015-03-24 15:28               ` Daniel Baluta
2015-03-24 15:55               ` Mika Westerberg
2015-03-24 16:43                 ` Lars-Peter Clausen
     [not found]                   ` <55119429.6070806-Qo5EllUWu/uELgA04lAiVw@public.gmane.org>
2015-03-24 16:55                     ` Mika Westerberg
2015-03-24 16:55                       ` Mika Westerberg
2015-03-25  8:44           ` Linus Walleij
2015-03-25  9:43             ` Mika Westerberg
2015-03-25 12:25               ` Mika Westerberg
2015-03-25 13:21                 ` Mika Westerberg
2015-03-25 13:42                   ` Robert Dolca
2015-03-25 18:05                   ` sathyanarayanan kuppuswamy
2015-03-25 18:08                     ` Lars-Peter Clausen
2015-03-25 21:12                   ` Octavian Purdila
2015-03-26 10:06                     ` Robert Dolca
2015-03-26 10:36                       ` Mika Westerberg
2015-03-26 10:16                     ` Mika Westerberg
2015-03-26 12:04                       ` Octavian Purdila
2015-03-26 14:04                         ` Mika Westerberg [this message]
2015-03-26 14:37                           ` Octavian Purdila
2015-03-26 14:47                             ` Mika Westerberg
2015-03-26 15:00                               ` Octavian Purdila
2015-03-26 16:28                                 ` Octavian Purdila
2015-03-27 10:06                                   ` Mika Westerberg
2015-03-27 10:36                                     ` Linus Walleij
2015-03-30  9:52                                       ` Mika Westerberg
2015-03-30 12:55                                         ` Octavian Purdila
2015-03-30 13:33                                           ` Mika Westerberg
2015-03-30 13:52                                             ` Octavian Purdila
2015-03-30 14:18                                               ` Mika Westerberg
2015-04-07  9:35                                               ` Linus Walleij
2015-04-07  9:39                                                 ` Lars-Peter Clausen
2015-03-26 18:32                                 ` Jonathan Cameron
2015-03-26 18:32                                   ` Jonathan Cameron

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=20150326140430.GM1878@lahna.fi.intel.com \
    --to=mika.westerberg@linux.intel.com \
    --cc=denis.ciocca@st.com \
    --cc=jic23@kernel.org \
    --cc=knaack.h@gmx.de \
    --cc=lars@metafoo.de \
    --cc=linus.walleij@linaro.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=octavian.purdila@intel.com \
    --cc=pmeerw@pmeerw.net \
    --cc=robert.dolca@gmail.com \
    --cc=robert.dolca@intel.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.