From: Diogo Ivo <diogo.ivo.sx@renesas.com>
To: Frank Li <Frank.li@oss.nxp.com>
Cc: Wolfram Sang <wsa+renesas@sang-engineering.com>,
Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>,
Alexandre Belloni <alexandre.belloni@bootlin.com>,
Frank Li <Frank.Li@nxp.com>, Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Geert Uytterhoeven <geert+renesas@glider.be>,
Magnus Damm <magnus.damm@gmail.com>,
linux-i3c@lists.infradead.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org,
Linus Walleij <linusw@kernel.org>
Subject: Re: [PATCH 1/3] dt-bindings: i3c: renesas,i3c: Document analog noise filter control
Date: Thu, 29 Oct 2026 09:54:14 +0000 [thread overview]
Message-ID: <db1ad309-c02e-4616-8486-ffa967207d44@renesas.com> (raw)
In-Reply-To: <auIK38HPyv7PmDJF@SMW015318>
Hi Frank,
On 10/28/2026 2:46 PM, Frank Li wrote:
> On Wed, Oct 28, 2026 at 11:10:07AM +0000, Diogo Ivo wrote:
>> On 10/27/2026 2:27 PM, Frank Li wrote:
>>> 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.
>>
>> On the RZ/G3L the analog filter is located after the pinmux, at the input of
>> each I2C/I3C block. Each I2C and I3C block in G3L has a single
>> register bit that controls if the analog filter is enabled for that specific
>> block (so we have SYS_I2C0_CFG, SYS_I2C1_CFG, ..., SYS_I3C_CFG)
>> each with a single bit that controls if the filter is enabled or not.
>>
>> However, for the I2C blocks they can be multiplexed to dozens of pads, and
>> these pads don't each contain an i2c analog filter. Rather, the signal
>> passes first by the external pad and pinmux and then it reaches the intended
>> I2C or I3C IP block, where the analog filter is then located. For example,
>> the P2_0 and P2_1 pads can be multiplexed between I3C and RIIC3, and each of
>> these blocks then has its filter at the input of the IP block, and a single
>> bit in the SYS register controls the filter for SDA and SCL together.
>
> The location in hardware is not important. What's most consider is choose/use
> which software model to descript your hardware.
>
>> Then,
>> there is the problem that if we model this with pinctrl with a pad property
>> then pinconf would not know which block's SYS register to write without
>> coupling to pinmux. In this specific case of P2_0 and P2_1 pads without
>> coupling pinconf and pinmux we could not determine whether we should write
>> to SYS_I3C_CFG or SYS_I2C3_CFG.
>
> coupling pinconf and pinmux is quite common. I remember pinctrl framework
> already consider that.
In the end we got confirmation from the HW team that the SYS_I3C_CFG
register does not actually "exist" and was unintentionally left in the
HW manual, meaning that we cannot control if the filter is ON/OFF so
this whole discussion and patch series becomes moot. The only patch
needed on this topic is removing the SYS_I3C_CFG register definition
from the SYSC driver as per the HW team's recommendation.
Sorry for the noise and thank you for the discussion and your time!
Best regards,
Diogo
>
>>
>> Then there is also the precedent of i2c-analog-filter being a controller
>> node property rather than a pad/pinctrl property.
>>
>> For these reasons I believe that pinctrl is not the best way to model the
>> I2C/I3C analog filters but please do let me know your thoughts.
>
> But syscon is also not good, which basic have not any abstaction.
>
> Frank
>>
>> Geert, DT maintainers, do you have any preferences on what the best way to
>> model this is?
>>
>> Best regards,
>> Diogo
>>
>>
>>> Frank
>>>
>>>> so I'm still not fully convinced. Are there more opinions on this?
>>
next prev parent reply other threads:[~2026-10-29 9:54 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
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-28 11:10 ` Diogo Ivo
2026-10-28 14:46 ` Frank Li
2026-10-29 9:54 ` Diogo Ivo [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=db1ad309-c02e-4616-8486-ffa967207d44@renesas.com \
--to=diogo.ivo.sx@renesas.com \
--cc=Frank.Li@nxp.com \
--cc=Frank.li@oss.nxp.com \
--cc=alexandre.belloni@bootlin.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=geert+renesas@glider.be \
--cc=krzk+dt@kernel.org \
--cc=linusw@kernel.org \
--cc=linux-i3c@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=magnus.damm@gmail.com \
--cc=robh@kernel.org \
--cc=tommaso.merciai.xr@bp.renesas.com \
--cc=wsa+renesas@sang-engineering.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is 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®