Re: [PATCH v2 1/2] dt-bindings: ufs: Document static TX Equalization settings properties
From: Can Guo
Date: Wed May 27 2026 - 05:28:57 EST
On 5/27/2026 5:24 PM, Can Guo wrote:
I misunderstood your point. I thought you meant the 0x5555 vs 0x55 stuffs in PCIe side.
On 5/27/2026 5:15 PM, Manivannan Sadhasivam wrote:
On Wed, May 27, 2026 at 04:51:04PM +0800, Can Guo wrote:Man, I don't like that way to be honest, it took me a few minutes to understand it on the PCIe side...
Hi Mani,How about encoding Host and Device values in a single tuple. Like,
On 5/23/2026 10:14 PM, Manivannan Sadhasivam wrote:
On Sat, May 23, 2026 at 06:47:10AM -0700, Can Guo wrote:Point taken for the PrecodeEn.
UFS v5.0/UFSHCI v5.0 add HS-G6 support (46.6 Gbps/lane) via UniPro v3.0I don't think combining all EQ settings (PreShoot, DeEmphasis, PrecodeEn) in a
and M-PHY v6.0. In these specs, TX Equalization is defined for all High
Speed Gears (not only HS-G6) to compensate channel loss and improve signal
integrity at high speed operation.
For HS-G6, M-PHY uses PAM4 1b1b line coding, Pre-Coding may also be
required depending on channel characteristics.
Add vendor-neutral DT patternProperties:
txeq-settings-g[1-6]
Each property is a uint32 array of per-lane tuples:
(PreShoot, DeEmphasis, PrecodeEn)
single property as opaque tuples is the right approach. These are three
semantically distinct parameters with independent value ranges. So packing
them into a uint32 array makes validation impossible in the schema.
AFACIS, PrecodeEn is applicable only to HS-G6 (PAM4), but the proposed
patternProperties forces it into G1-G5 tuples as well, which is semantically
wrong.
PCIe binding defines one property per data rate for EQ presets:Thanks for the suggestion. I will go with below approach:
https://github.com/devicetree-org/dt-schema/blob/main/dtschema/schemas/pci/pci-bus-common.yaml#L193
Similarly, UFS should define one property per gear per (like, txeq-preshoot-g6,
txeq-deemphasis-g6, txeq-precode-enable-g6,...) rather than clubbing everything
into opaque tuples.
txeq-preshoot-g6 = <Host Lane 0 PreShoot, Device Lane 0 PreShoot, Host Lane
1 PreShoot, Device Lane 1 PreShoot>;
txeq-deemphasis-g6 = <Host Lane 0 DeEmphasis, Device Lane 0 DeEmphasis, Host
Lane 1 DeEmphasis, Device Lane 1 DeEmphasis>;
txeq-precode-en-g6 = <Host Lane 0 PrecodeEn, Device Lane 0 PrecodeEn, Host
Lane 1 PrecodeEn, Device Lane 1 PrecodeEn>;
txeq-preshoot-g6 = <Lane_0 Host_PreShoot Device_PreShoot>, <Lane 1...>,
Let's go with my approach please...
I am OK to go with single tuple approach as you suggested, which is more readable.
Thanks,
Can Guo.
Thanks,
Can Guo.
- Mani