Re: [PATCH v8 1/2] dt-bindings: ufs: Document static TX Equalization settings properties
From: Can Guo
Date: Mon Jun 15 2026 - 08:12:58 EST
On 6/15/2026 7:26 PM, Krzysztof Kozlowski wrote:
On 15/06/2026 10:50, Can Guo wrote:Sure, I will correct it and validate the same for the next version.
UFS v5.0/UFSHCI v5.0 adds HS-G6 support (46.6 Gbps/lane) via UniProMy bad here, that was my mistake. I wanted matrix, but gave you array
v3.0 and M-PHY v6.0. These specs define TX Equalization for all
High-Speed Gears (not only HS-G6) to compensate channel loss and
improve signal integrity at high speed.
For HS-G6, M-PHY uses PAM4 1b1b line coding. Pre-Coding may also be
required depending on channel characteristics.
Document vendor-neutral properties in ufs-common.yaml:
- txeq-preshoot-g[1-6]
- txeq-deemphasis-g[1-6]
- tx-precode-enable-g6
Values are per-lane Host/Device tuples (2 values for x1, 4 values for
x2). PreShoot/DeEmphasis range from 0..7, and Precode is 0/1.
These are board-specific signal-integrity tuning values. They depend on
channel SI/PHY characterization and validation (host PHY, device PHY,
package, and board routing), and are determined by HW/PHY designers.
Although UFSHCI v5.0 supports TX Equalization Training via UniPro v3.0,
which allows host software to determine optimal TX Equalization at
runtime, static board-specific TX Equalization settings in the Device
Tree are still necessary because:
- TX Equalization Training is not supported for HS-G3 and below
- TX Equalization Training is disabled on some platforms
Signed-off-by: Can Guo <can.guo@xxxxxxxxxxxxxxxx>
---
.../devicetree/bindings/ufs/ufs-common.yaml | 55 +++++++++++++++++++
1 file changed, 55 insertions(+)
diff --git a/Documentation/devicetree/bindings/ufs/ufs-common.yaml b/Documentation/devicetree/bindings/ufs/ufs-common.yaml
index ed97f5682509..145a6416e1df 100644
--- a/Documentation/devicetree/bindings/ufs/ufs-common.yaml
+++ b/Documentation/devicetree/bindings/ufs/ufs-common.yaml
@@ -105,6 +105,61 @@ properties:
Restricts the UFS controller to rate-a or rate-b for both TX and
RX directions.
+ tx-precode-enable-g6:
+ $ref: /schemas/types.yaml#/definitions/uint32-matrix
+ oneOf:
+ - items:
+ - description: Host_Lane0 precode
+ - description: Device_Lane0 precode
+ - items:
+ - description: Host_Lane0 precode
+ - description: Device_Lane0 precode
+ - description: Host_Lane1 precode
+ - description: Device_Lane1 precode
+ items:
+ enum: [0, 1]
+ description:
+ Static TX Precode enable values for HS-G6 only.
syntax. Proper code would be:
tx-precode-enable-g6:
$ref: /schemas/types.yaml#/definitions/uint32-matrix
minItems: 1
items:
- items:
- description: Host_Lane0 precode
enum: [0, 1]
- description: Device_Lane0 precode
enum: [0, 1]
- items:
- description: Host_Lane1 precode
enum: [0, 1]
- description: Device_Lane1 precode
enum: [0, 1]
description:
Static TX Precode enable values for HS-G6 only.
I tested it with DTS and seems to work fine. Please use the same for
other properties, but enum will be 0-7.
Thank you for helping me out.
Best Regards,
Can Guo.
Best regards,
Krzysztof