* [PATCH 1/2] dt-bindings: i2c: rcar-i2c: Document R-Car X5H support
2026-07-27 11:34 [PATCH 0/2] i2c: rcar: add Gen5 support Wolfram Sang
@ 2026-07-27 11:34 ` Wolfram Sang
2026-07-27 11:48 ` Wolfram Sang
2026-07-27 11:34 ` [PATCH 2/2] i2c: rcar: add R-Car Gen5 support Wolfram Sang
1 sibling, 1 reply; 4+ messages in thread
From: Wolfram Sang @ 2026-07-27 11:34 UTC (permalink / raw)
To: linux-renesas-soc
Cc: Minh Le, Wolfram Sang, Andi Shyti, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Geert Uytterhoeven,
Magnus Damm, linux-i2c, devicetree
From: Minh Le <minh.le.aj@renesas.com>
Document support for rcar-i2c on R8A78000 (X5H) SoCs.
Signed-off-by: Minh Le <minh.le.aj@renesas.com>
[wsa: fixed white space issues]
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml b/Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml
index 6cc60c3f61cd..46b4bd16c593 100644
--- a/Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml
+++ b/Documentation/devicetree/bindings/i2c/renesas,rcar-i2c.yaml
@@ -56,6 +56,11 @@ properties:
- renesas,i2c-r8a779h0 # R-Car V4M
- const: renesas,rcar-gen4-i2c # R-Car Gen4
+ - items:
+ - enum:
+ - renesas,i2c-r8a78000 # R-Car X5H
+ - const: renesas,rcar-gen5-i2c # R-Car Gen5
+
reg:
maxItems: 1
--
2.47.3
^ permalink raw reply related [flat|nested] 4+ messages in thread* [PATCH 2/2] i2c: rcar: add R-Car Gen5 support
2026-07-27 11:34 [PATCH 0/2] i2c: rcar: add Gen5 support Wolfram Sang
2026-07-27 11:34 ` [PATCH 1/2] dt-bindings: i2c: rcar-i2c: Document R-Car X5H support Wolfram Sang
@ 2026-07-27 11:34 ` Wolfram Sang
1 sibling, 0 replies; 4+ messages in thread
From: Wolfram Sang @ 2026-07-27 11:34 UTC (permalink / raw)
To: linux-renesas-soc
Cc: Wolfram Sang, Andi Shyti, Geert Uytterhoeven, Magnus Damm,
Philipp Zabel, linux-i2c
To support the next generation of R-Car SoCs, we need to skip polling
the reset status. SCMI doesn't support it and the firmware must take
care of this anyhow. Other than that, the driver works fine as-is.
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
drivers/i2c/busses/i2c-rcar.c | 22 +++++++++++++++++-----
1 file changed, 17 insertions(+), 5 deletions(-)
diff --git a/drivers/i2c/busses/i2c-rcar.c b/drivers/i2c/busses/i2c-rcar.c
index 5ce8f8e4856f..46508176712c 100644
--- a/drivers/i2c/busses/i2c-rcar.c
+++ b/drivers/i2c/busses/i2c-rcar.c
@@ -137,6 +137,7 @@ enum rcar_i2c_type {
I2C_RCAR_GEN2,
I2C_RCAR_GEN3,
I2C_RCAR_GEN4,
+ I2C_RCAR_GEN5,
};
struct rcar_i2c_priv {
@@ -900,8 +901,12 @@ static int rcar_i2c_do_reset(struct rcar_i2c_priv *priv)
if (ret)
return ret;
- return read_poll_timeout_atomic(reset_control_status, ret, ret == 0, 1,
- 100, false, priv->rstc);
+ /* SCMI based resets don't need to poll for success */
+ if (priv->devtype < I2C_RCAR_GEN5)
+ return read_poll_timeout_atomic(reset_control_status, ret, ret == 0,
+ 1, 100, false, priv->rstc);
+
+ return 0;
}
static int rcar_i2c_master_xfer(struct i2c_adapter *adap,
@@ -1111,6 +1116,7 @@ static const struct of_device_id rcar_i2c_dt_ids[] = {
{ .compatible = "renesas,rcar-gen2-i2c", .data = (void *)I2C_RCAR_GEN2 },
{ .compatible = "renesas,rcar-gen3-i2c", .data = (void *)I2C_RCAR_GEN3 },
{ .compatible = "renesas,rcar-gen4-i2c", .data = (void *)I2C_RCAR_GEN4 },
+ { .compatible = "renesas,rcar-gen5-i2c", .data = (void *)I2C_RCAR_GEN5 },
{},
};
MODULE_DEVICE_TABLE(of, rcar_i2c_dt_ids);
@@ -1194,9 +1200,15 @@ static int rcar_i2c_probe(struct platform_device *pdev)
goto out_pm_put;
}
- ret = reset_control_status(priv->rstc);
- if (ret < 0)
- goto out_pm_put;
+ /*
+ * Gen5+ uses SCMI based reset which cannot report status.
+ * Firmware has to ensure proper reset
+ */
+ if (priv->devtype < I2C_RCAR_GEN5) {
+ ret = reset_control_status(priv->rstc);
+ if (ret < 0)
+ goto out_pm_put;
+ }
/* hard reset disturbs HostNotify local target, so disable it */
priv->flags &= ~ID_P_HOST_NOTIFY;
--
2.47.3
^ permalink raw reply related [flat|nested] 4+ messages in thread