public inbox for cip-dev@lists.cip-project.org
 help / color / mirror / Atom feed
* [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs
@ 2025-12-29 22:38 Lad Prabhakar
  2025-12-29 22:38 ` [PATCH 6.12.y-cip 01/17] clk: renesas: r9a09g077: Propagate rate changes to parent clocks Lad Prabhakar
                   ` (18 more replies)
  0 siblings, 19 replies; 24+ messages in thread
From: Lad Prabhakar @ 2025-12-29 22:38 UTC (permalink / raw)
  To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek; +Cc: Biju Das

Hi All,

This patch series aims to add I2C support to Renesas RZ/T2H and RZ/N2H
SoCs and enable the I2C support on the EVKs. Note, all the patches have
been cherry picked from upstream kernel.

Cheers,
Prabhakar

Lad Prabhakar (17):
  clk: renesas: r9a09g077: Propagate rate changes to parent clocks
  clk: renesas: r9a09g077: Remove stray blank line
  clk: renesas: r9a09g077: Use devm_ helpers for divider clock
    registration
  clk: renesas: cpg-mssr: Add module reset support for RZ/T2H
  clk: renesas: r9a09g077: Add RIIC module clocks
  dt-bindings: i2c: renesas,riic: Move ref for i2c-controller.yaml to
    the end
  dt-bindings: i2c: renesas,riic: Document RZ/T2H and RZ/N2H support
  i2c: riic: Make use of devres helper to request deasserted reset line
  i2c: riic: Implement bus recovery
  i2c: riic: Pass IRQ desc array as part of OF data
  i2c: riic: Move generic compatible string to end of array
  i2c: riic: Add support for RZ/T2H SoC
  arm64: dts: renesas: r9a09g077: Add I2C controller nodes
  arm64: dts: renesas: r9a09g087: Add I2C controller nodes
  arm64: dts: renesas: r9a09g077m44-rzt2h-evk: Enable I2C0 and I2C1
    support
  arm64: dts: renesas: r9a09g087m44-rzt2h-evk: Enable I2C0 and I2C1
    support
  arm64: dts: renesas: rzt2h-n2h-evk-common: Enable EEPROM on I2C0

 .../devicetree/bindings/i2c/renesas,riic.yaml | 105 ++++++++++-----
 arch/arm64/boot/dts/renesas/r9a09g077.dtsi    |  45 +++++++
 .../dts/renesas/r9a09g077m44-rzt2h-evk.dts    |  36 ++++++
 arch/arm64/boot/dts/renesas/r9a09g087.dtsi    |  45 +++++++
 .../dts/renesas/r9a09g087m44-rzn2h-evk.dts    |  56 ++++++++
 .../dts/renesas/rzt2h-n2h-evk-common.dtsi     |  10 ++
 drivers/clk/renesas/r9a09g077-cpg.c           |  34 ++---
 drivers/clk/renesas/renesas-cpg-mssr.c        | 110 +++++++++++++++-
 drivers/i2c/busses/i2c-riic.c                 | 120 ++++++++++++++----
 9 files changed, 485 insertions(+), 76 deletions(-)


base-commit: 204087e9ed3a3aada175fc26ef37c96445fbfbb3
-- 
2.43.0



^ permalink raw reply	[flat|nested] 24+ messages in thread

* [PATCH 6.12.y-cip 01/17] clk: renesas: r9a09g077: Propagate rate changes to parent clocks
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
@ 2025-12-29 22:38 ` Lad Prabhakar
  2025-12-29 22:38 ` [PATCH 6.12.y-cip 02/17] clk: renesas: r9a09g077: Remove stray blank line Lad Prabhakar
                   ` (17 subsequent siblings)
  18 siblings, 0 replies; 24+ messages in thread
From: Lad Prabhakar @ 2025-12-29 22:38 UTC (permalink / raw)
  To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek; +Cc: Biju Das

commit 145dfd70b9c70e5bc03494a7ce8fa3748ac01af3 upstream.

Add the CLK_SET_RATE_PARENT flag to divider clock registration so that rate
changes can propagate to parent clocks when needed. This allows the CPG
divider clocks to request rate adjustments from their parent, ensuring
correct frequency scaling and improved flexibility in clock rate selection.

Fixes: 065fe720eec6e ("clk: renesas: Add support for R9A09G077 SoC")
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://patch.msgid.link/20251028165127.991351-2-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/clk/renesas/r9a09g077-cpg.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/clk/renesas/r9a09g077-cpg.c b/drivers/clk/renesas/r9a09g077-cpg.c
index baf917ff4bebb..c3ee2c7d3a693 100644
--- a/drivers/clk/renesas/r9a09g077-cpg.c
+++ b/drivers/clk/renesas/r9a09g077-cpg.c
@@ -165,7 +165,7 @@ r9a09g077_cpg_div_clk_register(struct device *dev,
 
 	if (core->dtable)
 		clk_hw = clk_hw_register_divider_table(dev, core->name,
-						       parent_name, 0,
+						       parent_name, CLK_SET_RATE_PARENT,
 						       addr,
 						       GET_SHIFT(core->conf),
 						       GET_WIDTH(core->conf),
@@ -174,7 +174,7 @@ r9a09g077_cpg_div_clk_register(struct device *dev,
 						       &pub->rmw_lock);
 	else
 		clk_hw = clk_hw_register_divider(dev, core->name,
-						 parent_name, 0,
+						 parent_name, CLK_SET_RATE_PARENT,
 						 addr,
 						 GET_SHIFT(core->conf),
 						 GET_WIDTH(core->conf),
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 6.12.y-cip 02/17] clk: renesas: r9a09g077: Remove stray blank line
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
  2025-12-29 22:38 ` [PATCH 6.12.y-cip 01/17] clk: renesas: r9a09g077: Propagate rate changes to parent clocks Lad Prabhakar
@ 2025-12-29 22:38 ` Lad Prabhakar
  2025-12-29 22:38 ` [PATCH 6.12.y-cip 03/17] clk: renesas: r9a09g077: Use devm_ helpers for divider clock registration Lad Prabhakar
                   ` (16 subsequent siblings)
  18 siblings, 0 replies; 24+ messages in thread
From: Lad Prabhakar @ 2025-12-29 22:38 UTC (permalink / raw)
  To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek; +Cc: Biju Das

commit 3b32a07584a8fc940129cfd384e180bdd758b8ed upstream.

Remove an unnecessary blank line at the end of
r9a09g077_cpg_div_clk_register() to tidy up the code.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://patch.msgid.link/20251028165127.991351-3-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/clk/renesas/r9a09g077-cpg.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/clk/renesas/r9a09g077-cpg.c b/drivers/clk/renesas/r9a09g077-cpg.c
index c3ee2c7d3a693..b1b4c66c12bbe 100644
--- a/drivers/clk/renesas/r9a09g077-cpg.c
+++ b/drivers/clk/renesas/r9a09g077-cpg.c
@@ -184,7 +184,6 @@ r9a09g077_cpg_div_clk_register(struct device *dev,
 		return ERR_CAST(clk_hw);
 
 	return clk_hw->clk;
-
 }
 
 static struct clk * __init
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 6.12.y-cip 03/17] clk: renesas: r9a09g077: Use devm_ helpers for divider clock registration
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
  2025-12-29 22:38 ` [PATCH 6.12.y-cip 01/17] clk: renesas: r9a09g077: Propagate rate changes to parent clocks Lad Prabhakar
  2025-12-29 22:38 ` [PATCH 6.12.y-cip 02/17] clk: renesas: r9a09g077: Remove stray blank line Lad Prabhakar
@ 2025-12-29 22:38 ` Lad Prabhakar
  2025-12-29 22:38 ` [PATCH 6.12.y-cip 04/17] clk: renesas: cpg-mssr: Add module reset support for RZ/T2H Lad Prabhakar
                   ` (15 subsequent siblings)
  18 siblings, 0 replies; 24+ messages in thread
From: Lad Prabhakar @ 2025-12-29 22:38 UTC (permalink / raw)
  To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek; +Cc: Biju Das

commit 7a9d0318da5d1d148021d9c9762cefecb552c54f upstream.

Convert the divider clock registration in the R9A09G077 CPG driver to use
device-managed (devm_) helper functions.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://patch.msgid.link/20251028165127.991351-4-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/clk/renesas/r9a09g077-cpg.c | 30 +++++++++++++++--------------
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/drivers/clk/renesas/r9a09g077-cpg.c b/drivers/clk/renesas/r9a09g077-cpg.c
index b1b4c66c12bbe..04fbc0539241a 100644
--- a/drivers/clk/renesas/r9a09g077-cpg.c
+++ b/drivers/clk/renesas/r9a09g077-cpg.c
@@ -164,21 +164,23 @@ r9a09g077_cpg_div_clk_register(struct device *dev,
 	parent_name = __clk_get_name(parent);
 
 	if (core->dtable)
-		clk_hw = clk_hw_register_divider_table(dev, core->name,
-						       parent_name, CLK_SET_RATE_PARENT,
-						       addr,
-						       GET_SHIFT(core->conf),
-						       GET_WIDTH(core->conf),
-						       core->flag,
-						       core->dtable,
-						       &pub->rmw_lock);
+		clk_hw = devm_clk_hw_register_divider_table(dev, core->name,
+							    parent_name,
+							    CLK_SET_RATE_PARENT,
+							    addr,
+							    GET_SHIFT(core->conf),
+							    GET_WIDTH(core->conf),
+							    core->flag,
+							    core->dtable,
+							    &pub->rmw_lock);
 	else
-		clk_hw = clk_hw_register_divider(dev, core->name,
-						 parent_name, CLK_SET_RATE_PARENT,
-						 addr,
-						 GET_SHIFT(core->conf),
-						 GET_WIDTH(core->conf),
-						 core->flag, &pub->rmw_lock);
+		clk_hw = devm_clk_hw_register_divider(dev, core->name,
+						      parent_name,
+						      CLK_SET_RATE_PARENT,
+						      addr,
+						      GET_SHIFT(core->conf),
+						      GET_WIDTH(core->conf),
+						      core->flag, &pub->rmw_lock);
 
 	if (IS_ERR(clk_hw))
 		return ERR_CAST(clk_hw);
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 6.12.y-cip 04/17] clk: renesas: cpg-mssr: Add module reset support for RZ/T2H
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
                   ` (2 preceding siblings ...)
  2025-12-29 22:38 ` [PATCH 6.12.y-cip 03/17] clk: renesas: r9a09g077: Use devm_ helpers for divider clock registration Lad Prabhakar
@ 2025-12-29 22:38 ` Lad Prabhakar
  2026-01-05 11:39   ` Pavel Machek
  2025-12-29 22:38 ` [PATCH 6.12.y-cip 05/17] clk: renesas: r9a09g077: Add RIIC module clocks Lad Prabhakar
                   ` (14 subsequent siblings)
  18 siblings, 1 reply; 24+ messages in thread
From: Lad Prabhakar @ 2025-12-29 22:38 UTC (permalink / raw)
  To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek; +Cc: Biju Das

commit 3b37979dcbef0dc3fc1aaba75b21ff9a21799055 upstream.

Add support for module reset handling on the RZ/T2H SoC. Unlike earlier
CPG/MSSR variants, RZ/T2H uses a unified set of Module Reset Control
Registers (MRCR) where both reset and deassert actions are done via
read-modify-write (RMW) to the same register.

Introduce a new MRCR offset table (mrcr_for_rzt2h) for RZ/T2H and assign
it to reset_regs. For this SoC, the number of resets is based on the
number of MRCR registers rather than the number of module clocks. Also
add cpg_mrcr_reset_ops to implement reset, assert, and deassert using RMW
while holding the spinlock. This follows the RZ/T2H requirements, where
processing after releasing a module reset must be secured by performing
seven dummy reads of the same register, and where a module that is reset
and released again must ensure the target bit in the Module Reset Control
Register is set to 1.

Update the reset controller registration to select cpg_mrcr_reset_ops for
RZ/T2H, while keeping the existing cpg_mssr_reset_ops for other SoCs.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Philipp Zabel <p.zabel@pengutronix.de>
Link: https://patch.msgid.link/20250929112324.3622148-1-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/clk/renesas/renesas-cpg-mssr.c | 110 ++++++++++++++++++++++++-
 1 file changed, 106 insertions(+), 4 deletions(-)

diff --git a/drivers/clk/renesas/renesas-cpg-mssr.c b/drivers/clk/renesas/renesas-cpg-mssr.c
index 9ea544d00634b..4d2d945b3f5e2 100644
--- a/drivers/clk/renesas/renesas-cpg-mssr.c
+++ b/drivers/clk/renesas/renesas-cpg-mssr.c
@@ -40,6 +40,7 @@
 #define WARN_DEBUG(x)	do { } while (0)
 #endif
 
+#define RZT2H_RESET_REG_READ_COUNT	7
 
 /*
  * Module Standby and Software Reset register offets.
@@ -138,6 +139,22 @@ static const u16 srcr_for_gen4[] = {
 	0x2C60, 0x2C64, 0x2C68, 0x2C6C, 0x2C70, 0x2C74,
 };
 
+static const u16 mrcr_for_rzt2h[] = {
+	0x240,	/* MRCTLA */
+	0x244,	/* Reserved */
+	0x248,	/* Reserved */
+	0x24C,	/* Reserved */
+	0x250,	/* MRCTLE */
+	0x254,	/* Reserved */
+	0x258,	/* Reserved */
+	0x25C,	/* Reserved */
+	0x260,	/* MRCTLI */
+	0x264,	/* Reserved */
+	0x268,	/* Reserved */
+	0x26C,	/* Reserved */
+	0x270,	/* MRCTLM */
+};
+
 /*
  * Software Reset Clearing Register offsets
  */
@@ -742,6 +759,72 @@ static int cpg_mssr_status(struct reset_controller_dev *rcdev,
 	return !!(readl(priv->pub.base0 + priv->reset_regs[reg]) & bitmask);
 }
 
+static int cpg_mrcr_set_reset_state(struct reset_controller_dev *rcdev,
+				    unsigned long id, bool set)
+{
+	struct cpg_mssr_priv *priv = rcdev_to_priv(rcdev);
+	unsigned int reg = id / 32;
+	unsigned int bit = id % 32;
+	u32 bitmask = BIT(bit);
+	void __iomem *reg_addr;
+	unsigned long flags;
+	unsigned int i;
+	u32 val;
+
+	dev_dbg(priv->dev, "%s %u%02u\n", set ? "assert" : "deassert", reg, bit);
+
+	spin_lock_irqsave(&priv->pub.rmw_lock, flags);
+
+	reg_addr = priv->pub.base0 + priv->reset_regs[reg];
+	/* Read current value and modify */
+	val = readl(reg_addr);
+	if (set)
+		val |= bitmask;
+	else
+		val &= ~bitmask;
+	writel(val, reg_addr);
+
+	/*
+	 * For secure processing after release from a module reset, one must
+	 * perform multiple dummy reads of the same register.
+	 */
+	for (i = 0; !set && i < RZT2H_RESET_REG_READ_COUNT; i++)
+		readl(reg_addr);
+
+	/* Verify the operation */
+	val = readl(reg_addr);
+	if (set == !(bitmask & val)) {
+		dev_err(priv->dev, "Reset register %u%02u operation failed\n", reg, bit);
+		spin_unlock_irqrestore(&priv->pub.rmw_lock, flags);
+		return -EIO;
+	}
+
+	spin_unlock_irqrestore(&priv->pub.rmw_lock, flags);
+
+	return 0;
+}
+
+static int cpg_mrcr_reset(struct reset_controller_dev *rcdev, unsigned long id)
+{
+	int ret;
+
+	ret = cpg_mrcr_set_reset_state(rcdev, id, true);
+	if (ret)
+		return ret;
+
+	return cpg_mrcr_set_reset_state(rcdev, id, false);
+}
+
+static int cpg_mrcr_assert(struct reset_controller_dev *rcdev, unsigned long id)
+{
+	return cpg_mrcr_set_reset_state(rcdev, id, true);
+}
+
+static int cpg_mrcr_deassert(struct reset_controller_dev *rcdev, unsigned long id)
+{
+	return cpg_mrcr_set_reset_state(rcdev, id, false);
+}
+
 static const struct reset_control_ops cpg_mssr_reset_ops = {
 	.reset = cpg_mssr_reset,
 	.assert = cpg_mssr_assert,
@@ -749,6 +832,13 @@ static const struct reset_control_ops cpg_mssr_reset_ops = {
 	.status = cpg_mssr_status,
 };
 
+static const struct reset_control_ops cpg_mrcr_reset_ops = {
+	.reset = cpg_mrcr_reset,
+	.assert = cpg_mrcr_assert,
+	.deassert = cpg_mrcr_deassert,
+	.status = cpg_mssr_status,
+};
+
 static int cpg_mssr_reset_xlate(struct reset_controller_dev *rcdev,
 				const struct of_phandle_args *reset_spec)
 {
@@ -766,11 +856,23 @@ static int cpg_mssr_reset_xlate(struct reset_controller_dev *rcdev,
 
 static int cpg_mssr_reset_controller_register(struct cpg_mssr_priv *priv)
 {
-	priv->rcdev.ops = &cpg_mssr_reset_ops;
+	/*
+	 * RZ/T2H (and family) has the Module Reset Control Registers
+	 * which allows control resets of certain modules.
+	 * The number of resets is not equal to the number of module clocks.
+	 */
+	if (priv->reg_layout == CLK_REG_LAYOUT_RZ_T2H) {
+		priv->rcdev.ops = &cpg_mrcr_reset_ops;
+		priv->rcdev.nr_resets = ARRAY_SIZE(mrcr_for_rzt2h) * 32;
+	} else {
+		priv->rcdev.ops = &cpg_mssr_reset_ops;
+		priv->rcdev.nr_resets = priv->num_mod_clks;
+	}
+
 	priv->rcdev.of_node = priv->dev->of_node;
 	priv->rcdev.of_reset_n_cells = 1;
 	priv->rcdev.of_xlate = cpg_mssr_reset_xlate;
-	priv->rcdev.nr_resets = priv->num_mod_clks;
+
 	return devm_reset_controller_register(priv->dev, &priv->rcdev);
 }
 
@@ -1176,6 +1278,7 @@ static int __init cpg_mssr_common_init(struct device *dev,
 		priv->control_regs = stbcr;
 	} else if (priv->reg_layout == CLK_REG_LAYOUT_RZ_T2H) {
 		priv->control_regs = mstpcr_for_rzt2h;
+		priv->reset_regs = mrcr_for_rzt2h;
 	} else if (priv->reg_layout == CLK_REG_LAYOUT_RCAR_GEN4) {
 		priv->status_regs = mstpsr_for_gen4;
 		priv->control_regs = mstpcr_for_gen4;
@@ -1272,8 +1375,7 @@ static int __init cpg_mssr_probe(struct platform_device *pdev)
 		goto reserve_exit;
 
 	/* Reset Controller not supported for Standby Control SoCs */
-	if (priv->reg_layout == CLK_REG_LAYOUT_RZ_A ||
-	    priv->reg_layout == CLK_REG_LAYOUT_RZ_T2H)
+	if (priv->reg_layout == CLK_REG_LAYOUT_RZ_A)
 		goto reserve_exit;
 
 	error = cpg_mssr_reset_controller_register(priv);
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 6.12.y-cip 05/17] clk: renesas: r9a09g077: Add RIIC module clocks
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
                   ` (3 preceding siblings ...)
  2025-12-29 22:38 ` [PATCH 6.12.y-cip 04/17] clk: renesas: cpg-mssr: Add module reset support for RZ/T2H Lad Prabhakar
@ 2025-12-29 22:38 ` Lad Prabhakar
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 06/17] dt-bindings: i2c: renesas,riic: Move ref for i2c-controller.yaml to the end Lad Prabhakar
                   ` (13 subsequent siblings)
  18 siblings, 0 replies; 24+ messages in thread
From: Lad Prabhakar @ 2025-12-29 22:38 UTC (permalink / raw)
  To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek; +Cc: Biju Das

commit 0475a478d0a88c7ec31763697eb01b25957bece3 upstream.

Add RIIC module clocks for: iic0, iic1, and iic2.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/20250625141705.151383-4-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
[PL:manually applied the changes]
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/clk/renesas/r9a09g077-cpg.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/clk/renesas/r9a09g077-cpg.c b/drivers/clk/renesas/r9a09g077-cpg.c
index 04fbc0539241a..5e39f3afc3b7f 100644
--- a/drivers/clk/renesas/r9a09g077-cpg.c
+++ b/drivers/clk/renesas/r9a09g077-cpg.c
@@ -146,6 +146,9 @@ static const struct cpg_core_clk r9a09g077_core_clks[] __initconst = {
 
 static const struct mssr_mod_clk r9a09g077_mod_clks[] __initconst = {
 	DEF_MOD("sci0fck", 8, CLK_SCI0ASYNC),
+	DEF_MOD("iic0", 100, R9A09G077_CLK_PCLKL),
+	DEF_MOD("iic1", 101, R9A09G077_CLK_PCLKL),
+	DEF_MOD("iic2", 601, R9A09G077_CLK_PCLKL),
 };
 
 static struct clk * __init
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 6.12.y-cip 06/17] dt-bindings: i2c: renesas,riic: Move ref for i2c-controller.yaml to the end
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
                   ` (4 preceding siblings ...)
  2025-12-29 22:38 ` [PATCH 6.12.y-cip 05/17] clk: renesas: r9a09g077: Add RIIC module clocks Lad Prabhakar
@ 2025-12-29 22:39 ` Lad Prabhakar
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 07/17] dt-bindings: i2c: renesas,riic: Document RZ/T2H and RZ/N2H support Lad Prabhakar
                   ` (12 subsequent siblings)
  18 siblings, 0 replies; 24+ messages in thread
From: Lad Prabhakar @ 2025-12-29 22:39 UTC (permalink / raw)
  To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek; +Cc: Biju Das

commit be221173ee918dff2adaf0e23b03aeea44902d5e upstream.

In preparation for adding more validation checks, move the `$ref` for
'i2c-controller.yaml' to the end of the file. Also, relocate the
conditional check for 'resets' into the 'allOf' block.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://lore.kernel.org/r/20250625104526.101004-2-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 .../devicetree/bindings/i2c/renesas,riic.yaml | 30 +++++++++----------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/Documentation/devicetree/bindings/i2c/renesas,riic.yaml b/Documentation/devicetree/bindings/i2c/renesas,riic.yaml
index 1b7fed2326423..4038c6d4acfc6 100644
--- a/Documentation/devicetree/bindings/i2c/renesas,riic.yaml
+++ b/Documentation/devicetree/bindings/i2c/renesas,riic.yaml
@@ -10,9 +10,6 @@ maintainers:
   - Chris Brandt <chris.brandt@renesas.com>
   - Wolfram Sang <wsa+renesas@sang-engineering.com>
 
-allOf:
-  - $ref: /schemas/i2c/i2c-controller.yaml#
-
 properties:
   compatible:
     oneOf:
@@ -83,18 +80,21 @@ required:
   - '#address-cells'
   - '#size-cells'
 
-if:
-  properties:
-    compatible:
-      contains:
-        enum:
-          - renesas,riic-r9a07g043
-          - renesas,riic-r9a07g044
-          - renesas,riic-r9a07g054
-          - renesas,riic-r9a09g057
-then:
-  required:
-    - resets
+allOf:
+  - $ref: /schemas/i2c/i2c-controller.yaml#
+
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - renesas,riic-r9a07g043
+              - renesas,riic-r9a07g044
+              - renesas,riic-r9a07g054
+              - renesas,riic-r9a09g057
+    then:
+      required:
+        - resets
 
 unevaluatedProperties: false
 
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 6.12.y-cip 07/17] dt-bindings: i2c: renesas,riic: Document RZ/T2H and RZ/N2H support
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
                   ` (5 preceding siblings ...)
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 06/17] dt-bindings: i2c: renesas,riic: Move ref for i2c-controller.yaml to the end Lad Prabhakar
@ 2025-12-29 22:39 ` Lad Prabhakar
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 08/17] i2c: riic: Make use of devres helper to request deasserted reset line Lad Prabhakar
                   ` (11 subsequent siblings)
  18 siblings, 0 replies; 24+ messages in thread
From: Lad Prabhakar @ 2025-12-29 22:39 UTC (permalink / raw)
  To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek; +Cc: Biju Das

commit 13aa792c10ada4f8870da5ba0fb51e478eb5a45e upstream.

Document support for the I2C Bus Interface (RIIC) found on the Renesas
RZ/T2H (R9A09G077) and RZ/N2H (R9A09G087) SoCs.

The RIIC IP on these parts is similar to that on RZ/V2H(P) but supports
only four interrupts (including a combined error/event), lacks FM+ mode,
and does not require reset. Introduce a new compatible string
`renesas,riic-r9a09g077` for RZ/T2H and use it as a fallback for RZ/N2H.

Unlike earlier SoCs that use eight distinct interrupts, the RZ/T2H uses
only four. Update the binding schema to reflect this interrupt layout
and skip the `resets` property check, as it is not required on these SoCs.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://lore.kernel.org/r/20250625104526.101004-3-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 .../devicetree/bindings/i2c/renesas,riic.yaml | 75 ++++++++++++++-----
 1 file changed, 56 insertions(+), 19 deletions(-)

diff --git a/Documentation/devicetree/bindings/i2c/renesas,riic.yaml b/Documentation/devicetree/bindings/i2c/renesas,riic.yaml
index 4038c6d4acfc6..207cb2eb25c87 100644
--- a/Documentation/devicetree/bindings/i2c/renesas,riic.yaml
+++ b/Documentation/devicetree/bindings/i2c/renesas,riic.yaml
@@ -28,32 +28,50 @@ properties:
               - renesas,riic-r9a09g047   # RZ/G3E
           - const: renesas,riic-r9a09g057   # RZ/V2H(P)
 
-      - const: renesas,riic-r9a09g057   # RZ/V2H(P)
+      - enum:
+          - renesas,riic-r9a09g057   # RZ/V2H(P)
+          - renesas,riic-r9a09g077   # RZ/T2H
+
+      - items:
+          - const: renesas,riic-r9a09g087  # RZ/N2H
+          - const: renesas,riic-r9a09g077  # RZ/T2H
 
   reg:
     maxItems: 1
 
   interrupts:
-    items:
-      - description: Transmit End Interrupt
-      - description: Receive Data Full Interrupt
-      - description: Transmit Data Empty Interrupt
-      - description: Stop Condition Detection Interrupt
-      - description: Start Condition Detection Interrupt
-      - description: NACK Reception Interrupt
-      - description: Arbitration-Lost Interrupt
-      - description: Timeout Interrupt
+    oneOf:
+      - items:
+          - description: Transmit End Interrupt
+          - description: Receive Data Full Interrupt
+          - description: Transmit Data Empty Interrupt
+          - description: Stop Condition Detection Interrupt
+          - description: Start Condition Detection Interrupt
+          - description: NACK Reception Interrupt
+          - description: Arbitration-Lost Interrupt
+          - description: Timeout Interrupt
+      - items:
+          - description: Transfer Error Or Event Generation
+          - description: Receive Data Full Interrupt
+          - description: Transmit Data Empty Interrupt
+          - description: Transmit End Interrupt
 
   interrupt-names:
-    items:
-      - const: tei
-      - const: ri
-      - const: ti
-      - const: spi
-      - const: sti
-      - const: naki
-      - const: ali
-      - const: tmoi
+    oneOf:
+      - items:
+          - const: tei
+          - const: ri
+          - const: ti
+          - const: spi
+          - const: sti
+          - const: naki
+          - const: ali
+          - const: tmoi
+      - items:
+          - const: eei
+          - const: rxi
+          - const: txi
+          - const: tei
 
   clock-frequency:
     description:
@@ -83,6 +101,25 @@ required:
 allOf:
   - $ref: /schemas/i2c/i2c-controller.yaml#
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            const: renesas,riic-r9a09g077
+    then:
+      properties:
+        interrupts:
+          maxItems: 4
+        interrupt-names:
+          maxItems: 4
+        resets: false
+    else:
+      properties:
+        interrupts:
+          minItems: 8
+        interrupt-names:
+          minItems: 8
+
   - if:
       properties:
         compatible:
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 6.12.y-cip 08/17] i2c: riic: Make use of devres helper to request deasserted reset line
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
                   ` (6 preceding siblings ...)
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 07/17] dt-bindings: i2c: renesas,riic: Document RZ/T2H and RZ/N2H support Lad Prabhakar
@ 2025-12-29 22:39 ` Lad Prabhakar
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 09/17] i2c: riic: Implement bus recovery Lad Prabhakar
                   ` (10 subsequent siblings)
  18 siblings, 0 replies; 24+ messages in thread
From: Lad Prabhakar @ 2025-12-29 22:39 UTC (permalink / raw)
  To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek; +Cc: Biju Das

commit 3d9e63c3aba479ec2f669cbc410754a2b1cf38fb upstream.

Simplify the `riic_i2c_probe()` function by using the
`devm_reset_control_get_optional_exclusive_deasserted()` API to request a
deasserted reset line. This eliminates the need to manually deassert the
reset control and the additional cleanup.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Tested-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Reviewed-by: Claudiu Beznea <claudiu.beznea.uj@bp.renesas.com>
Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Andy Shevchenko <andy@kernel.org>
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/i2c/busses/i2c-riic.c | 17 ++---------------
 1 file changed, 2 insertions(+), 15 deletions(-)

diff --git a/drivers/i2c/busses/i2c-riic.c b/drivers/i2c/busses/i2c-riic.c
index 79540179fbd8f..28ca8b9bfa2bb 100644
--- a/drivers/i2c/busses/i2c-riic.c
+++ b/drivers/i2c/busses/i2c-riic.c
@@ -447,11 +447,6 @@ static const struct riic_irq_desc riic_irqs[] = {
 	{ .res_num = 5, .isr = riic_tend_isr, .name = "riic-nack" },
 };
 
-static void riic_reset_control_assert(void *data)
-{
-	reset_control_assert(data);
-}
-
 static int riic_i2c_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
