[PATCH v8 0/8] gpio: renesas: Add support for GPIO and related interrupts in RZ/N1 SoC

Herve Codina (Schneider Electric) posted 8 patches 3 weeks, 2 days ago
.../soc/renesas/renesas,rzn1-gpioirqmux.yaml  |  87 ++++++++++
arch/arm/boot/dts/renesas/r9a06g032.dtsi      | 159 ++++++++++++++++++
drivers/irqchip/irq-ls-extirq.c               |  47 ++----
drivers/irqchip/irq-renesas-rza1.c            |  43 ++---
drivers/of/irq.c                              |  70 ++++++++
.../of/unittest-data/tests-interrupts.dtsi    |   9 +
drivers/of/unittest.c                         | 116 +++++++++++++
drivers/soc/renesas/Kconfig                   |   4 +
drivers/soc/renesas/Makefile                  |   1 +
drivers/soc/renesas/rzn1_irqmux.c             | 127 ++++++++++++++
include/linux/of_irq.h                        |  41 ++++-
11 files changed, 646 insertions(+), 58 deletions(-)
create mode 100644 Documentation/devicetree/bindings/soc/renesas/renesas,rzn1-gpioirqmux.yaml
create mode 100644 drivers/soc/renesas/rzn1_irqmux.c
[PATCH v8 0/8] gpio: renesas: Add support for GPIO and related interrupts in RZ/N1 SoC
Posted by Herve Codina (Schneider Electric) 3 weeks, 2 days ago
Hi,

This series adds support for GPIO and GPIO IRQ mux available in the
RZ/N1 SoCs.

The first patches in this series are related to a new helper introduced
to parse an interrupt-map property.
  - patch 1: Introduce the helper (for_each_of_imap_item)
  - patch 2: Add a unittest for the new helper
  - patch 3 and 4: convert existing drivers to use this new helper

Patch 5 adds support for GPIO (device-tree description)

The last patches (6, 7 and 8) of the series are related to GPIO
interrupts and GPIO IRQ multiplexer.

In the RZ/N1 SoCs, GPIO interrupts are wired to a GPIO IRQ multiplexer.

This multiplexer does nothing but select 8 GPIO IRQ lines out of the 96
available to wire them to the GIC input lines.

One upstreaming attempt have been done previously by Phil Edworthy [1]
but the series has never been applied.

Based on my understanding, I have fully reworked the driver proposed by
Phil and removed the IRQ domain. Indeed, the device doesn't handle
interrupts. It just routes signals.

Also, as an interrupt-map property is used, the driver cannot be
involved as an interrupt controller itself. It is a nexus node.

With that in mind,
  - Patch 6 is related to the irq-mux binding.

  - Patch 7 introduces the irq-mux driver.
    This driver uses the 'for_each_of_imap_item' helper introduced
    previously. Indeed, the lines routing is defined by the
    interrupt-map property and the driver needs to set registers to
    apply this routing.

  - Patch 8 is the RZ/N1 device-tree description update to have the
    support for the GPIO interrupts.

The series was already ready in its v7 iteration. This v8 iteration just
add the 'Tested-by' tag sent by Wolfram on v7.

Even if the series touches several subsystems, the whole series could be
merged through the renesas-devel tree as suggested in the v7 iteration
[2].

Rob, Thomas, this series is blocked waiting for your feedback and your
acks if you are okay.

[1] https://lore.kernel.org/all/20190219155511.28507-1-phil.edworthy@renesas.com/
[2] https://lore.kernel.org/all/aV6wcIE0D7ozKeQn@ninjato/

Best regards,
Hervé

Changes v7 -> v8
  v7: https://lore.kernel.org/all/20251215142836.167101-1-herve.codina@bootlin.com/

  Patches 1 to 7:
   - No changes

  Patch 8:
   - Add 'Tested-by: Wolfram Sang'.

Changes v6 -> v7
  v6: https://lore.kernel.org/all/20251027123601.77216-1-herve.codina@bootlin.com/

  Rebase on top of v6.19-rc1.

  Patches 1 to 4 :
   - Add 'Reviewed-by: Linus Walleij'.

  Patch 5:
   - Fix a typo (Synopsys) in commit log.
   - GPIO controllers enabled by default.
   - Move "reg" just below "compatible".
   - Add 'Reviewed-by: Linus Walleij'.
   - Add 'Reviewed-by: Geert Uytterhoeven'.

  Patch 6:
   - Add 'Reviewed-by: Linus Walleij'.
   - Add 'Reviewed-by: Geert Uytterhoeven'.

  Patch 7:
   - Enable RZN1_IRQMUX only if GPIO_DWAPB is enabled.
   - Move a 'if' condition to a single line.
   - Print the output line index in the 'already defined' error message.
   - Move rzn1_irqmux_setup() code directly into rzn1_irqmux_probe().
   - Add 'Reviewed-by: Linus Walleij'.
   - Add 'Tested-by: Wolfram Sang'.
   - Add 'Reviewed-by: Wolfram Sang'.
   - Add 'Reviewed-by: Geert Uytterhoeven'.

  Patch 8:
   - Remove unneeded spaces.
   - Add 'Reviewed-by: Linus Walleij'
   - Add 'Reviewed-by: Wolfram Sang'
   - Add 'Reviewed-by: Geert Uytterhoeven'

Changes v5 -> v6
  v5: https://lore.kernel.org/lkml/20251020080648.13452-1-herve.codina@bootlin.com/

  Patches 1 and 2:
    Add 'Reviewed-by: Rob Herring'

  Patches 3, and 5:
    No changes

  Patch 6:
    Add 'Reviewed-by: Rob Herring'

  Patch 7:
    Remove an unneeded TAB in Makefile.
    Use RZN1_IRQMUX_GIC_SPI_BASE and RZN1_IRQMUX_NUM_OUTPUTS to replace
    the irq/output mapping table.
    Use DECLARE_BITMAP().

  Patch 8:
    No changes

Changes v4 -> v5
  v4: https://lore.kernel.org/lkml/20250922152640.154092-1-herve.codina@bootlin.com/

  Rebase on top of v6.18-rc1

  Patches 1 to 3:
    No changes

  Patch 4:
    Fix conflict.
    Add 'Tested-by: Wolfram Sang'.

  Patch 5:
    Add 'Reviewed-by: Bartosz Golaszewski'.

  Patch 6:
    Add 'Reviewed-by: Wolfram Sang'.

  Patch 7:
    Add a missing 'const' qualifier.
    Remove an unneeded dev_err_probe() call.
    Add a check to avoid setting the same output line multiple times.

  Patch 8:
    Update comment
    Add 'Reviewed-by: Bartosz Golaszewski'

Changes v3 -> v4
  v3: https://lore.kernel.org/lkml/20250918104009.94754-1-herve.codina@bootlin.com/

  Patch 1:
    - Add 'Tested-by: Wolfram Sang'

  Patch 2..5:
    - No changes

  Patch 6:
    - Add minItems and maxItems
    - Update the 'interrup-map' description

  Patch 7:
    - Use rzn1_irqmux prefix instead of irqmux.
    - Introduce rzn1_irqmux_output_lines[] to give the mapping between
      the interrupt output line index and the GIC controller interrupt
      number.
    - Remove of_irq_count() call and related checks

  Patch 8:
    - Describe the irq mux node using a reduced (one item) interrupt-map
      property.

Changes v2 -> v3
  v2: https://lore.kernel.org/lkml/20250909120041.154459-1-herve.codina@bootlin.com/

  Reordered patches as suggested by Thomas Gleixner.

  Patch 1: (3 in v2)
    - Replace a wrong 'extern' by 'static inline' in of_irq.h  (detected
      by test robots)

  Patch 2: (4 in v2)
  Patch 3: (5 in v2)
  Patch 4: (6 in v2)
    - No changes

  Patch 5: (1 in v2)
    - Add 'Reviewed-by: Wolfram Sang'
    - Add 'Tested-by: Wolfram Sang'

  Patch 6: (2 in v2)
    - Add '#address-cells = <0>;' in the interrupt-controller node
      present in the example.

  Patch 7:
  Patch 8:
    - No changes

Changes v1 -> v2
  v1: https://lore.kernel.org/lkml/20250725152618.32886-1-herve.codina@bootlin.com/

  Rebase on top of v6.17-rc5

  Patch 1 in v1
    - Removed in v2 (no need for RZ/N1 compatible strings).

  Patch 1 (2 in v1)
    - Fix node names (issue reported by Rob's bot)
    - Fix compatible RZ/N1 compatible strings
    - Removed undocumented and unused 'bank-name' properties

  Patch 2 (3 in v1)
   - Remove 'interrupts' property
   - Update 'interrupt-map' description

  Patch 3 (4 in v1)
   - Rework of_irq_foreach_imap() to provide the for_each_of_imap_item
     iterator (similar to for_each_of_range)

  Patch 4 (new in v2)
   - Add a unittest for for_each_of_imap_item

  Patch 5 (new in v2)
   - Convert irqchip/ls-extirq to use for_each_of_imap_item

  Patch 6 (new in v2)
   - Convert irqchip/renesas-rza1 to use for_each_of_imap_item

  Patch 7 (5 in v1)
   - Use for_each_of_imap_item
   - Remove 'interrupts' property usage

  Patch 8 (6 in v1)
   - Remove 'interrupts' property

Herve Codina (Schneider Electric) (8):
  of/irq: Introduce for_each_of_imap_item
  of: unittest: Add a test case for for_each_of_imap_item iterator
  irqchip/ls-extirq: Use for_each_of_imap_item iterator
  irqchip/renesas-rza1: Use for_each_of_imap_item iterator
  ARM: dts: r9a06g032: Add GPIO controllers
  dt-bindings: soc: renesas: Add the Renesas RZ/N1 GPIO Interrupt
    Multiplexer
  soc: renesas: Add support for Renesas RZ/N1 GPIO Interrupt Multiplexer
  ARM: dts: r9a06g032: Add support for GPIO interrupts

 .../soc/renesas/renesas,rzn1-gpioirqmux.yaml  |  87 ++++++++++
 arch/arm/boot/dts/renesas/r9a06g032.dtsi      | 159 ++++++++++++++++++
 drivers/irqchip/irq-ls-extirq.c               |  47 ++----
 drivers/irqchip/irq-renesas-rza1.c            |  43 ++---
 drivers/of/irq.c                              |  70 ++++++++
 .../of/unittest-data/tests-interrupts.dtsi    |   9 +
 drivers/of/unittest.c                         | 116 +++++++++++++
 drivers/soc/renesas/Kconfig                   |   4 +
 drivers/soc/renesas/Makefile                  |   1 +
 drivers/soc/renesas/rzn1_irqmux.c             | 127 ++++++++++++++
 include/linux/of_irq.h                        |  41 ++++-
 11 files changed, 646 insertions(+), 58 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/soc/renesas/renesas,rzn1-gpioirqmux.yaml
 create mode 100644 drivers/soc/renesas/rzn1_irqmux.c

-- 
2.52.0

Re: [PATCH v8 0/8] gpio: renesas: Add support for GPIO and related interrupts in RZ/N1 SoC
Posted by Wolfram Sang 3 weeks, 2 days ago
> Rob, Thomas, this series is blocked waiting for your feedback and your
> acks if you are okay.

This was a little hidden between the other text, so let me emphasize
that these acks are needed. The other option is to send the irq stuff
and the SoC stuff seperately.

Re: [PATCH v8 0/8] gpio: renesas: Add support for GPIO and related interrupts in RZ/N1 SoC
Posted by Geert Uytterhoeven 3 weeks, 2 days ago
On Wed, 14 Jan 2026 at 11:03, Wolfram Sang
<wsa+renesas@sang-engineering.com> wrote:
> > Rob, Thomas, this series is blocked waiting for your feedback and your
> > acks if you are okay.
>
> This was a little hidden between the other text, so let me emphasize
> that these acks are needed. The other option is to send the irq stuff
> and the SoC stuff seperately.

The irq and SoC stuff depend on the of stuff, so doing so would
delay the former by one cycle.

On IRC, Rob sort of agreed to option A from my proposal (see v7 cover
letter):

  A. Rob takes the first two patches, and provides an immutable branch.
     Then Thomas takes the irqchip patches, and I take the rest.

Unfortunately that part hasn't happened yet...

Meanwhile, I'm queuing the DTS patches for v6.20 anyway, as they
have no dependencies.

Gr{oetje,eeting}s,

                        Geert


--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

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
Re: [PATCH v8 0/8] gpio: renesas: Add support for GPIO and related interrupts in RZ/N1 SoC
Posted by Rob Herring 3 weeks, 2 days ago
On Wed, Jan 14, 2026 at 4:47 AM Geert Uytterhoeven <geert@linux-m68k.org> wrote:
>
> On Wed, 14 Jan 2026 at 11:03, Wolfram Sang
> <wsa+renesas@sang-engineering.com> wrote:
> > > Rob, Thomas, this series is blocked waiting for your feedback and your
> > > acks if you are okay.
> >
> > This was a little hidden between the other text, so let me emphasize
> > that these acks are needed. The other option is to send the irq stuff
> > and the SoC stuff seperately.

Reviewed-by > Acked-by

And if it has either, I stop paying attention. So I was assuming this
all was going in via not-my-tree...

> The irq and SoC stuff depend on the of stuff, so doing so would
> delay the former by one cycle.
>
> On IRC, Rob sort of agreed to option A from my proposal (see v7 cover
> letter):
>
>   A. Rob takes the first two patches, and provides an immutable branch.
>      Then Thomas takes the irqchip patches, and I take the rest.

Until this...

> Unfortunately that part hasn't happened yet...

And then a new version came in... Why a new version only to add a
Tested-by tag? That sends you to the back of the queue in my normal
workflow (which this is turning into anything but).

Thomas has now provided a Reviewed-by. I think it is easiest if you
just take the whole series via Renesas tree.

Rob
Re: [PATCH v8 0/8] gpio: renesas: Add support for GPIO and related interrupts in RZ/N1 SoC
Posted by Geert Uytterhoeven 3 weeks, 1 day ago
On Wed, 14 Jan 2026 at 23:21, Rob Herring <robh@kernel.org> wrote:
> On Wed, Jan 14, 2026 at 4:47 AM Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> > On Wed, 14 Jan 2026 at 11:03, Wolfram Sang
> > <wsa+renesas@sang-engineering.com> wrote:
> > > > Rob, Thomas, this series is blocked waiting for your feedback and your
> > > > acks if you are okay.
> > >
> > > This was a little hidden between the other text, so let me emphasize
> > > that these acks are needed. The other option is to send the irq stuff
> > > and the SoC stuff seperately.
>
> Reviewed-by > Acked-by

It does have different semantics...

> And if it has either, I stop paying attention. So I was assuming this
> all was going in via not-my-tree...
>
> > The irq and SoC stuff depend on the of stuff, so doing so would
> > delay the former by one cycle.
> >
> > On IRC, Rob sort of agreed to option A from my proposal (see v7 cover
> > letter):
> >
> >   A. Rob takes the first two patches, and provides an immutable branch.
> >      Then Thomas takes the irqchip patches, and I take the rest.
>
> Until this...
>
> > Unfortunately that part hasn't happened yet...
>
> And then a new version came in... Why a new version only to add a
> Tested-by tag? That sends you to the back of the queue in my normal
> workflow (which this is turning into anything but).
>
> Thomas has now provided a Reviewed-by. I think it is easiest if you
> just take the whole series via Renesas tree.

OK doing so...
Thanks!

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

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
Re: [PATCH v8 0/8] gpio: renesas: Add support for GPIO and related interrupts in RZ/N1 SoC
Posted by Wolfram Sang 3 weeks, 2 days ago
> The irq and SoC stuff depend on the of stuff, so doing so would
> delay the former by one cycle.

I know, but it is still better than nothing happening ;)

> On IRC, Rob sort of agreed to option A from my proposal (see v7 cover
> letter):

Cool, didn't know this.

> Unfortunately that part hasn't happened yet...

IRC to the rescue again? I'd think it will be easier for Thomas if he
gets a PR from Rob. Maybe Rob should take the first 4 patches even, then
Thomas only needs to review the PR.

Thanks!