From: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
To: Linus Walleij <linus.walleij@linaro.org>
Cc: Mika Westerberg <mika.westerberg@linux.intel.com>,
"open list:GPIO SUBSYSTEM" <linux-gpio@vger.kernel.org>,
ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Bartosz Golaszewski <bgolaszewski@baylibre.com>
Subject: Re: [PATCH v1 4/4] gpiolib: Reuse device's fwnode to create IRQ domain
Date: Thu, 4 Mar 2021 14:23:20 +0200 [thread overview]
Message-ID: <YEDROJcQLDlYkatS@smile.fi.intel.com> (raw)
In-Reply-To: <CACRpkdYEd+zv36Ghet2WxNavV=1-RkR06c3OxBEoxCqXoAY3Zg@mail.gmail.com>
On Thu, Mar 04, 2021 at 09:06:08AM +0100, Linus Walleij wrote:
> On Wed, Mar 3, 2021 at 10:35 AM Andy Shevchenko
> <andriy.shevchenko@linux.intel.com> wrote:
> > On Wed, Mar 03, 2021 at 10:22:02AM +0100, Linus Walleij wrote:
>
> > > But this:
> > >
> > > > @@ -1504,15 +1497,14 @@ static int gpiochip_add_irqchip(struct gpio_chip *gc,
> > > > return ret;
> > > > } else {
> > > > /* Some drivers provide custom irqdomain ops */
> > > > - if (gc->irq.domain_ops)
> > > > - ops = gc->irq.domain_ops;
> > > > -
> > > > - if (!ops)
> > > > - ops = &gpiochip_domain_ops;
> > > > - gc->irq.domain = irq_domain_add_simple(np,
> > > > - gc->ngpio,
> > > > - gc->irq.first,
> > > > - ops, gc);
> > > > + ops = gc->irq.domain_ops ?: &gpiochip_domain_ops;
> > > > + if (gc->irq.first)
> > > > + gc->irq.domain = irq_domain_create_legacy(fwnode, gc->ngpio,
> > > > + gc->irq.first, 0,
> > > > + ops, gc);
> > > > + else
> > > > + gc->irq.domain = irq_domain_create_linear(fwnode, gc->ngpio,
> > > > + ops, gc);
> > >
> > > This looks like a refactoring and reimplementation of irq_domain_add_simple()?
> >
> > If you named it as irq_domain_create_simple(), then yes, but the problem is
> > that we don't have irq_domain_create_simple() API right now.
> >
> > > Why, and should it rather be a separate patch?
> >
> > Nope.
>
> OK I looked closer at irq_domain_add_simple(), and what it does different
> is to call irq_alloc_descs() for all lines if using sparse IRQs and then
> associate them. irq_domain_create_linear|legacy() does not allocate IRQ
> descriptors because it assumes something like DT or ACPI will do that
> on-demand when drivers request IRQs.
>
> This may be dangerous because some old platforms do not resolve IRQs
> at runtime and you will get NULL pointer exceptions.
>
> We then need to make sure all callers do what is done in e.g.
> drivers/gpio/gpio-omap.c in the #ifdef CONFIG_ARCH_OMAP1 clause:
> they need to be augmented to call irq_alloc_descs() explicitly,
> and I don't think all of them do it as nicely for us as OMAP1.
>
> I might be overly cautious though, however that is why this code
> uses irq_domain_add_simple(), came in commit
> commit 2854d167cc545d0642277bf8b77f972a91146fc6
Ah, thanks! I was puzzled how and why the approach above had been extended like
now. This explains it. Okay, I will introduce irq_domain_create_simple().
--
With Best Regards,
Andy Shevchenko
next prev parent reply other threads:[~2021-03-04 12:25 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-02 15:34 [PATCH v1 1/4] gpiolib: Unify the checks on fwnode type Andy Shevchenko
2021-03-02 15:34 ` [PATCH v1 2/4] gpiolib: Move of_node operations to gpiolib-of and correct fwnode use Andy Shevchenko
2021-03-03 9:15 ` Linus Walleij
2021-03-02 15:34 ` [PATCH v1 3/4] gpiolib: Introduce acpi_gpio_dev_init() and call it from core Andy Shevchenko
2021-03-03 9:16 ` Linus Walleij
2021-03-02 15:34 ` [PATCH v1 4/4] gpiolib: Reuse device's fwnode to create IRQ domain Andy Shevchenko
2021-03-03 9:22 ` Linus Walleij
2021-03-03 9:35 ` Andy Shevchenko
2021-03-04 8:06 ` Linus Walleij
2021-03-04 12:23 ` Andy Shevchenko [this message]
2021-03-04 13:41 ` Rafael J. Wysocki
2021-03-04 15:40 ` Andy Shevchenko
2021-03-04 15:54 ` Rafael J. Wysocki
2021-03-02 15:48 ` [PATCH v1 1/4] gpiolib: Unify the checks on fwnode type Andy Shevchenko
2021-03-03 9:11 ` Linus Walleij
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=YEDROJcQLDlYkatS@smile.fi.intel.com \
--to=andriy.shevchenko@linux.intel.com \
--cc=bgolaszewski@baylibre.com \
--cc=linus.walleij@linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mika.westerberg@linux.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.