@@ -472,18 +467,10 @@ static int riic_i2c_probe(struct platform_device *pdev)
 		return dev_err_probe(dev, PTR_ERR(riic->clk),
 				     "missing controller clock");
 
-	riic->rstc = devm_reset_control_get_optional_exclusive(dev, NULL);
+	riic->rstc = devm_reset_control_get_optional_exclusive_deasserted(dev, NULL);
 	if (IS_ERR(riic->rstc))
 		return dev_err_probe(dev, PTR_ERR(riic->rstc),
-				     "Error: missing reset ctrl\n");
-
-	ret = reset_control_deassert(riic->rstc);
-	if (ret)
-		return ret;
-
-	ret = devm_add_action_or_reset(dev, riic_reset_control_assert, riic->rstc);
-	if (ret)
-		return ret;
+				     "failed to acquire deasserted reset\n");
 
 	for (i = 0; i < ARRAY_SIZE(riic_irqs); i++) {
 		int irq;
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 6.12.y-cip 09/17] i2c: riic: Implement bus recovery
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
                   ` (7 preceding siblings ...)
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 08/17] i2c: riic: Make use of devres helper to request deasserted reset line Lad Prabhakar
@ 2025-12-29 22:39 ` Lad Prabhakar
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 10/17] i2c: riic: Pass IRQ desc array as part of OF data Lad Prabhakar
                   ` (9 subsequent siblings)
  18 siblings, 0 replies; 24+ messages in thread
From: Lad Prabhakar @ 2025-12-29 22:39 UTC (permalink / raw)
  To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek; +Cc: Biju Das

commit ba9e1b5254783528e10b45b1f0fb40e21f4ff88a upstream.

Implement I2C bus recovery support for the RIIC controller by making use
of software-controlled SCL and SDA line manipulation. The controller allows
forcing SCL and SDA levels through control bits, which enables generation
of manual clock pulses and a stop condition to free a stuck bus.

This implementation wires up the bus recovery mechanism using
i2c_generic_scl_recovery and provides get/set operations for SCL and SDA.

This allows the RIIC driver to recover from bus hang scenarios where SDA
is held low by a slave.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Reviewed-by: Fabrizio Castro <fabrizio.castro.jz@renesas.com>
Link: https://lore.kernel.org/r/20250501204003.141134-1-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/i2c/busses/i2c-riic.c | 53 +++++++++++++++++++++++++++++++++--
 1 file changed, 51 insertions(+), 2 deletions(-)

diff --git a/drivers/i2c/busses/i2c-riic.c b/drivers/i2c/busses/i2c-riic.c
index 28ca8b9bfa2bb..20faf3d1581ba 100644
--- a/drivers/i2c/busses/i2c-riic.c
+++ b/drivers/i2c/busses/i2c-riic.c
@@ -52,6 +52,8 @@
 #define ICCR1_ICE	BIT(7)
 #define ICCR1_IICRST	BIT(6)
 #define ICCR1_SOWP	BIT(4)
+#define ICCR1_SCLO	BIT(3)
+#define ICCR1_SDAO	BIT(2)
 #define ICCR1_SCLI	BIT(1)
 #define ICCR1_SDAI	BIT(0)
 
@@ -151,11 +153,11 @@ static int riic_bus_barrier(struct riic_dev *riic)
 	ret = readb_poll_timeout(riic->base + riic->info->regs[RIIC_ICCR2], val,
 				 !(val & ICCR2_BBSY), 10, riic->adapter.timeout);
 	if (ret)
-		return ret;
+		return i2c_recover_bus(&riic->adapter);
 
 	if ((riic_readb(riic, RIIC_ICCR1) & (ICCR1_SDAI | ICCR1_SCLI)) !=
 	     (ICCR1_SDAI | ICCR1_SCLI))
-		return -EBUSY;
+		return i2c_recover_bus(&riic->adapter);
 
 	return 0;
 }
@@ -439,6 +441,52 @@ static int riic_init_hw(struct riic_dev *riic)
 	return 0;
 }
 
+static int riic_get_scl(struct i2c_adapter *adap)
+{
+	struct riic_dev *riic = i2c_get_adapdata(adap);
+
+	return !!(riic_readb(riic, RIIC_ICCR1) & ICCR1_SCLI);
+}
+
+static int riic_get_sda(struct i2c_adapter *adap)
+{
+	struct riic_dev *riic = i2c_get_adapdata(adap);
+
+	return !!(riic_readb(riic, RIIC_ICCR1) & ICCR1_SDAI);
+}
+
+static void riic_set_scl(struct i2c_adapter *adap, int val)
+{
+	struct riic_dev *riic = i2c_get_adapdata(adap);
+
+	if (val)
+		riic_clear_set_bit(riic, ICCR1_SOWP, ICCR1_SCLO, RIIC_ICCR1);
+	else
+		riic_clear_set_bit(riic, ICCR1_SOWP | ICCR1_SCLO, 0, RIIC_ICCR1);
+
+	riic_clear_set_bit(riic, 0, ICCR1_SOWP, RIIC_ICCR1);
+}
+
+static void riic_set_sda(struct i2c_adapter *adap, int val)
+{
+	struct riic_dev *riic = i2c_get_adapdata(adap);
+
+	if (val)
+		riic_clear_set_bit(riic, ICCR1_SOWP, ICCR1_SDAO, RIIC_ICCR1);
+	else
+		riic_clear_set_bit(riic, ICCR1_SOWP | ICCR1_SDAO, 0, RIIC_ICCR1);
+
+	riic_clear_set_bit(riic, 0, ICCR1_SOWP, RIIC_ICCR1);
+}
+
+static struct i2c_bus_recovery_info riic_bri = {
+	.recover_bus = i2c_generic_scl_recovery,
+	.get_scl = riic_get_scl,
+	.set_scl = riic_set_scl,
+	.get_sda = riic_get_sda,
+	.set_sda = riic_set_sda,
+};
+
 static const struct riic_irq_desc riic_irqs[] = {
 	{ .res_num = 0, .isr = riic_tend_isr, .name = "riic-tend" },
 	{ .res_num = 1, .isr = riic_rdrf_isr, .name = "riic-rdrf" },
@@ -495,6 +543,7 @@ static int riic_i2c_probe(struct platform_device *pdev)
 	adap->algo = &riic_algo;
 	adap->dev.parent = dev;
 	adap->dev.of_node = dev->of_node;
+	adap->bus_recovery_info = &riic_bri;
 
 	init_completion(&riic->msg_done);
 
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 6.12.y-cip 10/17] i2c: riic: Pass IRQ desc array as part of OF data
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
                   ` (8 preceding siblings ...)
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 09/17] i2c: riic: Implement bus recovery Lad Prabhakar
@ 2025-12-29 22:39 ` Lad Prabhakar
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 11/17] i2c: riic: Move generic compatible string to end of array Lad Prabhakar
                   ` (8 subsequent siblings)
  18 siblings, 0 replies; 24+ messages in thread
From: Lad Prabhakar @ 2025-12-29 22:39 UTC (permalink / raw)
  To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek; +Cc: Biju Das

commit 11db6a53b2375b29fe742948d71b9b341f8944db upstream.

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>
Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com> # on RZ/A1
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Tested-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Andy Shevchenko <andy@kernel.org>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://lore.kernel.org/r/20250625104526.101004-4-prabhakar.mahadev-lad.rj@bp.renesas.com
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 20faf3d1581ba..0215e4a755a7a 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;
 };
 
@@ -520,21 +522,23 @@ static int riic_i2c_probe(struct platform_device *pdev)
 		return dev_err_probe(dev, PTR_ERR(riic->rstc),
 				     "failed to acquire deasserted reset\n");
 
-	for (i = 0; i < ARRAY_SIZE(riic_irqs); i++) {
+	riic->info = of_device_get_match_data(dev);
+
+	for (i = 0; i < riic->info->num_irqs; i++) {
+		const struct riic_irq_desc *irq_desc;
 		int irq;
 
-		irq = platform_get_irq(pdev, riic_irqs[i].res_num);
+		irq_desc = &riic->info->irqs[i];
+		irq = platform_get_irq(pdev, irq_desc->res_num);
 		if (irq < 0)
 			return irq;
 
-		ret = devm_request_irq(dev, irq, riic_irqs[i].isr,
-				       0, riic_irqs[i].name, riic);
+		ret = devm_request_irq(dev, irq, irq_desc->isr, 0, irq_desc->name, riic);
 		if (ret)
 			return dev_err_probe(dev, ret, "failed to request irq %s\n",
-					     riic_irqs[i].name);
+					     irq_desc->name);
 	}
 
