From: "Yu-Chun Lin [林祐君]" <eleanor.lin@realtek.com>
To: "Linus Walleij" <linusw@kernel.org>,
"Uwe Kleine-König" <ukleinek@kernel.org>,
"linux-pwm@vger.kernel.org" <linux-pwm@vger.kernel.org>
Cc: "robh@kernel.org" <robh@kernel.org>,
"krzk+dt@kernel.org" <krzk+dt@kernel.org>,
"conor+dt@kernel.org" <conor+dt@kernel.org>,
"brgl@kernel.org" <brgl@kernel.org>,
"James Tai [戴志峰]" <james.tai@realtek.com>,
"CY_Huang[黃鉦晏]" <cy.huang@realtek.com>,
"Stanley Chang[昌育德]" <stanley_chang@realtek.com>,
"TY_Chang[張子逸]" <tychang@realtek.com>
Subject: RE: [PATCH 5/8] dt-bindings: pinctrl: realtek: add RTD1625 pinctrl binding
Date: Wed, 25 Feb 2026 09:30:25 +0000 [thread overview]
Message-ID: <d5be357c14b84155adfa8a9f00a64d83@realtek.com> (raw)
In-Reply-To: <CAD++jL=445wx467ZKE3-qm_BaVzKYXE-7zmReTFZA0KUAaSNyw@mail.gmail.com>
Hi Linus,
Sorry for the late reply.
> Hi Yu-Chun,
>
> thanks for your patch!
>
> [Uwe, can you check this a bit down!]
>
> On Wed, Jan 28, 2026 at 4:39 AM Yu-Chun Lin <eleanor.lin@realtek.com>
> wrote:
>
> > From: Tzuyi Chang <tychang@realtek.com>
> >
> > Add device tree bindings for RTD1625.
> >
> > Signed-off-by: Tzuyi Chang <tychang@realtek.com>
> > Co-developed-by: Yu-Chun Lin <eleanor.lin@realtek.com>
> > Signed-off-by: Yu-Chun Lin <eleanor.lin@realtek.com>
>
> Overall this looks good!
>
> > + power-source:
> > + description: |
> > + Valid arguments are described as below:
> > + 0: power supply of 1.8V
> > + 1: power supply of 3.3V
> > + enum: [0, 1]
>
> OK...
>
> > + slew-rate:
> > + description: |
> > + Valid arguments are described as below:
> > + 0: ~1ns falling time
> > + 1: ~10ns falling time
> > + 2: ~20ns falling time
> > + 3: ~30ns falling time
> > + enum: [0, 1, 2, 3]
>
> Slew rate is usually something like volts/second in SI units, I would expect that
> this differs depending on which power-source is selected?
> I.e. are these values for 1.8V or 3.3V?
>
This slew-rate configuration is specifically applied to the HDMI I2C pins only.
These pins operate at 1.8V.
> > + realtek,drive-strength-p:
> > + description: |
> > + Some of pins can be driven using the P-MOS and N-MOS
> transistor to
> > + achieve finer adjustments.
>
> Finer compared to what? Compared to the overall setting for slew-rate or
> drive-strength, or both?
>
It provides finer pad driving capability compared to the generic drive-strength
property. This property allows for higher resolution control.
> > The block-diagram representation is as
> > + follows:
> > + VDD
> > + |
> > + ||--+
> > + +-----o|| P-MOS-FET
> > + | ||--+
> > + IN --+ +----- out
> > + | ||--+
> > + +------|| N-MOS-FET
> > + ||--+
> > + |
> > + GND
>
> Nice picture!
>
> > + The driving strength of the P-MOS/N-MOS transistors impacts
> the
> > + waveform's rise/fall times. Greater driving strength results in
> > + shorter rise/fall times. Each P-MOS and N-MOS transistor
> offers
> > + 8 configurable levels (0 to 7), with higher values indicating
> > + greater driving strength, contributing to achieving the desired
> > + speed.
> > +
> > + The realtek,drive-strength-p is used to control the driving
> strength
> > + of the P-MOS output.
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + minimum: 0
> > + maximum: 7
> > +
> > + realtek,drive-strength-n:
> > + description: |
> > + Similar to the realtek,drive-strength-p, the
> realtek,drive-strength-n
> > + is used to control the driving strength of the N-MOS output.
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + minimum: 0
> > + maximum: 7
>
> These two are really interesting. But what do these settings represent?
>
> I would *guess* it represents the number of transistors used, simply, so 0
> means just one P/N transistor is driving and 7 means 8 transistors are driving.
>
> Can you provide details here?
>
> In this case, maybe we want a generalized property such as drive-stages-p =
> <n>; drive-stages-n = <n>;
>
> in the generic bindings, if this will appear from more vendors?
>
These values are not a simple count of transistors (so 0 is not 1 transistor).
Instead, the 3-bit value represents like a weighted configuration. There is a base
driving capability (even at value 0), and each bit adds a different weight to the
total strength (e.g., Bit 0 adds a small weight, Bit 2 adds a larger weight).
The resulting current is non-linear and also varies significantly based on the IO
voltage (1.8V vs 3.3V) and the specific pad group (e.g., eMMC vs SDIO).
Given this complexity, I am not sure if this implementation is suitable for a
generic binding shared with other vendors.
> > + realtek,duty-cycle:
> > + description: |
> > + An integer describing the level to adjust output duty cycle,
> > + controlling the proportion of positive and negative waveforms
> in
> > + nanoseconds.
> > + Valid arguments are described as below:
> > + 0: 0ns
> > + 2: + 0.25ns
> > + 3: + 0.5ns
> > + 4: -0.25ns
> > + 5: -0.5ns
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + enum: [0, 2, 3, 4, 5]
>
> This is a bit dubious.
>
> Isn't this one of those cases where you should be using the PWM bindings,
> directly in this node? Just slam in #pwm-cells = <...> etc, I think this is what you
> really want.
>
> Please consult/reference:
> Documentation/devicetree/bindings/pwm/pwm.yaml
> consumers would not use pinctrl phandles but something like pwms =
> <&pwm ....>;
>
> It's maybe a bit trixy to use two generic bindings in the node but it should be
> just fine.
>
> I don't feel confident mergeing this without Uwe Kleine-König's review.
>
This hardware block is not a PWM generator. It does not generate a signal with a
specific frequency and duty ratio.
Instead, it provides a fixed nanosecond-level adjustment to the rising/falling edges
of an existing signal. It is used for Signal Integrity tuning (adding/subtracting
delay to fine-tune the high/low duration).
To avoid confusion with PWM bindings, would you suggest a name like
realtek,pulse-width-adjust?
> > + realtek,input-voltage:
> > + description: |
> > + Select the input receiver voltage domain for the pin (1.8V or
> 3.3V).
> > + This defines the reference for VIH/VIL and must match the
> external
> > + signal level.
> > +
> > + This does not control the output drive voltage, which is handled
> by
> > + the standard generic 'power-source' property.
> > +
> > + Valid arguments are described as below:
> > + 0: 1.8V input logic level
> > + 1: 3.3V input logic level
> > + $ref: /schemas/types.yaml#/definitions/uint32
> > + enum: [0, 1]
>
> This looks very generic. Can you please just add input-voltage to
> pincfg-node.yaml with a custom format and reference that?
>
I will do it in v2.
> > + realtek,high-vil:
> > + type: boolean
> > + description: |
> > + Select the input receiver with a higher LOW recognition
> threshold
> > + (VIL) to improve detection for sources with weak pull-down or
> slow
> > + falling edges.
>
> Isn't this supposed to be input-schmitt-microvolt?
>
> Or is this something else than a schmitt trigger?
>
> In either case, try to figure out the typical recognition threshold in microvolt
> and use that, please.
>
This is not a configuration for the Schmitt trigger hysteresis window, but rather
a selection of the input low voltage level (VIL) to address a specific HDMI I2C
compatibility issue.
We have encountered some HDMI sinks (TVs) with weak pull-down capabilities.
These devices fail to pull the I2C bus voltage below the standard VIL threshold
(~0.7V), causing the SoC to fail to recognize the LOW state.
This property enables a specialized input receiver mode that raises the effective
VIL threshold to approximately 1.1V.
The hardware design only supports these two discrete levels (Standard ~0.7V and
High-VIL ~1.1V).
Since the hardware acts as a discrete switch between these two levels, do you prefer
we replace this boolean with a value-based property,
such as realtek,high-vil-microvolt = <1100000>?
Best Regards,
Yu-Chun
> Yours,
> Linus Walleij
next prev parent reply other threads:[~2026-02-25 9:30 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20260128033936.27642-1-eleanor.lin@realtek.com>
[not found] ` <20260128033936.27642-6-eleanor.lin@realtek.com>
2026-01-28 12:33 ` [PATCH 5/8] dt-bindings: pinctrl: realtek: add RTD1625 pinctrl binding Linus Walleij
2026-01-29 10:38 ` Uwe Kleine-König
2026-01-30 2:22 ` Yu-Chun Lin [林祐君]
2026-02-25 9:30 ` Yu-Chun Lin [林祐君] [this message]
2026-02-27 0:08 ` Linus Walleij
2026-02-25 18:03 ` Conor Dooley
2026-02-26 10:47 ` Yu-Chun Lin [林祐君]
2026-02-26 11:15 ` Conor Dooley
[not found] ` <20260128033936.27642-7-eleanor.lin@realtek.com>
2026-01-28 12:37 ` [PATCH 6/8] pinctrl: realtek: add support for slew rate, input voltage and high VIL Linus Walleij
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=d5be357c14b84155adfa8a9f00a64d83@realtek.com \
--to=eleanor.lin@realtek.com \
--cc=brgl@kernel.org \
--cc=conor+dt@kernel.org \
--cc=cy.huang@realtek.com \
--cc=james.tai@realtek.com \
--cc=krzk+dt@kernel.org \
--cc=linusw@kernel.org \
--cc=linux-pwm@vger.kernel.org \
--cc=robh@kernel.org \
--cc=stanley_chang@realtek.com \
--cc=tychang@realtek.com \
--cc=ukleinek@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.