dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/4] dt-bindings: display: ti,tfp410.txt: convert to yaml
@ 2020-06-17  9:46 Ricardo Cañuelo
  2020-06-17  9:46 ` [PATCH v4 1/4] " Ricardo Cañuelo
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Ricardo Cañuelo @ 2020-06-17  9:46 UTC (permalink / raw)
  To: Laurent.pinchart
  Cc: devicetree, jason, airlied, dri-devel, robh+dt, tomi.valkeinen,
	kernel, linux-arm-kernel

This series converts the DT binding for the TI TFP410 DPI-to-DVI encoder
to json-schema.

It also fixes a minor bug in the ti-tfp410 driver that causes a
wrong calculation of the setup and hold times when the de-skew feature
is enabled. The retrieval of the de-skew value from the DT has also been
updated to reflect the binding changes.

Changes in v4:

  - ti,tfp410.yaml:
    - "ports" node set back as required (Laurent Pinchart). This means
      that dove-sbc-a510.dts will not comply with the binding and will
      have to be fixed at some point.

The bindings have been tested with:

  make dt_binding_check ARCH=<arch> DT_SCHEMA_FILES=<...ti,tfp410.yaml>
  make dtbs_check ARCH=<arch> DT_SCHEMA_FILES=<...ti,tfp410.yaml>

for <arch> = arm and arm64.
This uncovered a number of dts files that use the TFP410 but not through
I2C and don't define the ti,deskew property. These should also be fixed.

Ricardo Cañuelo (4):
  dt-bindings: display: ti,tfp410.txt: convert to yaml
  dt-bindings: display: ti,tfp410.yaml: Redefine ti,deskew property
  drm/bridge: tfp410: fix de-skew value retrieval from DT
  drm/bridge: tfp410: Fix setup and hold time calculation

 .../bindings/display/bridge/ti,tfp410.txt     |  66 ---------
 .../bindings/display/bridge/ti,tfp410.yaml    | 131 ++++++++++++++++++
 drivers/gpu/drm/bridge/ti-tfp410.c            |  10 +-
 3 files changed, 136 insertions(+), 71 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/display/bridge/ti,tfp410.txt
 create mode 100644 Documentation/devicetree/bindings/display/bridge/ti,tfp410.yaml

-- 
2.18.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* [PATCH v4 1/4] dt-bindings: display: ti,tfp410.txt: convert to yaml
  2020-06-17  9:46 [PATCH v4 0/4] dt-bindings: display: ti,tfp410.txt: convert to yaml Ricardo Cañuelo
@ 2020-06-17  9:46 ` Ricardo Cañuelo
  2020-06-17  9:46 ` [PATCH v4 2/4] dt-bindings: display: ti, tfp410.yaml: Redefine ti, deskew property Ricardo Cañuelo
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Ricardo Cañuelo @ 2020-06-17  9:46 UTC (permalink / raw)
  To: Laurent.pinchart
  Cc: devicetree, jason, airlied, dri-devel, robh+dt, tomi.valkeinen,
	kernel, linux-arm-kernel

Convert the DT binding documentation for the TI TFP410 DPI-to-DVI
encoder to json-schema.

Signed-off-by: Ricardo Cañuelo <ricardo.canuelo@collabora.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 .../bindings/display/bridge/ti,tfp410.txt     |  66 ---------
 .../bindings/display/bridge/ti,tfp410.yaml    | 130 ++++++++++++++++++
 2 files changed, 130 insertions(+), 66 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/display/bridge/ti,tfp410.txt
 create mode 100644 Documentation/devicetree/bindings/display/bridge/ti,tfp410.yaml

diff --git a/Documentation/devicetree/bindings/display/bridge/ti,tfp410.txt b/Documentation/devicetree/bindings/display/bridge/ti,tfp410.txt
deleted file mode 100644
index 5ff4f64ef8e8..000000000000
--- a/Documentation/devicetree/bindings/display/bridge/ti,tfp410.txt
+++ /dev/null
@@ -1,66 +0,0 @@
-TFP410 DPI to DVI encoder
-=========================
-
-Required properties:
-- compatible: "ti,tfp410"
-
-Optional properties:
-- powerdown-gpios: power-down gpio
-- reg: I2C address. If and only if present the device node should be placed
-  into the I2C controller node where the TFP410 I2C is connected to.
-- ti,deskew: data de-skew in 350ps increments, from -4 to +3, as configured
-  through th DK[3:1] pins. This property shall be present only if the TFP410
-  is not connected through I2C.
-
-Required nodes:
-
-This device has two video ports. Their connections are modeled using the OF
-graph bindings specified in [1]. Each port node shall have a single endpoint.
-
-- Port 0 is the DPI input port. Its endpoint subnode shall contain a
-  pclk-sample and bus-width property and a remote-endpoint property as specified
-  in [1].
-  - If pclk-sample is not defined, pclk-sample = 0 should be assumed for
-    backward compatibility.
-  - If bus-width is not defined then bus-width = 24 should be assumed for
-    backward compatibility.
-    bus-width = 24: 24 data lines are connected and single-edge mode
-    bus-width = 12: 12 data lines are connected and dual-edge mode
-
-- Port 1 is the DVI output port. Its endpoint subnode shall contain a
-  remote-endpoint property is specified in [1].
-
-[1] Documentation/devicetree/bindings/media/video-interfaces.txt
-
-
-Example
--------
-
-tfp410: encoder@0 {
-	compatible = "ti,tfp410";
-	powerdown-gpios = <&twl_gpio 2 GPIO_ACTIVE_LOW>;
-	ti,deskew = <4>;
-
-	ports {
-		#address-cells = <1>;
-		#size-cells = <0>;
-
-		port@0 {
-			reg = <0>;
-
-			tfp410_in: endpoint@0 {
-				pclk-sample = <1>;
-				bus-width = <24>;
-				remote-endpoint = <&dpi_out>;
-			};
-		};
-
-		port@1 {
-			reg = <1>;
-
-			tfp410_out: endpoint@0 {
-				remote-endpoint = <&dvi_connector_in>;
-			};
-		};
-	};
-};
diff --git a/Documentation/devicetree/bindings/display/bridge/ti,tfp410.yaml b/Documentation/devicetree/bindings/display/bridge/ti,tfp410.yaml
new file mode 100644
index 000000000000..5569a4907765
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/bridge/ti,tfp410.yaml
@@ -0,0 +1,130 @@
+# SPDX-License-Identifier: GPL-2.0-only
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/bridge/ti,tfp410.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: TFP410 DPI to DVI encoder
+
+maintainers:
+  - Tomi Valkeinen <tomi.valkeinen@ti.com>
+  - Jyri Sarha <jsarha@ti.com>
+
+properties:
+  compatible:
+    const: ti,tfp410
+
+  reg:
+    description: I2C address of the device.
+    maxItems: 1
+
+  powerdown-gpios:
+    maxItems: 1
+
+  ti,deskew:
+    description:
+      Data de-skew in 350ps increments, from -4 to +3, as configured
+      through th DK[3:1] pins. This property shall be present only if the TFP410
+      is not connected through I2C.
+    maxItems: 1
+    $ref: /schemas/types.yaml#/definitions/uint32
+
+  ports:
+    description:
+      A node containing input and output port nodes with endpoint
+      definitions as documented in
+      Documentation/devicetree/bindings/media/video-interfaces.txt
+    type: object
+
+    properties:
+      port@0:
+        description: DPI input port.
+        type: object
+
+        properties:
+          reg:
+            const: 0
+
+          endpoint:
+            type: object
+
+            properties:
+              pclk-sample:
+                description:
+                  Endpoint sampling edge.
+                enum:
+                  - 0  # Falling edge
+                  - 1  # Rising edge
+                default: 0
+
+              bus-width:
+                description:
+                  Endpoint bus width.
+                enum:
+                  - 12  # 12 data lines connected and dual-edge mode
+                  - 24  # 24 data lines connected and single-edge mode
+                default: 24
+
+      port@1:
+        description: DVI output port.
+        type: object
+
+        properties:
+          reg:
+            const: 1
+
+          endpoint:
+            type: object
+
+    required:
+      - port@0
+      - port@1
+
+required:
+  - compatible
+  - ports
+
+if:
+  required:
+    - reg
+then:
+  properties:
+    ti,deskew: false
+else:
+  required:
+    - ti,deskew
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/gpio/gpio.h>
+
+    tfp410: encoder {
+        compatible = "ti,tfp410";
+        powerdown-gpios = <&twl_gpio 2 GPIO_ACTIVE_LOW>;
+        ti,deskew = <3>;
+
+        ports {
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            port@0 {
+                reg = <0>;
+                tfp410_in: endpoint {
+                    pclk-sample = <1>;
+                    bus-width = <24>;
+                    remote-endpoint = <&dpi_out>;
+                };
+            };
+
+            port@1 {
+                reg = <1>;
+                tfp410_out: endpoint {
+                    remote-endpoint = <&dvi_connector_in>;
+                };
+            };
+        };
+    };
+
+...
-- 
2.18.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* [PATCH v4 2/4] dt-bindings: display: ti, tfp410.yaml: Redefine ti, deskew property
  2020-06-17  9:46 [PATCH v4 0/4] dt-bindings: display: ti,tfp410.txt: convert to yaml Ricardo Cañuelo
  2020-06-17  9:46 ` [PATCH v4 1/4] " Ricardo Cañuelo
@ 2020-06-17  9:46 ` Ricardo Cañuelo
  2020-06-17  9:46 ` [PATCH v4 3/4] drm/bridge: tfp410: fix de-skew value retrieval from DT Ricardo Cañuelo
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Ricardo Cañuelo @ 2020-06-17  9:46 UTC (permalink / raw)
  To: Laurent.pinchart
  Cc: devicetree, jason, airlied, dri-devel, robh+dt, tomi.valkeinen,
	kernel, linux-arm-kernel

This changes how the 'ti,deskew' property is defined. It's now an
unsigned value from 0 to 7 instead of a signed value from -4 to 3.
Until the dtc carries the integer sign through to the yaml output it's
easier to define signed types as unsigned.

Signed-off-by: Ricardo Cañuelo <ricardo.canuelo@collabora.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 .../devicetree/bindings/display/bridge/ti,tfp410.yaml    | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/Documentation/devicetree/bindings/display/bridge/ti,tfp410.yaml b/Documentation/devicetree/bindings/display/bridge/ti,tfp410.yaml
index 5569a4907765..605831c1e836 100644
--- a/Documentation/devicetree/bindings/display/bridge/ti,tfp410.yaml
+++ b/Documentation/devicetree/bindings/display/bridge/ti,tfp410.yaml
@@ -23,11 +23,12 @@ properties:
 
   ti,deskew:
     description:
-      Data de-skew in 350ps increments, from -4 to +3, as configured
-      through th DK[3:1] pins. This property shall be present only if the TFP410
-      is not connected through I2C.
-    maxItems: 1
+      Data de-skew value in 350ps increments, from 0 to 7, as configured
+      through the DK[3:1] pins. The de-skew multiplier is computed as
+      (DK[3:1] - 4), so it ranges from -4 to 3.
     $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 0
+    maximum: 7
 
   ports:
     description:
-- 
2.18.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* [PATCH v4 3/4] drm/bridge: tfp410: fix de-skew value retrieval from DT
  2020-06-17  9:46 [PATCH v4 0/4] dt-bindings: display: ti,tfp410.txt: convert to yaml Ricardo Cañuelo
  2020-06-17  9:46 ` [PATCH v4 1/4] " Ricardo Cañuelo
  2020-06-17  9:46 ` [PATCH v4 2/4] dt-bindings: display: ti, tfp410.yaml: Redefine ti, deskew property Ricardo Cañuelo
@ 2020-06-17  9:46 ` Ricardo Cañuelo
  2020-06-17  9:46 ` [PATCH v4 4/4] drm/bridge: tfp410: Fix setup and hold time calculation Ricardo Cañuelo
  2020-06-20 19:10 ` [PATCH v4 0/4] dt-bindings: display: ti,tfp410.txt: convert to yaml Sam Ravnborg
  4 siblings, 0 replies; 6+ messages in thread
From: Ricardo Cañuelo @ 2020-06-17  9:46 UTC (permalink / raw)
  To: Laurent.pinchart
  Cc: devicetree, jason, airlied, dri-devel, robh+dt, tomi.valkeinen,
	kernel, linux-arm-kernel

The tfp410 has a data de-skew feature that allows the user to compensate
the skew between IDCK and the pixel data and control signals.

In the driver, the setup and hold times are calculated from the de-skew
value. This retrieves the deskew value from the DT using the proper
datatype and range check as described by the binding (u32 from 0 to 7).

This fix results from a change in the ti,tfp410 DT binding.

Signed-off-by: Ricardo Cañuelo <ricardo.canuelo@collabora.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/gpu/drm/bridge/ti-tfp410.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti-tfp410.c
index e3eb6364c0f7..dfde811f3411 100644
--- a/drivers/gpu/drm/bridge/ti-tfp410.c
+++ b/drivers/gpu/drm/bridge/ti-tfp410.c
@@ -220,7 +220,7 @@ static int tfp410_parse_timings(struct tfp410 *dvi, bool i2c)
 	struct device_node *ep;
 	u32 pclk_sample = 0;
 	u32 bus_width = 24;
-	s32 deskew = 0;
+	u32 deskew = 0;
 
 	/* Start with defaults. */
 	*timings = tfp410_default_timings;
@@ -274,12 +274,12 @@ static int tfp410_parse_timings(struct tfp410 *dvi, bool i2c)
 	}
 
 	/* Get the setup and hold time from vendor-specific properties. */
-	of_property_read_u32(dvi->dev->of_node, "ti,deskew", (u32 *)&deskew);
-	if (deskew < -4 || deskew > 3)
+	of_property_read_u32(dvi->dev->of_node, "ti,deskew", &deskew);
+	if (deskew > 7)
 		return -EINVAL;
 
-	timings->setup_time_ps = min(0, 1200 - 350 * deskew);
-	timings->hold_time_ps = min(0, 1300 + 350 * deskew);
+	timings->setup_time_ps = min(0, 1200 - 350 * ((s32)deskew - 4));
+	timings->hold_time_ps = min(0, 1300 + 350 * ((s32)deskew - 4));
 
 	return 0;
 }
-- 
2.18.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* [PATCH v4 4/4] drm/bridge: tfp410: Fix setup and hold time calculation
  2020-06-17  9:46 [PATCH v4 0/4] dt-bindings: display: ti,tfp410.txt: convert to yaml Ricardo Cañuelo
                   ` (2 preceding siblings ...)
  2020-06-17  9:46 ` [PATCH v4 3/4] drm/bridge: tfp410: fix de-skew value retrieval from DT Ricardo Cañuelo
@ 2020-06-17  9:46 ` Ricardo Cañuelo
  2020-06-20 19:10 ` [PATCH v4 0/4] dt-bindings: display: ti,tfp410.txt: convert to yaml Sam Ravnborg
  4 siblings, 0 replies; 6+ messages in thread
From: Ricardo Cañuelo @ 2020-06-17  9:46 UTC (permalink / raw)
  To: Laurent.pinchart
  Cc: devicetree, jason, airlied, dri-devel, robh+dt, tomi.valkeinen,
	kernel, linux-arm-kernel

This fixes a bug in the calculation of the setup and hold times based on
the deskew configuration.

Signed-off-by: Ricardo Cañuelo <ricardo.canuelo@collabora.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 drivers/gpu/drm/bridge/ti-tfp410.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/bridge/ti-tfp410.c b/drivers/gpu/drm/bridge/ti-tfp410.c
index dfde811f3411..21d99b4ea0c9 100644
--- a/drivers/gpu/drm/bridge/ti-tfp410.c
+++ b/drivers/gpu/drm/bridge/ti-tfp410.c
@@ -278,8 +278,8 @@ static int tfp410_parse_timings(struct tfp410 *dvi, bool i2c)
 	if (deskew > 7)
 		return -EINVAL;
 
-	timings->setup_time_ps = min(0, 1200 - 350 * ((s32)deskew - 4));
-	timings->hold_time_ps = min(0, 1300 + 350 * ((s32)deskew - 4));
+	timings->setup_time_ps = 1200 - 350 * ((s32)deskew - 4);
+	timings->hold_time_ps = max(0, 1300 + 350 * ((s32)deskew - 4));
 
 	return 0;
 }
-- 
2.18.0

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

* Re: [PATCH v4 0/4] dt-bindings: display: ti,tfp410.txt: convert to yaml
  2020-06-17  9:46 [PATCH v4 0/4] dt-bindings: display: ti,tfp410.txt: convert to yaml Ricardo Cañuelo
                   ` (3 preceding siblings ...)
  2020-06-17  9:46 ` [PATCH v4 4/4] drm/bridge: tfp410: Fix setup and hold time calculation Ricardo Cañuelo
@ 2020-06-20 19:10 ` Sam Ravnborg
  4 siblings, 0 replies; 6+ messages in thread
From: Sam Ravnborg @ 2020-06-20 19:10 UTC (permalink / raw)
  To: Ricardo Cañuelo
  Cc: devicetree, jason, airlied, tomi.valkeinen, dri-devel, robh+dt,
	Laurent.pinchart, kernel, linux-arm-kernel

Hi Ricardo.

On Wed, Jun 17, 2020 at 11:46:29AM +0200, Ricardo Cañuelo wrote:
> This series converts the DT binding for the TI TFP410 DPI-to-DVI encoder
> to json-schema.
> 
> It also fixes a minor bug in the ti-tfp410 driver that causes a
> wrong calculation of the setup and hold times when the de-skew feature
> is enabled. The retrieval of the de-skew value from the DT has also been
> updated to reflect the binding changes.
> 
> Changes in v4:
> 
>   - ti,tfp410.yaml:
>     - "ports" node set back as required (Laurent Pinchart). This means
>       that dove-sbc-a510.dts will not comply with the binding and will
>       have to be fixed at some point.
> 
> The bindings have been tested with:
> 
>   make dt_binding_check ARCH=<arch> DT_SCHEMA_FILES=<...ti,tfp410.yaml>
>   make dtbs_check ARCH=<arch> DT_SCHEMA_FILES=<...ti,tfp410.yaml>
> 
> for <arch> = arm and arm64.
> This uncovered a number of dts files that use the TFP410 but not through
> I2C and don't define the ti,deskew property. These should also be fixed.
> 
> Ricardo Cañuelo (4):
>   dt-bindings: display: ti,tfp410.txt: convert to yaml
>   dt-bindings: display: ti,tfp410.yaml: Redefine ti,deskew property
>   drm/bridge: tfp410: fix de-skew value retrieval from DT
>   drm/bridge: tfp410: Fix setup and hold time calculation

Thanks for following up and this.
Applied to drm-misc-next.

	Sam

> 
>  .../bindings/display/bridge/ti,tfp410.txt     |  66 ---------
>  .../bindings/display/bridge/ti,tfp410.yaml    | 131 ++++++++++++++++++
>  drivers/gpu/drm/bridge/ti-tfp410.c            |  10 +-
>  3 files changed, 136 insertions(+), 71 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/display/bridge/ti,tfp410.txt
>  create mode 100644 Documentation/devicetree/bindings/display/bridge/ti,tfp410.yaml
> 
> -- 
> 2.18.0
> 
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

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

end of thread, other threads:[~2020-06-20 19:10 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-17  9:46 [PATCH v4 0/4] dt-bindings: display: ti,tfp410.txt: convert to yaml Ricardo Cañuelo
2020-06-17  9:46 ` [PATCH v4 1/4] " Ricardo Cañuelo
2020-06-17  9:46 ` [PATCH v4 2/4] dt-bindings: display: ti, tfp410.yaml: Redefine ti, deskew property Ricardo Cañuelo
2020-06-17  9:46 ` [PATCH v4 3/4] drm/bridge: tfp410: fix de-skew value retrieval from DT Ricardo Cañuelo
2020-06-17  9:46 ` [PATCH v4 4/4] drm/bridge: tfp410: Fix setup and hold time calculation Ricardo Cañuelo
2020-06-20 19:10 ` [PATCH v4 0/4] dt-bindings: display: ti,tfp410.txt: convert to yaml Sam Ravnborg

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).