-	riic->info = of_device_get_match_data(dev);
 
 	adap = &riic->adapter;
 	i2c_set_adapdata(adap, riic);
@@ -606,11 +610,15 @@ 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,
+	.irqs = riic_irqs,
+	.num_irqs = ARRAY_SIZE(riic_irqs),
 	.fast_mode_plus = true,
 };
 
 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] = {
@@ -630,6 +638,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,
+	.irqs = riic_irqs,
+	.num_irqs = ARRAY_SIZE(riic_irqs),
 	.fast_mode_plus = true,
 };
 
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 6.12.y-cip 11/17] i2c: riic: Move generic compatible string to end of array
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
                   ` (9 preceding siblings ...)
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 10/17] i2c: riic: Pass IRQ desc array as part of OF data Lad Prabhakar
@ 2025-12-29 22:39 ` Lad Prabhakar
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 12/17] i2c: riic: Add support for RZ/T2H SoC Lad Prabhakar
                   ` (7 subsequent siblings)
  18 siblings, 0 replies; 24+ messages in thread
From: Lad Prabhakar @ 2025-12-29 22:39 UTC (permalink / raw)
  To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek; +Cc: Biju Das

commit 832b2f3e3986c8ea8c24a7823ca5189746644bc4 upstream.

Reorder the entry in `riic_i2c_dt_ids` to place the generic compatible
string `renesas,riic-rz` at the end of the array, following the
convention used in other Renesas drivers.

Also, drop the unnecessary comma after the sentinel entry, as it is
not needed.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com> # on RZ/A1
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Andy Shevchenko <andy@kernel.org>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://lore.kernel.org/r/20250625104526.101004-5-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/i2c/busses/i2c-riic.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/i2c/busses/i2c-riic.c b/drivers/i2c/busses/i2c-riic.c
index 0215e4a755a7a..b8745d1d28073 100644
--- a/drivers/i2c/busses/i2c-riic.c
+++ b/drivers/i2c/busses/i2c-riic.c
@@ -693,10 +693,10 @@ static const struct dev_pm_ops riic_i2c_pm_ops = {
 };
 
 static const struct of_device_id riic_i2c_dt_ids[] = {
-	{ .compatible = "renesas,riic-rz", .data = &riic_rz_a_info },
 	{ .compatible = "renesas,riic-r7s72100", .data =  &riic_rz_a1h_info, },
 	{ .compatible = "renesas,riic-r9a09g057", .data = &riic_rz_v2h_info },
-	{ /* Sentinel */ },
+	{ .compatible = "renesas,riic-rz", .data = &riic_rz_a_info },
+	{ /* Sentinel */ }
 };
 
 static struct platform_driver riic_i2c_driver = {
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 6.12.y-cip 12/17] i2c: riic: Add support for RZ/T2H SoC
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
                   ` (10 preceding siblings ...)
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 11/17] i2c: riic: Move generic compatible string to end of array Lad Prabhakar
@ 2025-12-29 22:39 ` Lad Prabhakar
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 13/17] arm64: dts: renesas: r9a09g077: Add I2C controller nodes Lad Prabhakar
                   ` (6 subsequent siblings)
  18 siblings, 0 replies; 24+ messages in thread
From: Lad Prabhakar @ 2025-12-29 22:39 UTC (permalink / raw)
  To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek; +Cc: Biju Das

commit 529a3ff283e7e788dd23d372aaf0820dac5822ae upstream.

Add support for the Renesas RZ/T2H (R9A09G077) SoC, which features a
different interrupt layout for the RIIC controller. Unlike other SoCs
with individual error interrupts, RZ/T2H uses a combined error interrupt
(EEI).

Introduce a new IRQ descriptor table for RZ/T2H, along with a custom
ISR (`riic_eei_isr`) to handle STOP and NACK detection from the shared
interrupt.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Tested-by: Wolfram Sang <wsa+renesas@sang-engineering.com> # on RZ/A1
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Andy Shevchenko <andy@kernel.org>
Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
Link: https://lore.kernel.org/r/20250625104526.101004-6-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 drivers/i2c/busses/i2c-riic.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/drivers/i2c/busses/i2c-riic.c b/drivers/i2c/busses/i2c-riic.c
index b8745d1d28073..c22ccf17723ab 100644
--- a/drivers/i2c/busses/i2c-riic.c
+++ b/drivers/i2c/busses/i2c-riic.c
@@ -79,6 +79,7 @@
 #define ICIER_SPIE	BIT(3)
 
 #define ICSR2_NACKF	BIT(4)
+#define ICSR2_STOP	BIT(3)
 
 #define ICBR_RESERVED	GENMASK(7, 5) /* Should be 1 on writes */
 
@@ -326,6 +327,19 @@ static irqreturn_t riic_stop_isr(int irq, void *data)
 	return IRQ_HANDLED;
 }
 
+static irqreturn_t riic_eei_isr(int irq, void *data)
+{
+	u8 icsr2 = riic_readb(data, RIIC_ICSR2);
+
+	if (icsr2 & ICSR2_NACKF)
+		return riic_tend_isr(irq, data);
+
+	if (icsr2 & ICSR2_STOP)
+		return riic_stop_isr(irq, data);
+
+	return IRQ_NONE;
+}
+
 static u32 riic_func(struct i2c_adapter *adap)
 {
 	return I2C_FUNC_I2C | I2C_FUNC_SMBUS_EMUL;
@@ -497,6 +511,13 @@ static const struct riic_irq_desc riic_irqs[] = {
 	{ .res_num = 5, .isr = riic_tend_isr, .name = "riic-nack" },
 };
 
+static const struct riic_irq_desc riic_rzt2h_irqs[] = {
+	{ .res_num = 0, .isr = riic_eei_isr,  .name = "riic-eei" },
+	{ .res_num = 1, .isr = riic_rdrf_isr, .name = "riic-rxi" },
+	{ .res_num = 2, .isr = riic_tdre_isr, .name = "riic-txi" },
+	{ .res_num = 3, .isr = riic_tend_isr, .name = "riic-tei" },
+};
+
 static int riic_i2c_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
@@ -643,6 +664,12 @@ static const struct riic_of_data riic_rz_v2h_info = {
 	.fast_mode_plus = true,
 };
 
+static const struct riic_of_data riic_rz_t2h_info = {
+	.regs = riic_rz_v2h_regs,
+	.irqs = riic_rzt2h_irqs,
+	.num_irqs = ARRAY_SIZE(riic_rzt2h_irqs),
+};
+
 static int riic_i2c_suspend(struct device *dev)
 {
 	struct riic_dev *riic = dev_get_drvdata(dev);
@@ -695,6 +722,7 @@ static const struct dev_pm_ops riic_i2c_pm_ops = {
 static const struct of_device_id riic_i2c_dt_ids[] = {
 	{ .compatible = "renesas,riic-r7s72100", .data =  &riic_rz_a1h_info, },
 	{ .compatible = "renesas,riic-r9a09g057", .data = &riic_rz_v2h_info },
+	{ .compatible = "renesas,riic-r9a09g077", .data = &riic_rz_t2h_info },
 	{ .compatible = "renesas,riic-rz", .data = &riic_rz_a_info },
 	{ /* Sentinel */ }
 };
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 6.12.y-cip 13/17] arm64: dts: renesas: r9a09g077: Add I2C controller nodes
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
                   ` (11 preceding siblings ...)
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 12/17] i2c: riic: Add support for RZ/T2H SoC Lad Prabhakar
@ 2025-12-29 22:39 ` Lad Prabhakar
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 14/17] arm64: dts: renesas: r9a09g087: " Lad Prabhakar
                   ` (5 subsequent siblings)
  18 siblings, 0 replies; 24+ messages in thread
From: Lad Prabhakar @ 2025-12-29 22:39 UTC (permalink / raw)
  To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek; +Cc: Biju Das

commit 1335a89bbc8ac5b0310db9457018c261816e61cc upstream.

The Renesas RZ/T2H ("R9A09G077") SoC includes three I2C (RIIC) channels.
Add device tree nodes for all three I2C controllers to the RZ/T2H SoC
DTSI.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/20250707153533.287832-2-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 arch/arm64/boot/dts/renesas/r9a09g077.dtsi | 45 ++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/arch/arm64/boot/dts/renesas/r9a09g077.dtsi b/arch/arm64/boot/dts/renesas/r9a09g077.dtsi
index 107b7e6b71641..d034a78c8e01b 100644
--- a/arch/arm64/boot/dts/renesas/r9a09g077.dtsi
+++ b/arch/arm64/boot/dts/renesas/r9a09g077.dtsi
@@ -90,6 +90,51 @@ sci0: serial@80005000 {
 			status = "disabled";
 		};
 
+		i2c0: i2c@80088000 {
+			compatible = "renesas,riic-r9a09g077";
+			reg = <0 0x80088000 0 0x400>;
+			interrupts = <GIC_SPI 614 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 615 IRQ_TYPE_EDGE_RISING>,
+				     <GIC_SPI 616 IRQ_TYPE_EDGE_RISING>,
+				     <GIC_SPI 617 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "eei", "rxi", "txi", "tei";
+			clocks = <&cpg CPG_MOD 100>;
+			power-domains = <&cpg>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		i2c1: i2c@80088400 {
+			compatible = "renesas,riic-r9a09g077";
+			reg = <0 0x80088400 0 0x400>;
+			interrupts = <GIC_SPI 618 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 619 IRQ_TYPE_EDGE_RISING>,
+				     <GIC_SPI 620 IRQ_TYPE_EDGE_RISING>,
+				     <GIC_SPI 621 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "eei", "rxi", "txi", "tei";
+			clocks = <&cpg CPG_MOD 101>;
+			power-domains = <&cpg>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		i2c2: i2c@81008000 {
+			compatible = "renesas,riic-r9a09g077";
+			reg = <0 0x81008000 0 0x400>;
+			interrupts = <GIC_SPI 622 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 623 IRQ_TYPE_EDGE_RISING>,
+				     <GIC_SPI 624 IRQ_TYPE_EDGE_RISING>,
+				     <GIC_SPI 625 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "eei", "rxi", "txi", "tei";
+			clocks = <&cpg CPG_MOD 601>;
+			power-domains = <&cpg>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
 		cpg: clock-controller@80280000 {
 			compatible = "renesas,r9a09g077-cpg-mssr";
 			reg = <0 0x80280000 0 0x1000>,
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 6.12.y-cip 14/17] arm64: dts: renesas: r9a09g087: Add I2C controller nodes
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
                   ` (12 preceding siblings ...)
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 13/17] arm64: dts: renesas: r9a09g077: Add I2C controller nodes Lad Prabhakar
@ 2025-12-29 22:39 ` Lad Prabhakar
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 15/17] arm64: dts: renesas: r9a09g077m44-rzt2h-evk: Enable I2C0 and I2C1 support Lad Prabhakar
                   ` (4 subsequent siblings)
  18 siblings, 0 replies; 24+ messages in thread
