From: Linus Walleij <linus.walleij@linaro.org>
To: Alexander Sverdlin <alexander.sverdlin@nokia.com>,
Marc Zyngier <maz@kernel.org>
Cc: Andy Shevchenko <andy.shevchenko@gmail.com>,
"open list:GPIO SUBSYSTEM" <linux-gpio@vger.kernel.org>,
Bartosz Golaszewski <bgolaszewski@baylibre.com>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v3] gpio: pl061: Support implementations without GPIOINTR line
Date: Sat, 20 Mar 2021 12:10:33 +0100 [thread overview]
Message-ID: <CACRpkdbqKmKh0+g92LHJYKO2vt=-TkdTFuSrNwChCbQ-siG53g@mail.gmail.com> (raw)
In-Reply-To: <028a836c-9343-f08a-3f1b-22e45f291d1a@nokia.com>
On Fri, Mar 19, 2021 at 4:32 PM Alexander Sverdlin
<alexander.sverdlin@nokia.com> wrote:
> [Andy]
> > I'm wondering if the GPIO library support for IRQ hierarchy is what
> > you are looking for.
It is indeed what should be used.
> do you have a better suggestion? That's why I reference the below discussion from 2017, where
> Linus Walleij suggested to use it. Well, the initial patch was just 11-liner and PL061 is
> rather counterexample and doesn't fit well into the existing hierarchical infrastructure.
>
> >> Link: https://lore.kernel.org/linux-gpio/CACRpkdZpYzpMDWqJobSYH=JHgB74HbCQihOtexs+sVyo6SRJdA@mail.gmail.com/
Don't trust that guy. He's inexperienced with the new API and talks a lot
of crap. ;)
We now have a proper API for hierarchical IRQs on GPIO controllers,
so we need to somehow detect that this is the case and act accordingly.
1. In Kconfig
select IRQ_DOMAIN_HIERARCHY if ARCH_NOKIA_FOO
2. Look at other hierarchical GPIO IRQ drivers such as
drivers/gpio/gpio-ixp4xx.c
3. Detect that we have a hierarchical situation. The hierarchical
IRQ is determined by the chip integration so I would go and
check the SoC compatible in the top-level DT, e.g.:
if (of_machine_is_compatible("nokia,rock-n-roll-soc")) {
/* Initialize the interrupt as hiearchical */
girq->fwnode =...
girq->parent_domain = ...
girq->child_to_parent_hwirq = pl061_child_to_parent_nokia_rock_n_roll;
} else {
girq->parent_handler = pl061_irq_handler;
girq->num_parents = 1;
girq->parents = devm_kcalloc(dev, 1, sizeof(*girq->parents),
GFP_KERNEL);
if (!girq->parents)
return -ENOMEM;
girq->parents[0] = irq;
}
This might need some #ifdef or IS_ENABLED() for systems without
hierarchical IRQs.
4. Implement pl061_child_to_parent_nokia_rock_n_roll()
Just use hardcoded hardware IRQ offsets like other drivers such as
the ixp4xx does. Do not attempt to read any parent IRQs from
the device tree, and assign no IRQ in the device tree.
This is a side effect of the essentially per-soc pecularities around
interrupts. The interrupt is not cascaded so it need special
handling.
I think it can be done with quite little code.
Yours,
Linus Walleij
next prev parent reply other threads:[~2021-03-20 11:14 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-03-19 13:12 [PATCH v3] gpio: pl061: Support implementations without GPIOINTR line Alexander A Sverdlin
2021-03-19 14:34 ` Andy Shevchenko
2021-03-19 15:32 ` Alexander Sverdlin
2021-03-20 11:10 ` Linus Walleij [this message]
2021-03-22 8:50 ` Alexander Sverdlin
2021-03-22 9:17 ` 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='CACRpkdbqKmKh0+g92LHJYKO2vt=-TkdTFuSrNwChCbQ-siG53g@mail.gmail.com' \
--to=linus.walleij@linaro.org \
--cc=alexander.sverdlin@nokia.com \
--cc=andy.shevchenko@gmail.com \
--cc=bgolaszewski@baylibre.com \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maz@kernel.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).