Re: [PATCH 4/6] i2c: riic: Pass IRQ desc array as part of OF data

Geert Uytterhoeven
2025-06-06T13:25:59Z

Hi Prabhakar,

On Fri, 30 May 2025 at 16:31, Prabhakar <prabhakar.csengg@gmail.com> wrote:
> From: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
>
> In preparation for adding support for Renesas RZ/T2H and RZ/N2H SoCs,
> which feature a combined error interrupt instead of individual error
> interrupts per condition, update the driver to support configurable IRQ
> layouts via OF data.
>
> Introduce a new `irqs` field and `num_irqs` count in `riic_of_data` to
> allow future SoCs to provide a custom IRQ layout. This patch is a
> non-functional change for existing SoCs and maintains compatibility with
> the current `riic_irqs` array.
>
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> ---
> drivers/i2c/busses/i2c-riic.c | 22 ++++++++++++++++------
> 1 file changed, 16 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-riic.c b/drivers/i2c/busses/i2c-riic.c
> index 23375f7fe3ad..4950b790cfe7 100644
> --- a/drivers/i2c/busses/i2c-riic.c
> +++ b/drivers/i2c/busses/i2c-riic.c
> @@ -102,6 +102,8 @@ enum riic_reg_list {
>
> struct riic_of_data {
> const u8 *regs;
> + const struct riic_irq_desc *irqs;
> + u8 num_irqs;
> bool fast_mode_plus;
> };
>

> @@ -607,10 +611,14 @@ static const u8 riic_rz_a_regs[RIIC_REG_END] = {
> static const struct riic_of_data riic_rz_a_info = {
> .regs = riic_rz_a_regs,
> .fast_mode_plus = true,
> + .irqs = riic_irqs,
> + .num_irqs = ARRAY_SIZE(riic_irqs),

Nit: Perhaps initialize the members in the order of declaration?

> };
>
> static const struct riic_of_data riic_rz_a1h_info = {
> .regs = riic_rz_a_regs,
> + .irqs = riic_irqs,
> + .num_irqs = ARRAY_SIZE(riic_irqs),
> };
>
> static const u8 riic_rz_v2h_regs[RIIC_REG_END] = {
> @@ -631,6 +639,8 @@ static const u8 riic_rz_v2h_regs[RIIC_REG_END] = {
> static const struct riic_of_data riic_rz_v2h_info = {
> .regs = riic_rz_v2h_regs,
> .fast_mode_plus = true,
> + .irqs = riic_irqs,
> + .num_irqs = ARRAY_SIZE(riic_irqs),

Likewise.

> };
>
> static int riic_i2c_suspend(struct device *dev)

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