From: Lad Prabhakar @ 2025-12-29 22:39 UTC (permalink / raw)
  To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek; +Cc: Biju Das

commit 1977f7d0d180621c11af26e96be29cc4e772dcc4 upstream.

The Renesas RZ/N2H ("R9A09G087") SoC includes three I2C (RIIC) channels.
Add device tree nodes for all three I2C controllers to the RZ/N2H SoC
DTSI.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/20250707153533.287832-3-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 arch/arm64/boot/dts/renesas/r9a09g087.dtsi | 45 ++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/arch/arm64/boot/dts/renesas/r9a09g087.dtsi b/arch/arm64/boot/dts/renesas/r9a09g087.dtsi
index 034add1f91a5a..b222f518267e7 100644
--- a/arch/arm64/boot/dts/renesas/r9a09g087.dtsi
+++ b/arch/arm64/boot/dts/renesas/r9a09g087.dtsi
@@ -90,6 +90,51 @@ sci0: serial@80005000 {
 			status = "disabled";
 		};
 
+		i2c0: i2c@80088000 {
+			compatible = "renesas,riic-r9a09g087", "renesas,riic-r9a09g077";
+			reg = <0 0x80088000 0 0x400>;
+			interrupts = <GIC_SPI 614 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 615 IRQ_TYPE_EDGE_RISING>,
+				     <GIC_SPI 616 IRQ_TYPE_EDGE_RISING>,
+				     <GIC_SPI 617 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "eei", "rxi", "txi", "tei";
+			clocks = <&cpg CPG_MOD 100>;
+			power-domains = <&cpg>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		i2c1: i2c@80088400 {
+			compatible = "renesas,riic-r9a09g087", "renesas,riic-r9a09g077";
+			reg = <0 0x80088400 0 0x400>;
+			interrupts = <GIC_SPI 618 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 619 IRQ_TYPE_EDGE_RISING>,
+				     <GIC_SPI 620 IRQ_TYPE_EDGE_RISING>,
+				     <GIC_SPI 621 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "eei", "rxi", "txi", "tei";
+			clocks = <&cpg CPG_MOD 101>;
+			power-domains = <&cpg>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
+		i2c2: i2c@81008000 {
+			compatible = "renesas,riic-r9a09g087", "renesas,riic-r9a09g077";
+			reg = <0 0x81008000 0 0x400>;
+			interrupts = <GIC_SPI 622 IRQ_TYPE_LEVEL_HIGH>,
+				     <GIC_SPI 623 IRQ_TYPE_EDGE_RISING>,
+				     <GIC_SPI 624 IRQ_TYPE_EDGE_RISING>,
+				     <GIC_SPI 625 IRQ_TYPE_LEVEL_HIGH>;
+			interrupt-names = "eei", "rxi", "txi", "tei";
+			clocks = <&cpg CPG_MOD 601>;
+			power-domains = <&cpg>;
+			#address-cells = <1>;
+			#size-cells = <0>;
+			status = "disabled";
+		};
+
 		cpg: clock-controller@80280000 {
 			compatible = "renesas,r9a09g087-cpg-mssr";
 			reg = <0 0x80280000 0 0x1000>,
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 6.12.y-cip 15/17] arm64: dts: renesas: r9a09g077m44-rzt2h-evk: Enable I2C0 and I2C1 support
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
                   ` (13 preceding siblings ...)
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 14/17] arm64: dts: renesas: r9a09g087: " Lad Prabhakar
@ 2025-12-29 22:39 ` Lad Prabhakar
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 16/17] arm64: dts: renesas: r9a09g087m44-rzt2h-evk: " Lad Prabhakar
                   ` (3 subsequent siblings)
  18 siblings, 0 replies; 24+ messages in thread
From: Lad Prabhakar @ 2025-12-29 22:39 UTC (permalink / raw)
  To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek; +Cc: Biju Das

commit 6f21672c42fc432d69d8fd51e5d8cea145d5be5b upstream.

Enable I2C0 and I2C1 on the RZ/T2H evaluation board.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/20250812200344.3253781-9-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 .../dts/renesas/r9a09g077m44-rzt2h-evk.dts    | 36 +++++++++++++++++++
 .../dts/renesas/rzt2h-n2h-evk-common.dtsi     |  2 ++
 2 files changed, 38 insertions(+)

diff --git a/arch/arm64/boot/dts/renesas/r9a09g077m44-rzt2h-evk.dts b/arch/arm64/boot/dts/renesas/r9a09g077m44-rzt2h-evk.dts
index dd65eb2904058..6aeb5cacead32 100644
--- a/arch/arm64/boot/dts/renesas/r9a09g077m44-rzt2h-evk.dts
+++ b/arch/arm64/boot/dts/renesas/r9a09g077m44-rzt2h-evk.dts
@@ -7,6 +7,8 @@
 
 /dts-v1/;
 
+#include <dt-bindings/pinctrl/renesas,r9a09g077-pinctrl.h>
+
 #include "r9a09g077m44.dtsi"
 #include "rzt2h-n2h-evk-common.dtsi"
 
@@ -89,3 +91,37 @@ led-8 {
 		};
 	};
 };
+
+&i2c0 {
+	pinctrl-0 = <&i2c0_pins>;
+	pinctrl-names = "default";
+	clock-frequency = <400000>;
+	status = "okay";
+};
+
+&i2c1 {
+	pinctrl-0 = <&i2c1_pins>;
+	pinctrl-names = "default";
+	clock-frequency = <400000>;
+	status = "okay";
+};
+
+&pinctrl {
+	/*
+	 * I2C0 Pin Configuration:
+	 * ------------------------
+	 * Signal | Pin     | SW6
+	 * -------|---------|--------------
+	 * SCL    | P23_3   | 7: ON, 8: OFF
+	 * SDA    | P23_4   | 9: ON, 10: OFF
+	 */
+	i2c0_pins: i2c0-pins {
+		pinmux = <RZT2H_PORT_PINMUX(23, 3, 0x17)>,
+			 <RZT2H_PORT_PINMUX(23, 4, 0x17)>;
+	};
+
+	i2c1_pins: i2c1-pins {
+		pinmux = <RZT2H_PORT_PINMUX(5, 0, 0x17)>, /* SDA */
+			 <RZT2H_PORT_PINMUX(4, 7, 0x17)>; /* SCL */
+	};
+};
diff --git a/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi b/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi
index 245b70f1557fe..06300f8066853 100644
--- a/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi
+++ b/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi
@@ -11,6 +11,8 @@
 
 / {
 	aliases {
+		i2c0 = &i2c0;
+		i2c1 = &i2c1;
 		serial0 = &sci0;
 	};
 
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 6.12.y-cip 16/17] arm64: dts: renesas: r9a09g087m44-rzt2h-evk: Enable I2C0 and I2C1 support
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
                   ` (14 preceding siblings ...)
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 15/17] arm64: dts: renesas: r9a09g077m44-rzt2h-evk: Enable I2C0 and I2C1 support Lad Prabhakar
@ 2025-12-29 22:39 ` Lad Prabhakar
  2026-01-05 11:43   ` Pavel Machek
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 17/17] arm64: dts: renesas: rzt2h-n2h-evk-common: Enable EEPROM on I2C0 Lad Prabhakar
                   ` (2 subsequent siblings)
  18 siblings, 1 reply; 24+ messages in thread
From: Lad Prabhakar @ 2025-12-29 22:39 UTC (permalink / raw)
  To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek; +Cc: Biju Das

commit fc14be9667ee06301c3fff578357c8d78749bb13 upstream.

Enable I2C0 and I2C1 on the RZ/N2H evaluation board.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/20250820200659.2048755-6-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 .../dts/renesas/r9a09g087m44-rzn2h-evk.dts    | 56 +++++++++++++++++++
 1 file changed, 56 insertions(+)

diff --git a/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts b/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts
index fb2651c4c3383..a068661fc4429 100644
--- a/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts
+++ b/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts
@@ -10,6 +10,14 @@
 #include "r9a09g087m44.dtsi"
 #include "rzt2h-n2h-evk-common.dtsi"
 
+/*
+ * I2C0 and LED8/9 share the same pins use the below
+ * macro to choose (and set approopriate DIP switches).
+ */
+#define I2C0	1
+#define LED8	(!I2C0)
+#define LED9	(!I2C0)
+
 / {
 	model = "Renesas RZ/N2H EVK Board based on r9a09g087m44";
 	compatible = "renesas,rzn2h-evk", "renesas,r9a09g087m44", "renesas,r9a09g087";
@@ -60,6 +68,7 @@ led-7 {
 			function-enumerator = <8>;
 		};
 
+#if LED8
 		led-8 {
 			/*
 			 * USER_LED0
@@ -70,7 +79,9 @@ led-8 {
 			function = LED_FUNCTION_DEBUG;
 			function-enumerator = <0>;
 		};
+#endif
 
+#if LED9
 		led-9 {
 			/*
 			 * USER_LED1
@@ -81,6 +92,7 @@ led-9 {
 			function = LED_FUNCTION_DEBUG;
 			function-enumerator = <1>;
 		};
+#endif
 
 		led-10 {
 			/*
@@ -105,3 +117,47 @@ led-11 {
 		};
 	};
 };
+
+#if I2C0
+&i2c0 {
+	pinctrl-0 = <&i2c0_pins>;
+	pinctrl-names = "default";
+	clock-frequency = <400000>;
+	status = "okay";
+};
+#endif
+
+&i2c1 {
+	pinctrl-0 = <&i2c1_pins>;
+	pinctrl-names = "default";
+	clock-frequency = <400000>;
+	status = "okay";
+};
+
+&pinctrl {
+	/*
+	 * I2C0 Pin Configuration:
+	 * ------------------------
+	 * Signal | Pin     | DSW15
+	 * -------|---------|--------------
+	 * SCL    | P14_6   | 8: OFF, 9: ON, 10: OFF
+	 * SDA    | P14_7   | 5: ON, 6: OFF
+	 */
+	i2c0_pins: i2c0-pins {
+		pinmux = <RZT2H_PORT_PINMUX(14, 6, 0x17)>,
+			 <RZT2H_PORT_PINMUX(14, 7, 0x17)>;
+	};
+
+	/*
+	 * I2C1 Pin Configuration:
+	 * ------------------------
+	 * Signal | Pin     | DSW7
+	 * -------|---------|--------------
+	 * SCL    | P03_3   | 1: ON, 2: OFF
+	 * SDA    | P03_4   | 3: ON, 4: OFF
+	 */
+	i2c1_pins: i2c1-pins {
+		pinmux = <RZT2H_PORT_PINMUX(3, 3, 0x17)>,
+			 <RZT2H_PORT_PINMUX(3, 4, 0x17)>;
+	};
+};
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* [PATCH 6.12.y-cip 17/17] arm64: dts: renesas: rzt2h-n2h-evk-common: Enable EEPROM on I2C0
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
                   ` (15 preceding siblings ...)
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 16/17] arm64: dts: renesas: r9a09g087m44-rzt2h-evk: " Lad Prabhakar
@ 2025-12-29 22:39 ` Lad Prabhakar
  2026-01-05 11:45 ` [cip-dev] [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Pavel Machek
  2026-01-06 18:06 ` Pavel Machek
  18 siblings, 0 replies; 24+ messages in thread
From: Lad Prabhakar @ 2025-12-29 22:39 UTC (permalink / raw)
  To: cip-dev, Nobuhiro Iwamatsu, Pavel Machek; +Cc: Biju Das

commit 0176c9e82e1080952828b3badcdccf51206a8189 upstream.

Enable support for the R1EX24016 EEPROM connected to I2C0 on the
Renesas RZ/T2H and RZ/N2H Evaluation Kits.

Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://lore.kernel.org/20250820200659.2048755-7-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
---
 arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi b/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi
index 06300f8066853..1b7e16ffe6b69 100644
--- a/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi
+++ b/arch/arm64/boot/dts/renesas/rzt2h-n2h-evk-common.dtsi
@@ -25,6 +25,14 @@ &extal_clk {
 	clock-frequency = <25000000>;
 };
 
+&i2c0 {
+	eeprom: eeprom@50 {
+		compatible = "renesas,r1ex24016", "atmel,24c16";
+		reg = <0x50>;
+		pagesize = <16>;
+	};
+};
+
 &pinctrl {
 	/*
 	 * SCI0 Pin Configuration:
-- 
2.43.0



^ permalink raw reply related	[flat|nested] 24+ messages in thread

* Re: [PATCH 6.12.y-cip 04/17] clk: renesas: cpg-mssr: Add module reset support for RZ/T2H
  2025-12-29 22:38 ` [PATCH 6.12.y-cip 04/17] clk: renesas: cpg-mssr: Add module reset support for RZ/T2H Lad Prabhakar
@ 2026-01-05 11:39   ` Pavel Machek
  2026-01-05 14:10     ` Prabhakar Mahadev Lad
  0 siblings, 1 reply; 24+ messages in thread
From: Pavel Machek @ 2026-01-05 11:39 UTC (permalink / raw)
  To: Lad Prabhakar; +Cc: cip-dev, Nobuhiro Iwamatsu, Biju Das

[-- Attachment #1: Type: text/plain, Size: 1530 bytes --]

Hi!

There's a cleanup possible, see below.

> commit 3b37979dcbef0dc3fc1aaba75b21ff9a21799055 upstream.
> 
> Add support for module reset handling on the RZ/T2H SoC. Unlike earlier
> CPG/MSSR variants, RZ/T2H uses a unified set of Module Reset Control
> Registers (MRCR) where both reset and deassert actions are done via
> read-modify-write (RMW) to the same register.

> diff --git a/drivers/clk/renesas/renesas-cpg-mssr.c b/drivers/clk/renesas/renesas-cpg-mssr.c
> index 9ea544d00634b..4d2d945b3f5e2 100644
> --- a/drivers/clk/renesas/renesas-cpg-mssr.c
> +++ b/drivers/clk/renesas/renesas-cpg-mssr.c
> +	/*
> +	 * For secure processing after release from a module reset, one must
> +	 * perform multiple dummy reads of the same register.
> +	 */
> +	for (i = 0; !set && i < RZT2H_RESET_REG_READ_COUNT; i++)
> +		readl(reg_addr);
> +
> +	/* Verify the operation */
> +	val = readl(reg_addr);
> +	if (set == !(bitmask & val)) {
> +		dev_err(priv->dev, "Reset register %u%02u operation failed\n", reg, bit);
> +		spin_unlock_irqrestore(&priv->pub.rmw_lock, flags);
> +		return -EIO;
> +	}
> +
> +	spin_unlock_irqrestore(&priv->pub.rmw_lock, flags);

"(set == !(bitmask & val))" is only using local variables, so does not
need spinlock protection AFAICT.

And dev_err really should not be run under spinlock.

So I believe spin_unlock...() can be simply moved before the if() for
tiny bit faster and cleaner code.

Thanks and best regards,
								Pavel
-- 
In cooperation with Nabla.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [PATCH 6.12.y-cip 16/17] arm64: dts: renesas: r9a09g087m44-rzt2h-evk: Enable I2C0 and I2C1 support
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 16/17] arm64: dts: renesas: r9a09g087m44-rzt2h-evk: " Lad Prabhakar
@ 2026-01-05 11:43   ` Pavel Machek
  2026-01-05 14:12     ` Prabhakar Mahadev Lad
  0 siblings, 1 reply; 24+ messages in thread
From: Pavel Machek @ 2026-01-05 11:43 UTC (permalink / raw)
  To: Lad Prabhakar; +Cc: cip-dev, Nobuhiro Iwamatsu, Biju Das

[-- Attachment #1: Type: text/plain, Size: 1286 bytes --]

Hi!

> commit fc14be9667ee06301c3fff578357c8d78749bb13 upstream.
> 
> Enable I2C0 and I2C1 on the RZ/N2H evaluation board.
> 
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
> Link: https://lore.kernel.org/20250820200659.2048755-6-prabhakar.mahadev-lad.rj@bp.renesas.com
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> ---
>  .../dts/renesas/r9a09g087m44-rzn2h-evk.dts    | 56 +++++++++++++++++++
>  1 file changed, 56 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts b/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts
> index fb2651c4c3383..a068661fc4429 100644
> --- a/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts
> +++ b/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts
> @@ -10,6 +10,14 @@
>  #include "r9a09g087m44.dtsi"
>  #include "rzt2h-n2h-evk-common.dtsi"
>  
> +/*
> + * I2C0 and LED8/9 share the same pins use the below
> + * macro to choose (and set approopriate DIP switches).
> + */

I believe this should be "pins; use" to be correct english.

Best regards,
							Pavel
-- 
In cooperation with Nabla.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [cip-dev] [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
                   ` (16 preceding siblings ...)
  2025-12-29 22:39 ` [PATCH 6.12.y-cip 17/17] arm64: dts: renesas: rzt2h-n2h-evk-common: Enable EEPROM on I2C0 Lad Prabhakar
@ 2026-01-05 11:45 ` Pavel Machek
  2026-01-06 18:06 ` Pavel Machek
  18 siblings, 0 replies; 24+ messages in thread
From: Pavel Machek @ 2026-01-05 11:45 UTC (permalink / raw)
  To: prabhakar.mahadev-lad.rj; +Cc: cip-dev, Nobuhiro Iwamatsu, Biju Das

[-- Attachment #1: Type: text/plain, Size: 591 bytes --]

Hi!

> This patch series aims to add I2C support to Renesas RZ/T2H and RZ/N2H
> SoCs and enable the I2C support on the EVKs. Note, all the patches have
> been cherry picked from upstream kernel.

I had some nit picks here, but those should be fixed in mainline,
first, so they should not block the merge.

This looks okay to me.

Reviewed-by: Pavel Machek <pavel@nabladev.com>

I can apply the series if it passes testing and there are no other
comments.

Best regards,
                                                                Pavel
-- 
In cooperation with Nabla.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

* RE: [PATCH 6.12.y-cip 04/17] clk: renesas: cpg-mssr: Add module reset support for RZ/T2H
  2026-01-05 11:39   ` Pavel Machek
@ 2026-01-05 14:10     ` Prabhakar Mahadev Lad
  0 siblings, 0 replies; 24+ messages in thread
From: Prabhakar Mahadev Lad @ 2026-01-05 14:10 UTC (permalink / raw)
  To: Pavel Machek; +Cc: cip-dev@lists.cip-project.org, Nobuhiro Iwamatsu, Biju Das

Hi Pavel,

Thank you for the review.

> Subject: Re: [PATCH 6.12.y-cip 04/17] clk: renesas: cpg-mssr: Add module
> reset support for RZ/T2H
> 
> Hi!
> 
> There's a cleanup possible, see below.
> 
> > commit 3b37979dcbef0dc3fc1aaba75b21ff9a21799055 upstream.
> >
> > Add support for module reset handling on the RZ/T2H SoC. Unlike
> > earlier CPG/MSSR variants, RZ/T2H uses a unified set of Module Reset
> > Control Registers (MRCR) where both reset and deassert actions are
> > done via read-modify-write (RMW) to the same register.
> 
> > diff --git a/drivers/clk/renesas/renesas-cpg-mssr.c
> > b/drivers/clk/renesas/renesas-cpg-mssr.c
> > index 9ea544d00634b..4d2d945b3f5e2 100644
> > --- a/drivers/clk/renesas/renesas-cpg-mssr.c
> > +++ b/drivers/clk/renesas/renesas-cpg-mssr.c
> > +	/*
> > +	 * For secure processing after release from a module reset, one must
> > +	 * perform multiple dummy reads of the same register.
> > +	 */
> > +	for (i = 0; !set && i < RZT2H_RESET_REG_READ_COUNT; i++)
> > +		readl(reg_addr);
> > +
> > +	/* Verify the operation */
> > +	val = readl(reg_addr);
> > +	if (set == !(bitmask & val)) {
> > +		dev_err(priv->dev, "Reset register %u%02u operation failed\n",
> reg, bit);
> > +		spin_unlock_irqrestore(&priv->pub.rmw_lock, flags);
> > +		return -EIO;
> > +	}
> > +
> > +	spin_unlock_irqrestore(&priv->pub.rmw_lock, flags);
> 
> "(set == !(bitmask & val))" is only using local variables, so does not
> need spinlock protection AFAICT.
> 
> And dev_err really should not be run under spinlock.
> 
> So I believe spin_unlock...() can be simply moved before the if() for tiny
> bit faster and cleaner code.
> 
Agreed, I've now posted a patch [0] with this improvement.

[0] https://lore.kernel.org/all/20260105140625.2590685-1-prabhakar.mahadev-lad.rj@bp.renesas.com/


Cheers,
Prabhakar



^ permalink raw reply	[flat|nested] 24+ messages in thread

* RE: [PATCH 6.12.y-cip 16/17] arm64: dts: renesas: r9a09g087m44-rzt2h-evk: Enable I2C0 and I2C1 support
  2026-01-05 11:43   ` Pavel Machek
@ 2026-01-05 14:12     ` Prabhakar Mahadev Lad
  0 siblings, 0 replies; 24+ messages in thread
From: Prabhakar Mahadev Lad @ 2026-01-05 14:12 UTC (permalink / raw)
  To: Pavel Machek; +Cc: cip-dev@lists.cip-project.org, Nobuhiro Iwamatsu, Biju Das

Hi Pavel,

Thank you for the review.

> Subject: Re: [PATCH 6.12.y-cip 16/17] arm64: dts: renesas: r9a09g087m44-
> rzt2h-evk: Enable I2C0 and I2C1 support
> 
> Hi!
> 
> > commit fc14be9667ee06301c3fff578357c8d78749bb13 upstream.
> >
> > Enable I2C0 and I2C1 on the RZ/N2H evaluation board.
> >
> > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
> > Link: https://lore.kernel.org/20250820200659.2048755-6-
> prabhakar.mahadev-lad.rj@bp.renesas.com
> > Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> > Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
> > ---
> >  .../dts/renesas/r9a09g087m44-rzn2h-evk.dts    | 56 +++++++++++++++++++
> >  1 file changed, 56 insertions(+)
> >
> > diff --git a/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts
> b/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts
> > index fb2651c4c3383..a068661fc4429 100644
> > --- a/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts
> > +++ b/arch/arm64/boot/dts/renesas/r9a09g087m44-rzn2h-evk.dts
> > @@ -10,6 +10,14 @@
> >  #include "r9a09g087m44.dtsi"
> >  #include "rzt2h-n2h-evk-common.dtsi"
> >
> > +/*
> > + * I2C0 and LED8/9 share the same pins use the below
> > + * macro to choose (and set approopriate DIP switches).
> > + */
> 
> I believe this should be "pins; use" to be correct english.
> 
Ok, I will update it while I touch this file for upstream.

Cheers,
Prabhakar


^ permalink raw reply	[flat|nested] 24+ messages in thread

* Re: [cip-dev] [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs
  2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
                   ` (17 preceding siblings ...)
  2026-01-05 11:45 ` [cip-dev] [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Pavel Machek
@ 2026-01-06 18:06 ` Pavel Machek
  18 siblings, 0 replies; 24+ messages in thread
From: Pavel Machek @ 2026-01-06 18:06 UTC (permalink / raw)
  To: prabhakar.mahadev-lad.rj; +Cc: cip-dev, Nobuhiro Iwamatsu, Biju Das

[-- Attachment #1: Type: text/plain, Size: 303 bytes --]

Hi!

> This patch series aims to add I2C support to Renesas RZ/T2H and RZ/N2H
> SoCs and enable the I2C support on the EVKs. Note, all the patches have
> been cherry picked from upstream kernel.

Thank you. Applied and pushed out.

Best regards,
								Pavel
-- 
In cooperation with Nabla.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2026-01-06 18:06 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-12-29 22:38 [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Lad Prabhakar
2025-12-29 22:38 ` [PATCH 6.12.y-cip 01/17] clk: renesas: r9a09g077: Propagate rate changes to parent clocks Lad Prabhakar
2025-12-29 22:38 ` [PATCH 6.12.y-cip 02/17] clk: renesas: r9a09g077: Remove stray blank line Lad Prabhakar
2025-12-29 22:38 ` [PATCH 6.12.y-cip 03/17] clk: renesas: r9a09g077: Use devm_ helpers for divider clock registration Lad Prabhakar
2025-12-29 22:38 ` [PATCH 6.12.y-cip 04/17] clk: renesas: cpg-mssr: Add module reset support for RZ/T2H Lad Prabhakar
2026-01-05 11:39   ` Pavel Machek
2026-01-05 14:10     ` Prabhakar Mahadev Lad
2025-12-29 22:38 ` [PATCH 6.12.y-cip 05/17] clk: renesas: r9a09g077: Add RIIC module clocks Lad Prabhakar
2025-12-29 22:39 ` [PATCH 6.12.y-cip 06/17] dt-bindings: i2c: renesas,riic: Move ref for i2c-controller.yaml to the end Lad Prabhakar
2025-12-29 22:39 ` [PATCH 6.12.y-cip 07/17] dt-bindings: i2c: renesas,riic: Document RZ/T2H and RZ/N2H support Lad Prabhakar
2025-12-29 22:39 ` [PATCH 6.12.y-cip 08/17] i2c: riic: Make use of devres helper to request deasserted reset line Lad Prabhakar
2025-12-29 22:39 ` [PATCH 6.12.y-cip 09/17] i2c: riic: Implement bus recovery Lad Prabhakar
2025-12-29 22:39 ` [PATCH 6.12.y-cip 10/17] i2c: riic: Pass IRQ desc array as part of OF data Lad Prabhakar
2025-12-29 22:39 ` [PATCH 6.12.y-cip 11/17] i2c: riic: Move generic compatible string to end of array Lad Prabhakar
2025-12-29 22:39 ` [PATCH 6.12.y-cip 12/17] i2c: riic: Add support for RZ/T2H SoC Lad Prabhakar
2025-12-29 22:39 ` [PATCH 6.12.y-cip 13/17] arm64: dts: renesas: r9a09g077: Add I2C controller nodes Lad Prabhakar
2025-12-29 22:39 ` [PATCH 6.12.y-cip 14/17] arm64: dts: renesas: r9a09g087: " Lad Prabhakar
2025-12-29 22:39 ` [PATCH 6.12.y-cip 15/17] arm64: dts: renesas: r9a09g077m44-rzt2h-evk: Enable I2C0 and I2C1 support Lad Prabhakar
2025-12-29 22:39 ` [PATCH 6.12.y-cip 16/17] arm64: dts: renesas: r9a09g087m44-rzt2h-evk: " Lad Prabhakar
2026-01-05 11:43   ` Pavel Machek
2026-01-05 14:12     ` Prabhakar Mahadev Lad
2025-12-29 22:39 ` [PATCH 6.12.y-cip 17/17] arm64: dts: renesas: rzt2h-n2h-evk-common: Enable EEPROM on I2C0 Lad Prabhakar
2026-01-05 11:45 ` [cip-dev] [PATCH 6.12.y-cip 00/17] Add I2C support to RZ/T2H and RZ/N2H SoCs Pavel Machek
2026-01-06 18:06 ` Pavel Machek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox