* [PATCH v6 1/2] dt-bindings: ufs: Document static TX Equalization settings properties [not found] <20260529113338.984301-1-can.guo@oss.qualcomm.com> @ 2026-05-29 11:33 ` Can Guo 2026-05-29 16:58 ` Krzysztof Kozlowski 0 siblings, 1 reply; 7+ messages in thread From: Can Guo @ 2026-05-29 11:33 UTC (permalink / raw) To: bvanassche, beanhuo, peter.wang, martin.petersen, mani Cc: linux-scsi, Can Guo, Alim Akhtar, Avri Altman, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno, Zhaoming Luo, Ram Kumar Dwivedi, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, open list, moderated list:ARM/Mediatek SoC support:Keyword:mediatek, moderated list:ARM/Mediatek SoC support:Keyword:mediatek UFS v5.0/UFSHCI v5.0 add HS-G6 support (46.6 Gbps/lane) via UniPro v3.0 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 properties: - patternProperties for txeq-preshoot-g[1-6] and txeq-deemphasis-g[1-6] - fixed property tx-precode-enable-g6 Each property is a uint32 array of per-lane tuples: <Host_Lane0 Device_Lane0>, [<Host_Lane1 Device_Lane1>] Accept 2 or 4 values (x1/x2 lane configs). PreShoot and DeEmphasis values are 0..7. Precode enable values are 0/1 and only applicable to HS-G6. Acked-by: Manivannan Sadhasivam <mani@kernel•org> Reviewed-by: Bean Huo <beanhuo@micron•com> Reviewed-by: Peter Wang <peter.wang@mediatek•com> Signed-off-by: Can Guo <can.guo@oss•qualcomm.com> --- .../devicetree/bindings/ufs/ufs-common.yaml | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/Documentation/devicetree/bindings/ufs/ufs-common.yaml b/Documentation/devicetree/bindings/ufs/ufs-common.yaml index ed97f5682509..d90cf25adfa5 100644 --- a/Documentation/devicetree/bindings/ufs/ufs-common.yaml +++ b/Documentation/devicetree/bindings/ufs/ufs-common.yaml @@ -105,6 +105,51 @@ 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-array + oneOf: + - minItems: 2 + maxItems: 2 + - minItems: 4 + maxItems: 4 + items: + enum: [0, 1] + description: | + Static TX Precode enable values for HS-G6 only. + Values are specified as per-lane tuples: + <Host_Lane0 Device_Lane0>, [<Host_Lane1 Device_Lane1>]. + +patternProperties: + "^txeq-preshoot-g[1-6]$": + $ref: /schemas/types.yaml#/definitions/uint32-array + oneOf: + - minItems: 2 + maxItems: 2 + - minItems: 4 + maxItems: 4 + items: + minimum: 0 + maximum: 7 + description: | + Static TX Equalization PreShoot values for High Speed Gears. + Values are specified as per-lane tuples: + <Host_Lane0 Device_Lane0>, [<Host_Lane1 Device_Lane1>]. + + "^txeq-deemphasis-g[1-6]$": + $ref: /schemas/types.yaml#/definitions/uint32-array + oneOf: + - minItems: 2 + maxItems: 2 + - minItems: 4 + maxItems: 4 + items: + minimum: 0 + maximum: 7 + description: | + Static TX Equalization DeEmphasis values for High Speed Gears. + Values are specified as per-lane tuples: + <Host_Lane0 Device_Lane0>, [<Host_Lane1 Device_Lane1>]. + dependencies: freq-table-hz: [ clocks ] operating-points-v2: [ clocks, clock-names ] -- 2.34.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v6 1/2] dt-bindings: ufs: Document static TX Equalization settings properties 2026-05-29 11:33 ` [PATCH v6 1/2] dt-bindings: ufs: Document static TX Equalization settings properties Can Guo @ 2026-05-29 16:58 ` Krzysztof Kozlowski 2026-05-30 12:45 ` Can Guo 0 siblings, 1 reply; 7+ messages in thread From: Krzysztof Kozlowski @ 2026-05-29 16:58 UTC (permalink / raw) To: Can Guo Cc: bvanassche, beanhuo, peter.wang, martin.petersen, mani, linux-scsi, Alim Akhtar, Avri Altman, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno, Zhaoming Luo, Ram Kumar Dwivedi, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, open list, moderated list:ARM/Mediatek SoC support:Keyword:mediatek, moderated list:ARM/Mediatek SoC support:Keyword:mediatek On Fri, May 29, 2026 at 04:33:37AM -0700, Can Guo wrote: > UFS v5.0/UFSHCI v5.0 add HS-G6 support (46.6 Gbps/lane) via UniPro v3.0 > 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 properties: > > - patternProperties for txeq-preshoot-g[1-6] and txeq-deemphasis-g[1-6] > - fixed property tx-precode-enable-g6 > > Each property is a uint32 array of per-lane tuples: > <Host_Lane0 Device_Lane0>, [<Host_Lane1 Device_Lane1>] > > Accept 2 or 4 values (x1/x2 lane configs). PreShoot and DeEmphasis values > are 0..7. Precode enable values are 0/1 and only applicable to HS-G6. > > Acked-by: Manivannan Sadhasivam <mani@kernel•org> > Reviewed-by: Bean Huo <beanhuo@micron•com> > Reviewed-by: Peter Wang <peter.wang@mediatek•com> > Signed-off-by: Can Guo <can.guo@oss•qualcomm.com> > --- > .../devicetree/bindings/ufs/ufs-common.yaml | 45 +++++++++++++++++++ > 1 file changed, 45 insertions(+) > > diff --git a/Documentation/devicetree/bindings/ufs/ufs-common.yaml b/Documentation/devicetree/bindings/ufs/ufs-common.yaml > index ed97f5682509..d90cf25adfa5 100644 > --- a/Documentation/devicetree/bindings/ufs/ufs-common.yaml > +++ b/Documentation/devicetree/bindings/ufs/ufs-common.yaml > @@ -105,6 +105,51 @@ 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-array > + oneOf: > + - minItems: 2 > + maxItems: 2 > + - minItems: 4 > + maxItems: 4 > + items: > + enum: [0, 1] > + description: | > + Static TX Precode enable values for HS-G6 only. > + Values are specified as per-lane tuples: > + <Host_Lane0 Device_Lane0>, [<Host_Lane1 Device_Lane1>]. You need to include them in any of applicable examples, otherwise nothing here is validated. Why values cannot be on or off? Or even better: why you cannot just list all the lanes which has it enabled, assuming disabled is by default? > + > +patternProperties: > + "^txeq-preshoot-g[1-6]$": > + $ref: /schemas/types.yaml#/definitions/uint32-array > + oneOf: > + - minItems: 2 > + maxItems: 2 > + - minItems: 4 > + maxItems: 4 > + items: > + minimum: 0 > + maximum: 7 What is the meaning of values? Nothing here refers to the spec, so is this driver specific? Best regards, Krzysztof ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v6 1/2] dt-bindings: ufs: Document static TX Equalization settings properties 2026-05-29 16:58 ` Krzysztof Kozlowski @ 2026-05-30 12:45 ` Can Guo 2026-05-30 13:57 ` Can Guo 2026-05-30 17:33 ` Krzysztof Kozlowski 0 siblings, 2 replies; 7+ messages in thread From: Can Guo @ 2026-05-30 12:45 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: bvanassche, beanhuo, peter.wang, martin.petersen, mani, linux-scsi, Alim Akhtar, Avri Altman, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno, Zhaoming Luo, Ram Kumar Dwivedi, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, open list, moderated list:ARM/Mediatek SoC support:Keyword:mediatek, moderated list:ARM/Mediatek SoC support:Keyword:mediatek On 5/30/2026 12:58 AM, Krzysztof Kozlowski wrote: > On Fri, May 29, 2026 at 04:33:37AM -0700, Can Guo wrote: >> UFS v5.0/UFSHCI v5.0 add HS-G6 support (46.6 Gbps/lane) via UniPro v3.0 >> 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 properties: >> >> - patternProperties for txeq-preshoot-g[1-6] and txeq-deemphasis-g[1-6] >> - fixed property tx-precode-enable-g6 >> >> Each property is a uint32 array of per-lane tuples: >> <Host_Lane0 Device_Lane0>, [<Host_Lane1 Device_Lane1>] >> >> Accept 2 or 4 values (x1/x2 lane configs). PreShoot and DeEmphasis values >> are 0..7. Precode enable values are 0/1 and only applicable to HS-G6. >> >> Acked-by: Manivannan Sadhasivam <mani@kernel•org> >> Reviewed-by: Bean Huo <beanhuo@micron•com> >> Reviewed-by: Peter Wang <peter.wang@mediatek•com> >> Signed-off-by: Can Guo <can.guo@oss•qualcomm.com> >> --- >> .../devicetree/bindings/ufs/ufs-common.yaml | 45 +++++++++++++++++++ >> 1 file changed, 45 insertions(+) >> >> diff --git a/Documentation/devicetree/bindings/ufs/ufs-common.yaml b/Documentation/devicetree/bindings/ufs/ufs-common.yaml >> index ed97f5682509..d90cf25adfa5 100644 >> --- a/Documentation/devicetree/bindings/ufs/ufs-common.yaml >> +++ b/Documentation/devicetree/bindings/ufs/ufs-common.yaml >> @@ -105,6 +105,51 @@ 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-array >> + oneOf: >> + - minItems: 2 >> + maxItems: 2 >> + - minItems: 4 >> + maxItems: 4 >> + items: >> + enum: [0, 1] >> + description: | >> + Static TX Precode enable values for HS-G6 only. >> + Values are specified as per-lane tuples: >> + <Host_Lane0 Device_Lane0>, [<Host_Lane1 Device_Lane1>]. > You need to include them in any of applicable examples, otherwise > nothing here is validated. Hi Krzysztof, Thanks for the review. Since no UFS5-capable SoC binding exists upstream yet (the target SoC is still pre-CS), there is no vendor-specific YAML to attach the example to. Is a synthetic example directly in ufs-common.yaml OK to you? > > Why values cannot be on or off? Or even better: why you cannot just list > all the lanes which has it enabled, assuming disabled is by default? Thanks for the suggestions. For the "just list enabled lanes" suggestion: precode must be configured independently for the Host-side TX and Device-side TX transceivers within the same physical lane. A lane index list alone cannot capture this two-dimensional per-lane state. The tuple format <Host_LaneN Device_LaneN> is the minimal encoding that covers both. For the "on/off" suggestion: the on/off string pattern is used with single-value properties (e.g. LED default-state) read via of_property_read_string(). I am not aware of precedent for on/off as a string array for per-lane tuples. > >> + >> +patternProperties: >> + "^txeq-preshoot-g[1-6]$": >> + $ref: /schemas/types.yaml#/definitions/uint32-array >> + oneOf: >> + - minItems: 2 >> + maxItems: 2 >> + - minItems: 4 >> + maxItems: 4 >> + items: >> + minimum: 0 >> + maximum: 7 > What is the meaning of values? Nothing here refers to the spec, so is > this driver specific? These are not driver-specific. PreShoot and DeEmphasis are standard features of the MIPI M-PHY / UniPro stack. The range [0, 7] is defined in the UniPro specification for the relevant PA layer attributes, and each value maps to a specific dB level as defined in the M-PHY specification. I will add the value-to-dB mapping table to the property descriptions in v7. Thanks, Can Guo. > > Best regards, > Krzysztof > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v6 1/2] dt-bindings: ufs: Document static TX Equalization settings properties 2026-05-30 12:45 ` Can Guo @ 2026-05-30 13:57 ` Can Guo 2026-05-30 17:33 ` Krzysztof Kozlowski 1 sibling, 0 replies; 7+ messages in thread From: Can Guo @ 2026-05-30 13:57 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: bvanassche, beanhuo, peter.wang, martin.petersen, mani, linux-scsi, Alim Akhtar, Avri Altman, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno, Zhaoming Luo, Ram Kumar Dwivedi, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, open list, moderated list:ARM/Mediatek SoC support:Keyword:mediatek, moderated list:ARM/Mediatek SoC support:Keyword:mediatek On 5/30/2026 8:45 PM, Can Guo wrote: > > > On 5/30/2026 12:58 AM, Krzysztof Kozlowski wrote: >> On Fri, May 29, 2026 at 04:33:37AM -0700, Can Guo wrote: >>> UFS v5.0/UFSHCI v5.0 add HS-G6 support (46.6 Gbps/lane) via UniPro v3.0 >>> 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 properties: >>> >>> - patternProperties for txeq-preshoot-g[1-6] and txeq-deemphasis-g[1-6] >>> - fixed property tx-precode-enable-g6 >>> >>> Each property is a uint32 array of per-lane tuples: >>> <Host_Lane0 Device_Lane0>, [<Host_Lane1 Device_Lane1>] >>> >>> Accept 2 or 4 values (x1/x2 lane configs). PreShoot and DeEmphasis >>> values >>> are 0..7. Precode enable values are 0/1 and only applicable to HS-G6. >>> >>> Acked-by: Manivannan Sadhasivam <mani@kernel•org> >>> Reviewed-by: Bean Huo <beanhuo@micron•com> >>> Reviewed-by: Peter Wang <peter.wang@mediatek•com> >>> Signed-off-by: Can Guo <can.guo@oss•qualcomm.com> >>> --- >>> .../devicetree/bindings/ufs/ufs-common.yaml | 45 >>> +++++++++++++++++++ >>> 1 file changed, 45 insertions(+) >>> >>> diff --git a/Documentation/devicetree/bindings/ufs/ufs-common.yaml >>> b/Documentation/devicetree/bindings/ufs/ufs-common.yaml >>> index ed97f5682509..d90cf25adfa5 100644 >>> --- a/Documentation/devicetree/bindings/ufs/ufs-common.yaml >>> +++ b/Documentation/devicetree/bindings/ufs/ufs-common.yaml >>> @@ -105,6 +105,51 @@ 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-array >>> + oneOf: >>> + - minItems: 2 >>> + maxItems: 2 >>> + - minItems: 4 >>> + maxItems: 4 >>> + items: >>> + enum: [0, 1] >>> + description: | >>> + Static TX Precode enable values for HS-G6 only. >>> + Values are specified as per-lane tuples: >>> + <Host_Lane0 Device_Lane0>, [<Host_Lane1 Device_Lane1>]. >> You need to include them in any of applicable examples, otherwise >> nothing here is validated. > Hi Krzysztof, > > Thanks for the review. > > Since no UFS5-capable SoC binding exists upstream yet (the target SoC is > still pre-CS), there is no vendor-specific YAML to attach the example to. > > Is a synthetic example directly in ufs-common.yaml OK to you? Let me update qcom,sm8650-ufshc.yaml as it includes sm8650 and others. Thanks, Can Guo. >> >> Why values cannot be on or off? Or even better: why you cannot just list >> all the lanes which has it enabled, assuming disabled is by default? > Thanks for the suggestions. > > For the "just list enabled lanes" suggestion: precode must be configured > independently for the Host-side TX and Device-side TX transceivers within > the same physical lane. A lane index list alone cannot capture this > two-dimensional per-lane state. The tuple format <Host_LaneN > Device_LaneN> > is the minimal encoding that covers both. > > For the "on/off" suggestion: the on/off string pattern is used with > single-value properties (e.g. LED default-state) read via > of_property_read_string(). I am not aware of precedent for on/off as a > string array for per-lane tuples. >> >>> + >>> +patternProperties: >>> + "^txeq-preshoot-g[1-6]$": >>> + $ref: /schemas/types.yaml#/definitions/uint32-array >>> + oneOf: >>> + - minItems: 2 >>> + maxItems: 2 >>> + - minItems: 4 >>> + maxItems: 4 >>> + items: >>> + minimum: 0 >>> + maximum: 7 >> What is the meaning of values? Nothing here refers to the spec, so is >> this driver specific? > These are not driver-specific. PreShoot and DeEmphasis are standard > features of the MIPI M-PHY / UniPro stack. The range [0, 7] is defined > in the UniPro specification for the relevant PA layer attributes, and > each > value maps to a specific dB level as defined in the M-PHY specification. > I will add the value-to-dB mapping table to the property descriptions > in v7. > > Thanks, > Can Guo. >> >> Best regards, >> Krzysztof >> > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v6 1/2] dt-bindings: ufs: Document static TX Equalization settings properties 2026-05-30 12:45 ` Can Guo 2026-05-30 13:57 ` Can Guo @ 2026-05-30 17:33 ` Krzysztof Kozlowski 2026-05-31 1:41 ` Can Guo 1 sibling, 1 reply; 7+ messages in thread From: Krzysztof Kozlowski @ 2026-05-30 17:33 UTC (permalink / raw) To: Can Guo Cc: bvanassche, beanhuo, peter.wang, martin.petersen, mani, linux-scsi, Alim Akhtar, Avri Altman, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno, Zhaoming Luo, Ram Kumar Dwivedi, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, open list, moderated list:ARM/Mediatek SoC support:Keyword:mediatek, moderated list:ARM/Mediatek SoC support:Keyword:mediatek On 30/05/2026 14:45, Can Guo wrote: > > > On 5/30/2026 12:58 AM, Krzysztof Kozlowski wrote: >> On Fri, May 29, 2026 at 04:33:37AM -0700, Can Guo wrote: >>> UFS v5.0/UFSHCI v5.0 add HS-G6 support (46.6 Gbps/lane) via UniPro v3.0 >>> 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 properties: >>> >>> - patternProperties for txeq-preshoot-g[1-6] and txeq-deemphasis-g[1-6] >>> - fixed property tx-precode-enable-g6 >>> >>> Each property is a uint32 array of per-lane tuples: >>> <Host_Lane0 Device_Lane0>, [<Host_Lane1 Device_Lane1>] >>> >>> Accept 2 or 4 values (x1/x2 lane configs). PreShoot and DeEmphasis values >>> are 0..7. Precode enable values are 0/1 and only applicable to HS-G6. >>> >>> Acked-by: Manivannan Sadhasivam <mani@kernel•org> >>> Reviewed-by: Bean Huo <beanhuo@micron•com> >>> Reviewed-by: Peter Wang <peter.wang@mediatek•com> >>> Signed-off-by: Can Guo <can.guo@oss•qualcomm.com> >>> --- >>> .../devicetree/bindings/ufs/ufs-common.yaml | 45 +++++++++++++++++++ >>> 1 file changed, 45 insertions(+) >>> >>> diff --git a/Documentation/devicetree/bindings/ufs/ufs-common.yaml b/Documentation/devicetree/bindings/ufs/ufs-common.yaml >>> index ed97f5682509..d90cf25adfa5 100644 >>> --- a/Documentation/devicetree/bindings/ufs/ufs-common.yaml >>> +++ b/Documentation/devicetree/bindings/ufs/ufs-common.yaml >>> @@ -105,6 +105,51 @@ 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-array >>> + oneOf: >>> + - minItems: 2 >>> + maxItems: 2 >>> + - minItems: 4 >>> + maxItems: 4 >>> + items: >>> + enum: [0, 1] >>> + description: | >>> + Static TX Precode enable values for HS-G6 only. >>> + Values are specified as per-lane tuples: >>> + <Host_Lane0 Device_Lane0>, [<Host_Lane1 Device_Lane1>]. >> You need to include them in any of applicable examples, otherwise >> nothing here is validated. > Hi Krzysztof, > > Thanks for the review. > > Since no UFS5-capable SoC binding exists upstream yet (the target SoC is I would imagine cover letter or commit msg would briefly mention that. > still pre-CS), there is no vendor-specific YAML to attach the example to. > > Is a synthetic example directly in ufs-common.yaml OK to you? Skip example in such case. >> >> Why values cannot be on or off? Or even better: why you cannot just list >> all the lanes which has it enabled, assuming disabled is by default? > Thanks for the suggestions. > > For the "just list enabled lanes" suggestion: precode must be configured > independently for the Host-side TX and Device-side TX transceivers within > the same physical lane. A lane index list alone cannot capture this > two-dimensional per-lane state. The tuple format <Host_LaneN Device_LaneN> > is the minimal encoding that covers both. Again, why do you need to encode '0'? > > For the "on/off" suggestion: the on/off string pattern is used with > single-value properties (e.g. LED default-state) read via > of_property_read_string(). I am not aware of precedent for on/off as a > string array for per-lane tuples. git grep string-array. Plenty of precedents. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v6 1/2] dt-bindings: ufs: Document static TX Equalization settings properties 2026-05-30 17:33 ` Krzysztof Kozlowski @ 2026-05-31 1:41 ` Can Guo 2026-05-31 4:48 ` Can Guo 0 siblings, 1 reply; 7+ messages in thread From: Can Guo @ 2026-05-31 1:41 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: bvanassche, beanhuo, peter.wang, martin.petersen, mani, linux-scsi, Alim Akhtar, Avri Altman, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno, Zhaoming Luo, Ram Kumar Dwivedi, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, open list, moderated list:ARM/Mediatek SoC support:Keyword:mediatek, moderated list:ARM/Mediatek SoC support:Keyword:mediatek On 5/31/2026 1:33 AM, Krzysztof Kozlowski wrote: > On 30/05/2026 14:45, Can Guo wrote: >> >> On 5/30/2026 12:58 AM, Krzysztof Kozlowski wrote: >>> On Fri, May 29, 2026 at 04:33:37AM -0700, Can Guo wrote: >>>> UFS v5.0/UFSHCI v5.0 add HS-G6 support (46.6 Gbps/lane) via UniPro v3.0 >>>> 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 properties: >>>> >>>> - patternProperties for txeq-preshoot-g[1-6] and txeq-deemphasis-g[1-6] >>>> - fixed property tx-precode-enable-g6 >>>> >>>> Each property is a uint32 array of per-lane tuples: >>>> <Host_Lane0 Device_Lane0>, [<Host_Lane1 Device_Lane1>] >>>> >>>> Accept 2 or 4 values (x1/x2 lane configs). PreShoot and DeEmphasis values >>>> are 0..7. Precode enable values are 0/1 and only applicable to HS-G6. >>>> >>>> Acked-by: Manivannan Sadhasivam <mani@kernel•org> >>>> Reviewed-by: Bean Huo <beanhuo@micron•com> >>>> Reviewed-by: Peter Wang <peter.wang@mediatek•com> >>>> Signed-off-by: Can Guo <can.guo@oss•qualcomm.com> >>>> --- >>>> .../devicetree/bindings/ufs/ufs-common.yaml | 45 +++++++++++++++++++ >>>> 1 file changed, 45 insertions(+) >>>> >>>> diff --git a/Documentation/devicetree/bindings/ufs/ufs-common.yaml b/Documentation/devicetree/bindings/ufs/ufs-common.yaml >>>> index ed97f5682509..d90cf25adfa5 100644 >>>> --- a/Documentation/devicetree/bindings/ufs/ufs-common.yaml >>>> +++ b/Documentation/devicetree/bindings/ufs/ufs-common.yaml >>>> @@ -105,6 +105,51 @@ 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-array >>>> + oneOf: >>>> + - minItems: 2 >>>> + maxItems: 2 >>>> + - minItems: 4 >>>> + maxItems: 4 >>>> + items: >>>> + enum: [0, 1] >>>> + description: | >>>> + Static TX Precode enable values for HS-G6 only. >>>> + Values are specified as per-lane tuples: >>>> + <Host_Lane0 Device_Lane0>, [<Host_Lane1 Device_Lane1>]. >>> You need to include them in any of applicable examples, otherwise >>> nothing here is validated. >> Hi Krzysztof, >> >> Thanks for the review. >> >> Since no UFS5-capable SoC binding exists upstream yet (the target SoC is > I would imagine cover letter or commit msg would briefly mention that. Thanks for the clarification. Will do. > >> still pre-CS), there is no vendor-specific YAML to attach the example to. >> >> Is a synthetic example directly in ufs-common.yaml OK to you? > Skip example in such case. > >>> Why values cannot be on or off? Or even better: why you cannot just list >>> all the lanes which has it enabled, assuming disabled is by default? >> Thanks for the suggestions. >> >> For the "just list enabled lanes" suggestion: precode must be configured >> independently for the Host-side TX and Device-side TX transceivers within >> the same physical lane. A lane index list alone cannot capture this >> two-dimensional per-lane state. The tuple format <Host_LaneN Device_LaneN> >> is the minimal encoding that covers both. > Again, why do you need to encode '0'? The tuple is still needed because Precoding is configured per transmitter-receiver pair, so each lane has two independent states: - Host_TX -> Device_RX - Device_TX -> Host_RX A lane-only enabled list cannot represent directional combinations like lane0 = (on, off) vs (off, on). > >> For the "on/off" suggestion: the on/off string pattern is used with >> single-value properties (e.g. LED default-state) read via >> of_property_read_string(). I am not aware of precedent for on/off as a >> string array for per-lane tuples. > git grep string-array. Plenty of precedents. I will keep the per-lane tuple model but switch tx-precode-enable-g6 from 0/1 to "on"/"off" (string array) in v7. Thanks, Can Guo. > > Best regards, > Krzysztof ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v6 1/2] dt-bindings: ufs: Document static TX Equalization settings properties 2026-05-31 1:41 ` Can Guo @ 2026-05-31 4:48 ` Can Guo 0 siblings, 0 replies; 7+ messages in thread From: Can Guo @ 2026-05-31 4:48 UTC (permalink / raw) To: Krzysztof Kozlowski Cc: bvanassche, beanhuo, peter.wang, martin.petersen, mani, linux-scsi, Alim Akhtar, Avri Altman, Rob Herring, Krzysztof Kozlowski, Conor Dooley, Matthias Brugger, AngeloGioacchino Del Regno, Zhaoming Luo, Ram Kumar Dwivedi, open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS, open list, moderated list:ARM/Mediatek SoC support:Keyword:mediatek, moderated list:ARM/Mediatek SoC support:Keyword:mediatek On 5/31/2026 9:41 AM, Can Guo wrote: > > > On 5/31/2026 1:33 AM, Krzysztof Kozlowski wrote: >> On 30/05/2026 14:45, Can Guo wrote: >>> >>> On 5/30/2026 12:58 AM, Krzysztof Kozlowski wrote: >>>> On Fri, May 29, 2026 at 04:33:37AM -0700, Can Guo wrote: >>>>> UFS v5.0/UFSHCI v5.0 add HS-G6 support (46.6 Gbps/lane) via UniPro >>>>> v3.0 >>>>> 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 properties: >>>>> >>>>> - patternProperties for txeq-preshoot-g[1-6] and >>>>> txeq-deemphasis-g[1-6] >>>>> - fixed property tx-precode-enable-g6 >>>>> >>>>> Each property is a uint32 array of per-lane tuples: >>>>> <Host_Lane0 Device_Lane0>, [<Host_Lane1 Device_Lane1>] >>>>> >>>>> Accept 2 or 4 values (x1/x2 lane configs). PreShoot and DeEmphasis >>>>> values >>>>> are 0..7. Precode enable values are 0/1 and only applicable to HS-G6. >>>>> >>>>> Acked-by: Manivannan Sadhasivam <mani@kernel•org> >>>>> Reviewed-by: Bean Huo <beanhuo@micron•com> >>>>> Reviewed-by: Peter Wang <peter.wang@mediatek•com> >>>>> Signed-off-by: Can Guo <can.guo@oss•qualcomm.com> >>>>> --- >>>>> .../devicetree/bindings/ufs/ufs-common.yaml | 45 >>>>> +++++++++++++++++++ >>>>> 1 file changed, 45 insertions(+) >>>>> >>>>> diff --git a/Documentation/devicetree/bindings/ufs/ufs-common.yaml >>>>> b/Documentation/devicetree/bindings/ufs/ufs-common.yaml >>>>> index ed97f5682509..d90cf25adfa5 100644 >>>>> --- a/Documentation/devicetree/bindings/ufs/ufs-common.yaml >>>>> +++ b/Documentation/devicetree/bindings/ufs/ufs-common.yaml >>>>> @@ -105,6 +105,51 @@ 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-array >>>>> + oneOf: >>>>> + - minItems: 2 >>>>> + maxItems: 2 >>>>> + - minItems: 4 >>>>> + maxItems: 4 >>>>> + items: >>>>> + enum: [0, 1] >>>>> + description: | >>>>> + Static TX Precode enable values for HS-G6 only. >>>>> + Values are specified as per-lane tuples: >>>>> + <Host_Lane0 Device_Lane0>, [<Host_Lane1 Device_Lane1>]. >>>> You need to include them in any of applicable examples, otherwise >>>> nothing here is validated. >>> Hi Krzysztof, >>> >>> Thanks for the review. >>> >>> Since no UFS5-capable SoC binding exists upstream yet (the target >>> SoC is >> I would imagine cover letter or commit msg would briefly mention that. > Thanks for the clarification. Will do. >> >>> still pre-CS), there is no vendor-specific YAML to attach the >>> example to. >>> >>> Is a synthetic example directly in ufs-common.yaml OK to you? >> Skip example in such case. >> >>>> Why values cannot be on or off? Or even better: why you cannot just >>>> list >>>> all the lanes which has it enabled, assuming disabled is by default? >>> Thanks for the suggestions. >>> >>> For the "just list enabled lanes" suggestion: precode must be >>> configured >>> independently for the Host-side TX and Device-side TX transceivers >>> within >>> the same physical lane. A lane index list alone cannot capture this >>> two-dimensional per-lane state. The tuple format <Host_LaneN >>> Device_LaneN> >>> is the minimal encoding that covers both. >> Again, why do you need to encode '0'? > The tuple is still needed because Precoding is configured per > transmitter-receiver pair, > so each lane has two independent states: > - Host_TX -> Device_RX > - Device_TX -> Host_RX > A lane-only enabled list cannot represent directional combinations > like lane0 = > (on, off) vs (off, on). How about we split into two properties, something like below? tx-precode-enable-g6-host-lanes = <0 1> tx-precode-enable-g6-device-lanes = <1> Only listed lanes are enabled; unlisted lanes are disabled by default. Are you OK with this approach? Thanks, Can Guo. >> >>> For the "on/off" suggestion: the on/off string pattern is used with >>> single-value properties (e.g. LED default-state) read via >>> of_property_read_string(). I am not aware of precedent for on/off as a >>> string array for per-lane tuples. >> git grep string-array. Plenty of precedents. > I will keep the per-lane tuple model but switch tx-precode-enable-g6 > from 0/1 to > "on"/"off" (string array) in v7. > > Thanks, > Can Guo. >> >> Best regards, >> Krzysztof > ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2026-05-31 4:48 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20260529113338.984301-1-can.guo@oss.qualcomm.com>
2026-05-29 11:33 ` [PATCH v6 1/2] dt-bindings: ufs: Document static TX Equalization settings properties Can Guo
2026-05-29 16:58 ` Krzysztof Kozlowski
2026-05-30 12:45 ` Can Guo
2026-05-30 13:57 ` Can Guo
2026-05-30 17:33 ` Krzysztof Kozlowski
2026-05-31 1:41 ` Can Guo
2026-05-31 4:48 ` Can Guo
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox