public inbox for devicetree@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/2] dt-bindings: display: bridge: ldb: Document nxp,termination-resistor
@ 2025-11-18 13:22 Fabio Estevam
  2025-11-18 13:22 ` [PATCH 2/2] drm/bridge: fsl-ldb: Allow the termination resistor to be enabled Fabio Estevam
  2025-11-18 15:28 ` [PATCH 1/2] dt-bindings: display: bridge: ldb: Document nxp,termination-resistor Frank Li
  0 siblings, 2 replies; 3+ messages in thread
From: Fabio Estevam @ 2025-11-18 13:22 UTC (permalink / raw)
  To: neil.armstrong
  Cc: Laurent.pinchart, robh, krzk+dt, conor+dt, devicetree, dri-devel,
	imx, Fabio Estevam

Document the optional nxp,termination-resistor property for the
i.MX LVDS display bridge.

This boolean property indicates that the built-in 100 Ohm termination
resistor on the LVDS output is enabled. It is controlled via the HS_EN
bit in the LVDS_CTRL register. Enabling the resistor can improve LVDS
signal quality and may prevent visual artifacts on some boards, but
increases the power consumption.

Signed-off-by: Fabio Estevam <festevam@gmail.com>
---
 .../devicetree/bindings/display/bridge/fsl,ldb.yaml      | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml b/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
index 07388bf2b90d..6bc786204e65 100644
--- a/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
+++ b/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
@@ -35,6 +35,15 @@ properties:
       - const: ldb
       - const: lvds
 
+  nxp,termination-resistor:
+    type: boolean
+    description:
+      Indicates that the built-in 100 Ohm termination resistor on the LVDS
+      output is enabled. This property is optional and controlled via the
+      HS_EN bit in the LVDS_CTRL register. Enabling it can improve signal
+      quality and prevent visual artifacts on some boards, but increases
+      power consumption.
+
   ports:
     $ref: /schemas/graph.yaml#/properties/ports
 
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 2/2] drm/bridge: fsl-ldb: Allow the termination resistor to be enabled
  2025-11-18 13:22 [PATCH 1/2] dt-bindings: display: bridge: ldb: Document nxp,termination-resistor Fabio Estevam
@ 2025-11-18 13:22 ` Fabio Estevam
  2025-11-18 15:28 ` [PATCH 1/2] dt-bindings: display: bridge: ldb: Document nxp,termination-resistor Frank Li
  1 sibling, 0 replies; 3+ messages in thread
From: Fabio Estevam @ 2025-11-18 13:22 UTC (permalink / raw)
  To: neil.armstrong
  Cc: Laurent.pinchart, robh, krzk+dt, conor+dt, devicetree, dri-devel,
	imx, Fabio Estevam

The LVDS Control Register (LVDS_CTRL) register has an HS_EN bit that allows
the 100 Ohm termination resistor in the chip to be enabled.

Add support to setting the HS_EN bit when the "nxp,termination-resistor"
optional property is present.

The motivation for introducing this property was a custom i.MX8MP board
that was showing visual artifacts. After enabling the 100 Ohm termination
resistor the LVDS signal quality improved causing the artifacts to
disappear.

Signed-off-by: Fabio Estevam <festevam@gmail.com>
---
 drivers/gpu/drm/bridge/fsl-ldb.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/gpu/drm/bridge/fsl-ldb.c b/drivers/gpu/drm/bridge/fsl-ldb.c
index 5c3cf37200bc..b4b9130de32c 100644
--- a/drivers/gpu/drm/bridge/fsl-ldb.c
+++ b/drivers/gpu/drm/bridge/fsl-ldb.c
@@ -92,6 +92,7 @@ struct fsl_ldb {
 	const struct fsl_ldb_devdata *devdata;
 	bool ch0_enabled;
 	bool ch1_enabled;
+	bool termination_resistor;
 };
 
 static bool fsl_ldb_is_dual(const struct fsl_ldb *fsl_ldb)
