mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 0/3] i3c: renesas: Add support for the analog noise filter
@ 2026-10-20  9:36 Diogo Ivo
  2026-10-20  9:36 ` [PATCH 1/3] dt-bindings: i3c: renesas,i3c: Document analog noise filter control Diogo Ivo
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Diogo Ivo @ 2026-10-20  9:36 UTC (permalink / raw)
  To: Wolfram Sang, Tommaso Merciai, Alexandre Belloni, Frank Li,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Geert Uytterhoeven, Magnus Damm
  Cc: linux-i3c, devicetree, linux-kernel, linux-renesas-soc, Diogo Ivo

Hi,

this series adds support for the analog noise filter on the input
terminals (I3C_SDA, I3C_SCL) of the Renesas I3C controller, present on
the RZ/G3L (R9A08G046) SoC. The filter is controlled through bit 0 of
the SYS_I3C_CFG register of the system controller (SYSC): when set,
the input signals bypass the analog filter and no noise reduction is
performed.

The filter is configured through the renesas,analog-noise-filter
phandle-array property, which references the system controller
together with the offset of the SYS_I3C_CFG register and the state of
the filter: 1 enables the filter, 0 bypasses it. The property is
optional: boards not providing it keep the filter at its reset value,
so the existing device trees remain valid.

The series first documents the new property in the bindings, then
adds driver support, and finally enables the filter on the RZ/G3L
device tree.

It is based on top of the series adding RZ/G3L I3C support [1] and
should be applied after it.

Signed-off-by: Diogo Ivo <diogo.ivo.sx@renesas.com>

[1]: https://lore.kernel.org/linux-i3c/20261020-divo-ssgrlpcsrc-2966-i3c-v1-0-30a47f25e515@renesas.com/

---
Diogo Ivo (3):
      dt-bindings: i3c: renesas,i3c: Document analog noise filter control
      i3c: renesas: Add support for the analog noise filter
      arm64: dts: renesas: r9a08g046: Enable I3C analog noise filter

 .../devicetree/bindings/i3c/renesas,i3c.yaml       | 19 +++++++++++++++
 arch/arm64/boot/dts/renesas/r9a08g046.dtsi         |  1 +
 drivers/i3c/master/renesas-i3c.c                   | 28 ++++++++++++++++++++++
 3 files changed, 48 insertions(+)
---
base-commit: 8e9b15cbfa80490979fb075d7e46faa84bbb7f53
change-id: 20261020-divo-ssgrlpcsrc-2966-i3c-anf-fd3446c91f4e

Best regards,
--  
Diogo Ivo <diogo.ivo.sx@renesas.com>


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

* [PATCH 1/3] dt-bindings: i3c: renesas,i3c: Document analog noise filter control
  2026-10-20  9:36 [PATCH 0/3] i3c: renesas: Add support for the analog noise filter Diogo Ivo
@ 2026-10-20  9:36 ` Diogo Ivo
  2026-10-20 19:18   ` Frank Li
  2026-10-20  9:36 ` [PATCH 2/3] i3c: renesas: Add support for the analog noise filter Diogo Ivo
  2026-10-20  9:36 ` [PATCH 3/3] arm64: dts: renesas: r9a08g046: Enable I3C " Diogo Ivo
  2 siblings, 1 reply; 9+ messages in thread
From: Diogo Ivo @ 2026-10-20  9:36 UTC (permalink / raw)
  To: Wolfram Sang, Tommaso Merciai, Alexandre Belloni, Frank Li,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Geert Uytterhoeven, Magnus Damm
  Cc: linux-i3c, devicetree, linux-kernel, linux-renesas-soc, Diogo Ivo

The analog noise filter for the input terminals (I3C_SDA, I3C_SCL) of
the Renesas I3C controller is controlled through the SYS_I3C_CFG
register of the system controller. Document the
renesas,analog-noise-filter property, which references the system
controller together with the offset of the SYS_I3C_CFG register and
the state of the filter: 1 enables the filter and 0 bypasses it.

The property is optional: device trees not providing it keep the
filter at its reset value.

Signed-off-by: Diogo Ivo <diogo.ivo.sx@renesas.com>
---
 .../devicetree/bindings/i3c/renesas,i3c.yaml          | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml b/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
index 08fcea89a015..381807844351 100644
--- a/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
+++ b/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
@@ -96,6 +96,25 @@ properties:
       - const: presetn
       - const: tresetn
 
+  renesas,analog-noise-filter:
+    $ref: /schemas/types.yaml#/definitions/phandle-array
+    description:
+      Analog noise filter for the I3C input signals (I3C_SDA, I3C_SCL),
+      controlled through the SYS_I3C_CFG register of the system
+      controller (SYSC). Three entries specifying the system controller,
+      the offset of the SYS_I3C_CFG register and the state of the filter.
+      If not present, the filter keeps its reset state.
+    items:
+      - items:
+          - description: phandle to the system controller node
+          - description: offset of the SYS_I3C_CFG register within the SYSC
+          - enum: [0, 1]
+            description: |
+              state of the analog noise filter:
+               - 1: enable the filter, performing noise reduction on the
+                 I3C_SDA and I3C_SCL input signals
+               - 0: bypass the filter
+
 required:
   - compatible
   - reg

-- 
2.56.0


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

* [PATCH 2/3] i3c: renesas: Add support for the analog noise filter
  2026-10-20  9:36 [PATCH 0/3] i3c: renesas: Add support for the analog noise filter Diogo Ivo
  2026-10-20  9:36 ` [PATCH 1/3] dt-bindings: i3c: renesas,i3c: Document analog noise filter control Diogo Ivo
@ 2026-10-20  9:36 ` Diogo Ivo
  2026-10-20  9:36 ` [PATCH 3/3] arm64: dts: renesas: r9a08g046: Enable I3C " Diogo Ivo
  2 siblings, 0 replies; 9+ messages in thread
From: Diogo Ivo @ 2026-10-20  9:36 UTC (permalink / raw)
  To: Wolfram Sang, Tommaso Merciai, Alexandre Belloni, Frank Li,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Geert Uytterhoeven, Magnus Damm
  Cc: linux-i3c, devicetree, linux-kernel, linux-renesas-soc, Diogo Ivo

The input terminals (I3C_SDA, I3C_SCL) of the Renesas I3C controller
have an analog filter for noise removal, controlled through a bypass
bit on the SYS_I3C_CFG register of the system controller (SYSC).

Add support for configuring the filter through the
renesas,analog-noise-filter Device Tree property, which references
the system controller together with the offset of the SYS_I3C_CFG
register and the state of the filter. Boards not providing the
property keep the reset value of the filter.

Signed-off-by: Diogo Ivo <diogo.ivo.sx@renesas.com>
---
 drivers/i3c/master/renesas-i3c.c | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/drivers/i3c/master/renesas-i3c.c b/drivers/i3c/master/renesas-i3c.c
index 80a6df1151bf..80d360aa87ba 100644
--- a/drivers/i3c/master/renesas-i3c.c
+++ b/drivers/i3c/master/renesas-i3c.c
@@ -19,10 +19,12 @@
 #include <linux/ioport.h>
 #include <linux/iopoll.h>
 #include <linux/list.h>
+#include <linux/mfd/syscon.h>
 #include <linux/module.h>
 #include <linux/of.h>
 #include <linux/platform_device.h>
 #include <linux/pm_runtime.h>
+#include <linux/regmap.h>
 #include <linux/reset.h>
 #include <linux/slab.h>
 #include "../internals.h"
@@ -200,6 +202,9 @@
 #define RENESAS_I3C_MAX_DEVS	8
 #define I2C_INIT_MSG		-1
 
+/* System controller registers */
+#define SYSC_SYS_I3C_CFG_AF_BYPASS	BIT(0)
+
 enum i3c_internal_state {
 	I3C_INTERNAL_STATE_DISABLED,
 	I3C_INTERNAL_STATE_CONTROLLER_IDLE,
@@ -1466,6 +1471,8 @@ static const struct renesas_i3c_irq_desc renesas_i3c_irqs[] = {
 static int renesas_i3c_probe(struct platform_device *pdev)
 {
 	struct renesas_i3c *i3c;
+	struct regmap *sysc;
+	unsigned int anf[2];
 	int ret, i;
 
 	i3c = devm_kzalloc(&pdev->dev, sizeof(*i3c), GFP_KERNEL);
@@ -1497,6 +1504,27 @@ static int renesas_i3c_probe(struct platform_device *pdev)
 		return dev_err_probe(&pdev->dev, PTR_ERR(i3c->presetn),
 				     "Error: missing presetn ctrl\n");
 
+	sysc = syscon_regmap_lookup_by_phandle_args(pdev->dev.of_node,
+						    "renesas,analog-noise-filter",
+						    ARRAY_SIZE(anf), anf);
+	if (IS_ERR(sysc) && PTR_ERR(sysc) != -ENOENT)
+		return dev_err_probe(&pdev->dev, PTR_ERR(sysc),
+				     "Failed to lookup analog noise filter\n");
+
+	if (!IS_ERR(sysc)) {
+		/*
+		 * The analog noise filter of the input terminals is bypassed
+		 * when SYSC_SYS_I3C_CFG_AF_BYPASS is set and used when the
+		 * bit is clear.
+		 */
+		u32 bypass = anf[1] ? 0 : SYSC_SYS_I3C_CFG_AF_BYPASS;
+
+		ret = regmap_update_bits(sysc, anf[0],
+					 SYSC_SYS_I3C_CFG_AF_BYPASS, bypass);
+		if (ret)
+			return ret;
+	}
+
 	spin_lock_init(&i3c->xferqueue.lock);
 	INIT_LIST_HEAD(&i3c->xferqueue.list);
 

-- 
2.56.0


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

* [PATCH 3/3] arm64: dts: renesas: r9a08g046: Enable I3C analog noise filter
  2026-10-20  9:36 [PATCH 0/3] i3c: renesas: Add support for the analog noise filter Diogo Ivo
  2026-10-20  9:36 ` [PATCH 1/3] dt-bindings: i3c: renesas,i3c: Document analog noise filter control Diogo Ivo
  2026-10-20  9:36 ` [PATCH 2/3] i3c: renesas: Add support for the analog noise filter Diogo Ivo
@ 2026-10-20  9:36 ` Diogo Ivo
  2 siblings, 0 replies; 9+ messages in thread
From: Diogo Ivo @ 2026-10-20  9:36 UTC (permalink / raw)
  To: Wolfram Sang, Tommaso Merciai, Alexandre Belloni, Frank Li,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Geert Uytterhoeven, Magnus Damm
  Cc: linux-i3c, devicetree, linux-kernel, linux-renesas-soc, Diogo Ivo

The input terminals of the I3C controller on the RZ/G3L SoC have an
analog filter for noise removal, controlled through the SYS_I3C_CFG
register of the system controller. Enable the filter through the
renesas,analog-noise-filter property.

Signed-off-by: Diogo Ivo <diogo.ivo.sx@renesas.com>
---
 arch/arm64/boot/dts/renesas/r9a08g046.dtsi | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/arm64/boot/dts/renesas/r9a08g046.dtsi b/arch/arm64/boot/dts/renesas/r9a08g046.dtsi
index 1b0b95b12ef8..1968e18fa587 100644
--- a/arch/arm64/boot/dts/renesas/r9a08g046.dtsi
+++ b/arch/arm64/boot/dts/renesas/r9a08g046.dtsi
@@ -650,6 +650,7 @@ i3c: i3c@100e0000 {
 				 <&cpg R9A08G046_I3C_TRESETN>;
 			reset-names = "presetn", "tresetn";
 			power-domains = <&cpg>;
+			renesas,analog-noise-filter = <&sysc 0x440 1>;
 			#address-cells = <3>;
 			#size-cells = <0>;
 			status = "disabled";

-- 
2.56.0


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

* Re: [PATCH 1/3] dt-bindings: i3c: renesas,i3c: Document analog noise filter control
  2026-10-20  9:36 ` [PATCH 1/3] dt-bindings: i3c: renesas,i3c: Document analog noise filter control Diogo Ivo
@ 2026-10-20 19:18   ` Frank Li
  2026-10-26 16:21     ` Diogo Ivo
  0 siblings, 1 reply; 9+ messages in thread
From: Frank Li @ 2026-10-20 19:18 UTC (permalink / raw)
  To: Diogo Ivo
  Cc: Wolfram Sang, Tommaso Merciai, Alexandre Belloni, Frank Li,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Geert Uytterhoeven, Magnus Damm, linux-i3c, devicetree,
	linux-kernel, linux-renesas-soc

On Tue, Oct 20, 2026 at 10:36:26AM +0100, Diogo Ivo wrote:
> The analog noise filter for the input terminals (I3C_SDA, I3C_SCL) of
> the Renesas I3C controller is controlled through the SYS_I3C_CFG
> register of the system controller. Document the
> renesas,analog-noise-filter property, which references the system
> controller together with the offset of the SYS_I3C_CFG register and
> the state of the filter: 1 enables the filter and 0 bypasses it.
>
> The property is optional: device trees not providing it keep the
> filter at its reset value.
>
> Signed-off-by: Diogo Ivo <diogo.ivo.sx@renesas.com>
> ---
>  .../devicetree/bindings/i3c/renesas,i3c.yaml          | 19 +++++++++++++++++++
>  1 file changed, 19 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml b/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
> index 08fcea89a015..381807844351 100644
> --- a/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
> +++ b/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
> @@ -96,6 +96,25 @@ properties:
>        - const: presetn
>        - const: tresetn
>
> +  renesas,analog-noise-filter:
> +    $ref: /schemas/types.yaml#/definitions/phandle-array

I don't like this syscon property, look like it is one kind pad propterty.
Is it possible model as pinctrl?

Frank

> +    description:
> +      Analog noise filter for the I3C input signals (I3C_SDA, I3C_SCL),
> +      controlled through the SYS_I3C_CFG register of the system
> +      controller (SYSC). Three entries specifying the system controller,
> +      the offset of the SYS_I3C_CFG register and the state of the filter.
> +      If not present, the filter keeps its reset state.
> +    items:
> +      - items:
> +          - description: phandle to the system controller node
> +          - description: offset of the SYS_I3C_CFG register within the SYSC
> +          - enum: [0, 1]
> +            description: |
> +              state of the analog noise filter:
> +               - 1: enable the filter, performing noise reduction on the
> +                 I3C_SDA and I3C_SCL input signals
> +               - 0: bypass the filter
> +
>  required:
>    - compatible
>    - reg
>
> --
> 2.56.0
>

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

* Re: [PATCH 1/3] dt-bindings: i3c: renesas,i3c: Document analog noise filter control
  2026-10-20 19:18   ` Frank Li
@ 2026-10-26 16:21     ` Diogo Ivo
  2026-10-26 20:33       ` Frank Li
  0 siblings, 1 reply; 9+ messages in thread
From: Diogo Ivo @ 2026-10-26 16:21 UTC (permalink / raw)
  To: Frank Li
  Cc: Wolfram Sang, Tommaso Merciai, Alexandre Belloni, Frank Li,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Geert Uytterhoeven, Magnus Damm, linux-i3c, devicetree,
	linux-kernel, linux-renesas-soc, Linus Walleij

Hi Frank,

On 10/20/2026 8:18 PM, Frank Li wrote:
> On Tue, Oct 20, 2026 at 10:36:26AM +0100, Diogo Ivo wrote:
>> The analog noise filter for the input terminals (I3C_SDA, I3C_SCL) of
>> the Renesas I3C controller is controlled through the SYS_I3C_CFG
>> register of the system controller. Document the
>> renesas,analog-noise-filter property, which references the system
>> controller together with the offset of the SYS_I3C_CFG register and
>> the state of the filter: 1 enables the filter and 0 bypasses it.
>>
>> The property is optional: device trees not providing it keep the
>> filter at its reset value.
>>
>> Signed-off-by: Diogo Ivo <diogo.ivo.sx@renesas.com>
>> ---
>>   .../devicetree/bindings/i3c/renesas,i3c.yaml          | 19 +++++++++++++++++++
>>   1 file changed, 19 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml b/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
>> index 08fcea89a015..381807844351 100644
>> --- a/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
>> +++ b/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
>> @@ -96,6 +96,25 @@ properties:
>>         - const: presetn
>>         - const: tresetn
>>
>> +  renesas,analog-noise-filter:
>> +    $ref: /schemas/types.yaml#/definitions/phandle-array
> 
> I don't like this syscon property, look like it is one kind pad propterty.
> Is it possible model as pinctrl?

On the RZ/G3L and RZ/G3S this filter is not controlled on the pin 
controller's address space but in the SYSC address space (hence the
need for the sysc phandle).

There are a few factors weighing against modeling this as pinctrl.

The first is that the physical pads used by I3C are multiplexed between 
it and for example RIIC3, so we are not filtering the pad but the 
internal path of the I3C IP. The pinctrl does indeed have some controls 
for the pad's digital filters, that apply to whatever block is 
multiplexed to the pad.

Besides this, even if it were moved to pinctrl we would still need the 
sysc reference, as the pfc driver would need a way to reference the sysc 
address space.

With this, I think that having a DT property is the best approach. 
However, the form of the property can be changed if you are against this 
particular one. For example, the register offset can be moved to 
platform_data in the I3C driver:

  - renesas,analog-noise-filter = <&sysc 0/1> at the SoC level

or I can also split it into two properties.

What approach would work better here? Me I'm leaning towards having
renesas,analog-digital-filter.

Best regards,
Diogo

> 
> Frank
> 
>> +    description:
>> +      Analog noise filter for the I3C input signals (I3C_SDA, I3C_SCL),
>> +      controlled through the SYS_I3C_CFG register of the system
>> +      controller (SYSC). Three entries specifying the system controller,
>> +      the offset of the SYS_I3C_CFG register and the state of the filter.
>> +      If not present, the filter keeps its reset state.
>> +    items:
>> +      - items:
>> +          - description: phandle to the system controller node
>> +          - description: offset of the SYS_I3C_CFG register within the SYSC
>> +          - enum: [0, 1]
>> +            description: |
>> +              state of the analog noise filter:
>> +               - 1: enable the filter, performing noise reduction on the
>> +                 I3C_SDA and I3C_SCL input signals
>> +               - 0: bypass the filter
>> +
>>   required:
>>     - compatible
>>     - reg
>>
>> --
>> 2.56.0
>>


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

* Re: [PATCH 1/3] dt-bindings: i3c: renesas,i3c: Document analog noise filter control
  2026-10-26 16:21     ` Diogo Ivo
@ 2026-10-26 20:33       ` Frank Li
  2026-10-27 10:34         ` Diogo Ivo
  0 siblings, 1 reply; 9+ messages in thread
From: Frank Li @ 2026-10-26 20:33 UTC (permalink / raw)
  To: Diogo Ivo
  Cc: Wolfram Sang, Tommaso Merciai, Alexandre Belloni, Frank Li,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Geert Uytterhoeven, Magnus Damm, linux-i3c, devicetree,
	linux-kernel, linux-renesas-soc, Linus Walleij

On Mon, Oct 26, 2026 at 04:21:06PM +0000, Diogo Ivo wrote:
> Hi Frank,
>
> On 10/20/2026 8:18 PM, Frank Li wrote:
> > On Tue, Oct 20, 2026 at 10:36:26AM +0100, Diogo Ivo wrote:
> > > The analog noise filter for the input terminals (I3C_SDA, I3C_SCL) of
> > > the Renesas I3C controller is controlled through the SYS_I3C_CFG
> > > register of the system controller. Document the
> > > renesas,analog-noise-filter property, which references the system
> > > controller together with the offset of the SYS_I3C_CFG register and
> > > the state of the filter: 1 enables the filter and 0 bypasses it.
> > >
> > > The property is optional: device trees not providing it keep the
> > > filter at its reset value.
> > >
> > > Signed-off-by: Diogo Ivo <diogo.ivo.sx@renesas.com>
> > > ---
> > >   .../devicetree/bindings/i3c/renesas,i3c.yaml          | 19 +++++++++++++++++++
> > >   1 file changed, 19 insertions(+)
> > >
> > > diff --git a/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml b/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
> > > index 08fcea89a015..381807844351 100644
> > > --- a/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
> > > +++ b/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
> > > @@ -96,6 +96,25 @@ properties:
> > >         - const: presetn
> > >         - const: tresetn
> > >
> > > +  renesas,analog-noise-filter:
> > > +    $ref: /schemas/types.yaml#/definitions/phandle-array
> >
> > I don't like this syscon property, look like it is one kind pad propterty.
> > Is it possible model as pinctrl?
>
> On the RZ/G3L and RZ/G3S this filter is not controlled on the pin
> controller's address space but in the SYSC address space (hence the
> need for the sysc phandle).
>
> There are a few factors weighing against modeling this as pinctrl.
>
> The first is that the physical pads used by I3C are multiplexed between it
> and for example RIIC3, so we are not filtering the pad but the internal path
> of the I3C IP. The pinctrl does indeed have some controls for the pad's
> digital filters, that apply to whatever block is multiplexed to the pad.
>
> Besides this, even if it were moved to pinctrl we would still need the sysc
> reference, as the pfc driver would need a way to reference the sysc address
> space.

System allows multi pinctrl devices. your syscon can work as pinctrl provider

pinctrl-0 = <&your nomral pinctrl>, <&syscon i3c ... > ;

The key problem is if model is resonable. Syscon is simple, but have not
good abstract.

Frank

>
> With this, I think that having a DT property is the best approach. However,
> the form of the property can be changed if you are against this particular
> one. For example, the register offset can be moved to platform_data in the
> I3C driver:
>
>  - renesas,analog-noise-filter = <&sysc 0/1> at the SoC level
>
> or I can also split it into two properties.
>
> What approach would work better here? Me I'm leaning towards having
> renesas,analog-digital-filter.
>
> Best regards,
> Diogo
>
> >
> > Frank
> >
> > > +    description:
> > > +      Analog noise filter for the I3C input signals (I3C_SDA, I3C_SCL),
> > > +      controlled through the SYS_I3C_CFG register of the system
> > > +      controller (SYSC). Three entries specifying the system controller,
> > > +      the offset of the SYS_I3C_CFG register and the state of the filter.
> > > +      If not present, the filter keeps its reset state.
> > > +    items:
> > > +      - items:
> > > +          - description: phandle to the system controller node
> > > +          - description: offset of the SYS_I3C_CFG register within the SYSC
> > > +          - enum: [0, 1]
> > > +            description: |
> > > +              state of the analog noise filter:
> > > +               - 1: enable the filter, performing noise reduction on the
> > > +                 I3C_SDA and I3C_SCL input signals
> > > +               - 0: bypass the filter
> > > +
> > >   required:
> > >     - compatible
> > >     - reg
> > >
> > > --
> > > 2.56.0
> > >
>

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

* Re: [PATCH 1/3] dt-bindings: i3c: renesas,i3c: Document analog noise filter control
  2026-10-26 20:33       ` Frank Li
@ 2026-10-27 10:34         ` Diogo Ivo
  2026-10-27 14:27           ` Frank Li
  0 siblings, 1 reply; 9+ messages in thread
From: Diogo Ivo @ 2026-10-27 10:34 UTC (permalink / raw)
  To: Frank Li
  Cc: Wolfram Sang, Tommaso Merciai, Alexandre Belloni, Frank Li,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Geert Uytterhoeven, Magnus Damm, linux-i3c, devicetree,
	linux-kernel, linux-renesas-soc, Linus Walleij

On 10/26/2026 8:33 PM, Frank Li wrote:
> On Mon, Oct 26, 2026 at 04:21:06PM +0000, Diogo Ivo wrote:
>> Hi Frank,
>>
>> On 10/20/2026 8:18 PM, Frank Li wrote:
>>> On Tue, Oct 20, 2026 at 10:36:26AM +0100, Diogo Ivo wrote:
>>>> The analog noise filter for the input terminals (I3C_SDA, I3C_SCL) of
>>>> the Renesas I3C controller is controlled through the SYS_I3C_CFG
>>>> register of the system controller. Document the
>>>> renesas,analog-noise-filter property, which references the system
>>>> controller together with the offset of the SYS_I3C_CFG register and
>>>> the state of the filter: 1 enables the filter and 0 bypasses it.
>>>>
>>>> The property is optional: device trees not providing it keep the
>>>> filter at its reset value.
>>>>
>>>> Signed-off-by: Diogo Ivo <diogo.ivo.sx@renesas.com>
>>>> ---
>>>>    .../devicetree/bindings/i3c/renesas,i3c.yaml          | 19 +++++++++++++++++++
>>>>    1 file changed, 19 insertions(+)
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml b/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
>>>> index 08fcea89a015..381807844351 100644
>>>> --- a/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
>>>> +++ b/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
>>>> @@ -96,6 +96,25 @@ properties:
>>>>          - const: presetn
>>>>          - const: tresetn
>>>>
>>>> +  renesas,analog-noise-filter:
>>>> +    $ref: /schemas/types.yaml#/definitions/phandle-array
>>>
>>> I don't like this syscon property, look like it is one kind pad propterty.
>>> Is it possible model as pinctrl?
>>
>> On the RZ/G3L and RZ/G3S this filter is not controlled on the pin
>> controller's address space but in the SYSC address space (hence the
>> need for the sysc phandle).
>>
>> There are a few factors weighing against modeling this as pinctrl.
>>
>> The first is that the physical pads used by I3C are multiplexed between it
>> and for example RIIC3, so we are not filtering the pad but the internal path
>> of the I3C IP. The pinctrl does indeed have some controls for the pad's
>> digital filters, that apply to whatever block is multiplexed to the pad.
>>
>> Besides this, even if it were moved to pinctrl we would still need the sysc
>> reference, as the pfc driver would need a way to reference the sysc address
>> space.
> 
> System allows multi pinctrl devices. your syscon can work as pinctrl provider
> 
> pinctrl-0 = <&your nomral pinctrl>, <&syscon i3c ... > ;
> 
> The key problem is if model is resonable. Syscon is simple, but have not
> good abstract.

Doing this in pinctrl is feasible, especially since the pinctrl driver 
on G3L already has a reference to syscon for clone channels. The 
question really is if this is what makes the most sense, as again we are 
not really controlling an external pin but something inside the IP
block, so I'm still not fully convinced. Are there more opinions on this?

Thanks,
Diogo
> Frank
> 
>>
>> With this, I think that having a DT property is the best approach. However,
>> the form of the property can be changed if you are against this particular
>> one. For example, the register offset can be moved to platform_data in the
>> I3C driver:
>>
>>   - renesas,analog-noise-filter = <&sysc 0/1> at the SoC level
>>
>> or I can also split it into two properties.
>>
>> What approach would work better here? Me I'm leaning towards having
>> renesas,analog-digital-filter.
>>
>> Best regards,
>> Diogo
>>
>>>
>>> Frank
>>>
>>>> +    description:
>>>> +      Analog noise filter for the I3C input signals (I3C_SDA, I3C_SCL),
>>>> +      controlled through the SYS_I3C_CFG register of the system
>>>> +      controller (SYSC). Three entries specifying the system controller,
>>>> +      the offset of the SYS_I3C_CFG register and the state of the filter.
>>>> +      If not present, the filter keeps its reset state.
>>>> +    items:
>>>> +      - items:
>>>> +          - description: phandle to the system controller node
>>>> +          - description: offset of the SYS_I3C_CFG register within the SYSC
>>>> +          - enum: [0, 1]
>>>> +            description: |
>>>> +              state of the analog noise filter:
>>>> +               - 1: enable the filter, performing noise reduction on the
>>>> +                 I3C_SDA and I3C_SCL input signals
>>>> +               - 0: bypass the filter
>>>> +
>>>>    required:
>>>>      - compatible
>>>>      - reg
>>>>
>>>> --
>>>> 2.56.0
>>>>
>>


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

* Re: [PATCH 1/3] dt-bindings: i3c: renesas,i3c: Document analog noise filter control
  2026-10-27 10:34         ` Diogo Ivo
@ 2026-10-27 14:27           ` Frank Li
  0 siblings, 0 replies; 9+ messages in thread
From: Frank Li @ 2026-10-27 14:27 UTC (permalink / raw)
  To: Diogo Ivo
  Cc: Wolfram Sang, Tommaso Merciai, Alexandre Belloni, Frank Li,
	Rob Herring, Krzysztof Kozlowski, Conor Dooley,
	Geert Uytterhoeven, Magnus Damm, linux-i3c, devicetree,
	linux-kernel, linux-renesas-soc, Linus Walleij

On Tue, Oct 27, 2026 at 10:34:54AM +0000, Diogo Ivo wrote:
> On 10/26/2026 8:33 PM, Frank Li wrote:
> > On Mon, Oct 26, 2026 at 04:21:06PM +0000, Diogo Ivo wrote:
> > > Hi Frank,
> > >
> > > On 10/20/2026 8:18 PM, Frank Li wrote:
> > > > On Tue, Oct 20, 2026 at 10:36:26AM +0100, Diogo Ivo wrote:
> > > > > The analog noise filter for the input terminals (I3C_SDA, I3C_SCL) of
> > > > > the Renesas I3C controller is controlled through the SYS_I3C_CFG
> > > > > register of the system controller. Document the
> > > > > renesas,analog-noise-filter property, which references the system
> > > > > controller together with the offset of the SYS_I3C_CFG register and
> > > > > the state of the filter: 1 enables the filter and 0 bypasses it.
> > > > >
> > > > > The property is optional: device trees not providing it keep the
> > > > > filter at its reset value.
> > > > >
> > > > > Signed-off-by: Diogo Ivo <diogo.ivo.sx@renesas.com>
> > > > > ---
> > > > >    .../devicetree/bindings/i3c/renesas,i3c.yaml          | 19 +++++++++++++++++++
> > > > >    1 file changed, 19 insertions(+)
> > > > >
> > > > > diff --git a/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml b/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
> > > > > index 08fcea89a015..381807844351 100644
> > > > > --- a/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
> > > > > +++ b/Documentation/devicetree/bindings/i3c/renesas,i3c.yaml
> > > > > @@ -96,6 +96,25 @@ properties:
> > > > >          - const: presetn
> > > > >          - const: tresetn
> > > > >
> > > > > +  renesas,analog-noise-filter:
> > > > > +    $ref: /schemas/types.yaml#/definitions/phandle-array
> > > >
> > > > I don't like this syscon property, look like it is one kind pad propterty.
> > > > Is it possible model as pinctrl?
> > >
> > > On the RZ/G3L and RZ/G3S this filter is not controlled on the pin
> > > controller's address space but in the SYSC address space (hence the
> > > need for the sysc phandle).
> > >
> > > There are a few factors weighing against modeling this as pinctrl.
> > >
> > > The first is that the physical pads used by I3C are multiplexed between it
> > > and for example RIIC3, so we are not filtering the pad but the internal path
> > > of the I3C IP. The pinctrl does indeed have some controls for the pad's
> > > digital filters, that apply to whatever block is multiplexed to the pad.
> > >
> > > Besides this, even if it were moved to pinctrl we would still need the sysc
> > > reference, as the pfc driver would need a way to reference the sysc address
> > > space.
> >
> > System allows multi pinctrl devices. your syscon can work as pinctrl provider
> >
> > pinctrl-0 = <&your nomral pinctrl>, <&syscon i3c ... > ;
> >
> > The key problem is if model is resonable. Syscon is simple, but have not
> > good abstract.
>
> Doing this in pinctrl is feasible, especially since the pinctrl driver on
> G3L already has a reference to syscon for clone channels. The question
> really is if this is what makes the most sense, as again we are not really
> controlling an external pin but something inside the IP
> block,

I don't think so. Generally, PAD some property, like pull up/down, driver
strength, some include glitch filter (capacitor or schmitter trigger),

'renesas,analog-noise-filter' like adjust some capacitor at PAD, only
controler signal (register) is not in your pinctrl region.

There are not analog-noise in side SOC's digtial part (Or we can't care it).
Analog sigal generally existed in PHY and PAD.

Frank

> so I'm still not fully convinced. Are there more opinions on this?

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

end of thread, other threads:[~2026-10-27 14:28 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-20  9:36 [PATCH 0/3] i3c: renesas: Add support for the analog noise filter Diogo Ivo
2026-10-20  9:36 ` [PATCH 1/3] dt-bindings: i3c: renesas,i3c: Document analog noise filter control Diogo Ivo
2026-10-20 19:18   ` Frank Li
2026-10-26 16:21     ` Diogo Ivo
2026-10-26 20:33       ` Frank Li
2026-10-27 10:34         ` Diogo Ivo
2026-10-27 14:27           ` Frank Li
2026-10-20  9:36 ` [PATCH 2/3] i3c: renesas: Add support for the analog noise filter Diogo Ivo
2026-10-20  9:36 ` [PATCH 3/3] arm64: dts: renesas: r9a08g046: Enable I3C " Diogo Ivo

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

all inboxes | Powered by JetHome®