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

Herve Codina (Schneider Electric) posted 8 patches 3 months, 1 week ago
There is a newer version of this series
.../soc/renesas/renesas,rzn1-gpioirqmux.yaml  |  87 ++++++++++
arch/arm/boot/dts/renesas/r9a06g032.dtsi      | 162 ++++++++++++++++++
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             | 133 ++++++++++++++
include/linux/of_irq.h                        |  41 ++++-
11 files changed, 655 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 v6 0/8] gpio: renesas: Add support for GPIO and related interrupts in RZ/N1 SoC
Posted by Herve Codina (Schneider Electric) 3 months, 1 week 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.

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

Best regards,
Hervé

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      | 162 ++++++++++++++++++
 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             | 133 ++++++++++++++
 include/linux/of_irq.h                        |  41 ++++-
 11 files changed, 655 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.51.0

Re: [PATCH v6 0/8] gpio: renesas: Add support for GPIO and related interrupts in RZ/N1 SoC
Posted by Linus Walleij 3 months, 1 week ago
On Mon, Oct 27, 2025 at 1:36 PM Herve Codina (Schneider Electric)
<herve.codina@bootlin.com> wrote:

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

I think I sent some review tag at some point?

Anyways, here is another one:
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij
Re: [PATCH v6 0/8] gpio: renesas: Add support for GPIO and related interrupts in RZ/N1 SoC
Posted by Herve Codina 2 months, 3 weeks ago
Hi Geert,

On Mon, 27 Oct 2025 13:35:52 +0100
"Herve Codina (Schneider Electric)" <herve.codina@bootlin.com> wrote:

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

The series seems ready to be applied even with the minor feedback from Wolfram
on patch 6.

Do you expect a new iteration from my side or do you think this v6 iteration
can be applied as it?

Best regards.
Hervé
Re: [PATCH v6 0/8] gpio: renesas: Add support for GPIO and related interrupts in RZ/N1 SoC
Posted by Geert Uytterhoeven 2 months, 3 weeks ago
Hi Hervé,

On Fri, 14 Nov 2025 at 08:41, Herve Codina <herve.codina@bootlin.com> wrote:
> On Mon, 27 Oct 2025 13:35:52 +0100
> "Herve Codina (Schneider Electric)" <herve.codina@bootlin.com> wrote:
> > This series adds support for GPIO and GPIO IRQ mux available in the
> > RZ/N1 SoCs.
>
> The series seems ready to be applied even with the minor feedback from Wolfram
> on patch 6.
>
> Do you expect a new iteration from my side or do you think this v6 iteration
> can be applied as it?

Sorry, I only realized yesterday that the GPIO Interrupt Multiplexer
driver resides in drivers/soc/renesas/.  Before, I mistakenly thought
it was part of the GPIO subsystem.

Anyway, it is a bit late in the cycle for me to take more patches for
v6.19 (I am about to send my last PR right now), especially given the
patches touching the DT and irqchip subsystems (with the DT ones being
a hard dependency).

So I suggest Rob takes the first two patches for v6.19, and we revisit
the others for v6.20 (including late review comments), without having
to worry about dependencies.  Does that sound OK to you?

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 v6 0/8] gpio: renesas: Add support for GPIO and related interrupts in RZ/N1 SoC
Posted by Herve Codina 2 months, 3 weeks ago
Hi Geert,

On Fri, 14 Nov 2025 10:43:40 +0100
Geert Uytterhoeven <geert@linux-m68k.org> wrote:

> Hi Hervé,
> 
> On Fri, 14 Nov 2025 at 08:41, Herve Codina <herve.codina@bootlin.com> wrote:
> > On Mon, 27 Oct 2025 13:35:52 +0100
> > "Herve Codina (Schneider Electric)" <herve.codina@bootlin.com> wrote:  
> > > This series adds support for GPIO and GPIO IRQ mux available in the
> > > RZ/N1 SoCs.  
> >
> > The series seems ready to be applied even with the minor feedback from Wolfram
> > on patch 6.
> >
> > Do you expect a new iteration from my side or do you think this v6 iteration
> > can be applied as it?  
> 
> Sorry, I only realized yesterday that the GPIO Interrupt Multiplexer
> driver resides in drivers/soc/renesas/.  Before, I mistakenly thought
> it was part of the GPIO subsystem.
> 
> Anyway, it is a bit late in the cycle for me to take more patches for
> v6.19 (I am about to send my last PR right now), especially given the
> patches touching the DT and irqchip subsystems (with the DT ones being
> a hard dependency).
> 
> So I suggest Rob takes the first two patches for v6.19, and we revisit
> the others for v6.20 (including late review comments), without having
> to worry about dependencies.  Does that sound OK to you?

Sounds good to me, thanks.

Best regards,
Hervé