@@ -212,6 +213,10 @@ static void fsl_ldb_atomic_enable(struct drm_bridge *bridge,
 	/* Program LVDS_CTRL */
 	reg = LVDS_CTRL_CC_ADJ(2) | LVDS_CTRL_PRE_EMPH_EN |
 	      LVDS_CTRL_PRE_EMPH_ADJ(3) | LVDS_CTRL_VBG_EN;
+
+	reg &= ~LVDS_CTRL_HS_EN;
+	if (fsl_ldb->termination_resistor)
+		reg |= LVDS_CTRL_HS_EN;
 	regmap_write(fsl_ldb->regmap, fsl_ldb->devdata->lvds_ctrl, reg);
 
 	/* Wait for VBG to stabilize. */
@@ -292,6 +297,7 @@ static const struct drm_bridge_funcs funcs = {
 static int fsl_ldb_probe(struct platform_device *pdev)
 {
 	struct device *dev = &pdev->dev;
+	struct device_node *np = dev->of_node;
 	struct device_node *panel_node;
 	struct device_node *remote1, *remote2;
 	struct drm_panel *panel;
@@ -340,6 +346,9 @@ static int fsl_ldb_probe(struct platform_device *pdev)
 	if (IS_ERR(panel))
 		return PTR_ERR(panel);
 
+	if (of_property_present(np, "nxp,termination-resistor"))
+		fsl_ldb->termination_resistor = true;
+
 	fsl_ldb->panel_bridge = devm_drm_panel_bridge_add(dev, panel);
 	if (IS_ERR(fsl_ldb->panel_bridge))
 		return PTR_ERR(fsl_ldb->panel_bridge);
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH 1/2] dt-bindings: display: bridge: ldb: Document nxp,termination-resistor
  2025-11-18 13:22 [PATCH 1/2] dt-bindings: display: bridge: ldb: Document nxp,termination-resistor Fabio Estevam
  2025-11-18 13:22 ` [PATCH 2/2] drm/bridge: fsl-ldb: Allow the termination resistor to be enabled Fabio Estevam
@ 2025-11-18 15:28 ` Frank Li
  1 sibling, 0 replies; 3+ messages in thread
From: Frank Li @ 2025-11-18 15:28 UTC (permalink / raw)
  To: Fabio Estevam
  Cc: neil.armstrong, Laurent.pinchart, robh, krzk+dt, conor+dt,
	devicetree, dri-devel, imx

On Tue, Nov 18, 2025 at 10:22:07AM -0300, Fabio Estevam wrote:
> Document the optional nxp,termination-resistor property for the
> i.MX LVDS display bridge.
>
> This boolean property indicates that the built-in 100 Ohm termination
> resistor on the LVDS output is enabled. It is controlled via the HS_EN
> bit in the LVDS_CTRL register. Enabling the resistor can improve LVDS
> signal quality and may prevent visual artifacts on some boards, but
> increases the power consumption.
>
> Signed-off-by: Fabio Estevam <festevam@gmail.com>
> ---
>  .../devicetree/bindings/display/bridge/fsl,ldb.yaml      | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml b/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
> index 07388bf2b90d..6bc786204e65 100644
> --- a/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
> +++ b/Documentation/devicetree/bindings/display/bridge/fsl,ldb.yaml
> @@ -35,6 +35,15 @@ properties:
>        - const: ldb
>        - const: lvds
>
> +  nxp,termination-resistor:

the name looks like resistor value, how about nxp,term-resistor-en?

Frank

> +    type: boolean
> +    description:
> +      Indicates that the built-in 100 Ohm termination resistor on the LVDS
> +      output is enabled. This property is optional and controlled via the
> +      HS_EN bit in the LVDS_CTRL register. Enabling it can improve signal
> +      quality and prevent visual artifacts on some boards, but increases
> +      power consumption.
> +
>    ports:
>      $ref: /schemas/graph.yaml#/properties/ports
>
> --
> 2.34.1
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-11-18 15:28 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-18 13:22 [PATCH 1/2] dt-bindings: display: bridge: ldb: Document nxp,termination-resistor Fabio Estevam
2025-11-18 13:22 ` [PATCH 2/2] drm/bridge: fsl-ldb: Allow the termination resistor to be enabled Fabio Estevam
2025-11-18 15:28 ` [PATCH 1/2] dt-bindings: display: bridge: ldb: Document nxp,termination-resistor Frank Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox