From: "Herve Codina (Schneider Electric)" <herve.codina@bootlin.com>
To: Thomas Gleixner <tglx@linutronix.de>,
Wolfram Sang <wsa+renesas@sang-engineering.com>,
Hoan Tran <hoan@os.amperecomputing.com>,
Linus Walleij <linus.walleij@linaro.org>,
Bartosz Golaszewski <brgl@bgdev.pl>,
Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Geert Uytterhoeven <geert+renesas@glider.be>,
Magnus Damm <magnus.damm@gmail.com>,
Saravana Kannan <saravanak@google.com>,
Serge Semin <fancer.lancer@gmail.com>,
Herve Codina <herve.codina@bootlin.com>
Cc: Phil Edworthy <phil.edworthy@renesas.com>,
linux-gpio@vger.kernel.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
Pascal Eberhard <pascal.eberhard@se.com>,
Miquel Raynal <miquel.raynal@bootlin.com>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Subject: [PATCH v5 0/8] gpio: renesas: Add support for GPIO and related interrupts in RZ/N1 SoC
Date: Mon, 20 Oct 2025 10:06:36 +0200 [thread overview]
Message-ID: <20251020080648.13452-1-herve.codina@bootlin.com> (raw)
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 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 | 150 ++++++++++++++++
include/linux/of_irq.h | 41 ++++-
11 files changed, 672 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
next reply other threads:[~2025-10-20 8:07 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-20 8:06 Herve Codina (Schneider Electric) [this message]
2025-10-20 8:06 ` [PATCH v5 1/8] of/irq: Introduce for_each_of_imap_item Herve Codina (Schneider Electric)
2025-10-26 21:26 ` Rob Herring (Arm)
2025-10-20 8:06 ` [PATCH v5 2/8] of: unittest: Add a test case for for_each_of_imap_item iterator Herve Codina (Schneider Electric)
2025-10-26 21:28 ` Rob Herring (Arm)
2025-10-20 8:06 ` [PATCH v5 3/8] irqchip/ls-extirq: Use " Herve Codina (Schneider Electric)
2025-10-20 8:06 ` [PATCH v5 4/8] irqchip/renesas-rza1: " Herve Codina (Schneider Electric)
2025-10-20 8:06 ` [PATCH v5 5/8] ARM: dts: r9a06g032: Add GPIO controllers Herve Codina (Schneider Electric)
2025-10-20 8:06 ` [PATCH v5 6/8] dt-bindings: soc: renesas: Add the Renesas RZ/N1 GPIO Interrupt Multiplexer Herve Codina (Schneider Electric)
2025-10-26 21:29 ` Rob Herring (Arm)
2025-10-20 8:06 ` [PATCH v5 7/8] soc: renesas: Add support for " Herve Codina (Schneider Electric)
2025-10-21 13:05 ` Geert Uytterhoeven
2025-10-22 13:03 ` Herve Codina
2025-10-23 11:30 ` Geert Uytterhoeven
2025-10-23 13:20 ` Herve Codina
2025-10-24 7:24 ` Geert Uytterhoeven
2025-10-20 8:06 ` [PATCH v5 8/8] ARM: dts: r9a06g032: Add support for GPIO interrupts Herve Codina (Schneider Electric)
2025-10-21 7:13 ` [PATCH v5 0/8] gpio: renesas: Add support for GPIO and related interrupts in RZ/N1 SoC Linus Walleij
2025-10-22 9:00 ` Wolfram Sang
2025-10-25 8:52 ` Wolfram Sang
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=20251020080648.13452-1-herve.codina@bootlin.com \
--to=herve.codina@bootlin.com \
--cc=brgl@bgdev.pl \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=fancer.lancer@gmail.com \
--cc=geert+renesas@glider.be \
--cc=hoan@os.amperecomputing.com \
--cc=krzk+dt@kernel.org \
--cc=linus.walleij@linaro.org \
--cc=linux-gpio@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=magnus.damm@gmail.com \
--cc=miquel.raynal@bootlin.com \
--cc=pascal.eberhard@se.com \
--cc=phil.edworthy@renesas.com \
--cc=robh@kernel.org \
--cc=saravanak@google.com \
--cc=tglx@linutronix.de \
--cc=thomas.petazzoni@bootlin.com \
--cc=wsa+renesas@sang-engineering.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.