Re: [RFC PATCH 2/3] gpio: rcar: Add support for GPIO alternative interrupt

From: Geert Uytterhoeven
Date: Fri Apr 24 2020 - 04:36:29 EST


Hi Eugeniu,

CC devicetree
CC Stefano

Thanks for forwarding this patch!

On Wed, Apr 22, 2020 at 12:11 PM Eugeniu Rosca <erosca@xxxxxxxxxxxxxx> wrote:
> From: Torii Kenichi <torii.ken1@xxxxxxxxxxxxxx>
>
> INTC-AP accepts both GPIO interrupt and GPIO alternative interrupt,
> but INTC-RT can only handle GPIO interrupt, as depicted in below excerpt
> from 'Figure 7.1 GPIO Block Configuration (1)' of
> 'R-Car3 HW User's Manual Rev.2.00, Jul 2019':
>
> +------------------------------+
> | Interrupt display register +----> GPIO.ch* (to INTC-AP, INTC-RT)
> | (INTDTn) +----> GPIO.ch*A (to INTC-AP)
> +------------------------------+

Note that GPIO.ch[67]A seem to be available on INTC-RT, too. But for
the other channels, you're right in that the "A" variants are connected
to INTC-AP only.

> It seems to be also the case for earlier Renesas SoCs like RZ/G,
> as per 'Figure 6.1 GPIO Block Configuration' in
> 'RZ/G Series Userâs Manual: Hardware Rev.1.00 Sep 2016' [1].

On R-Car Gen2, they're called "EXT_INT" resp. "EXT_ALT_INT" instead of
"GPIO.ch*" and "GPIO.ch*A".

> To reduce the interference between RT domain (CR7/SH) and the AP domain
> (Cortex A5x) and to independently control GPIO interrupts in these two
> domains, add support for processing GPIO alternative interrupts in AP.
>
> This allows handling normal GPIO interrupts exclusively by INTC-RT.
> The change is DT-driven and depends on the enablement of the
> 'use-alternative-interrupt' DTS property.
>
> One caveat is that the 'interrupts' property update must go hand in hand
> with the newly added 'use-alternative-interrupt' property.

As I replied to the DT bindings patch, I think the "interrupts" property
should contain both, so "use-alternative-interrupt" can pick the one it
needs.

> Signed-off-by: Torii Kenichi <torii.ken1@xxxxxxxxxxxxxx>
> [erosca: enrich commit description]
> Signed-off-by: Eugeniu Rosca <erosca@xxxxxxxxxxxxxx>

[actual patch[1] deleted, as it doesn't really matter for the discussion].

You may want to look at "LTD20-205 System Device Tree Project"[2],
where Stefano talks about using DT to describe the full system
(I've read the slides, but haven't watched the video yet).

Your patch shows that the assumption "All devices have interrupts routed
to both interrupt controllers" isn't always true.

[1] https://lore.kernel.org/linux-gpio/20200422101026.9220-3-erosca@xxxxxxxxxxxxxx/
[2] https://connect.linaro.org/resources/ltd20/ltd20-205/

Gr{oetje,eeting}s,

Geert


--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds