diff mbox series

dt-bindings: display: convert faraday,tve200 to YAML

Message ID 20210511165448.422987-1-clabbe@baylibre.com
State Changes Requested
Headers show
Series dt-bindings: display: convert faraday,tve200 to YAML | expand

Checks

Context Check Description
robh/checkpatch warning total: 0 errors, 2 warnings, 92 lines checked
robh/dt-meta-schema success
robh/dtbs-check success

Commit Message

Corentin Labbe May 11, 2021, 4:54 p.m. UTC
Converts display/faraday,tve200.txt to yaml.

Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
---
 .../bindings/display/faraday,tve200.txt       | 54 -----------
 .../bindings/display/faraday,tve200.yaml      | 92 +++++++++++++++++++
 2 files changed, 92 insertions(+), 54 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/display/faraday,tve200.txt
 create mode 100644 Documentation/devicetree/bindings/display/faraday,tve200.yaml

Comments

Rob Herring May 18, 2021, 12:26 a.m. UTC | #1
On Tue, May 11, 2021 at 04:54:48PM +0000, Corentin Labbe wrote:
> Converts display/faraday,tve200.txt to yaml.
> 
> Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
> ---
>  .../bindings/display/faraday,tve200.txt       | 54 -----------
>  .../bindings/display/faraday,tve200.yaml      | 92 +++++++++++++++++++
>  2 files changed, 92 insertions(+), 54 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/display/faraday,tve200.txt
>  create mode 100644 Documentation/devicetree/bindings/display/faraday,tve200.yaml
> 
> diff --git a/Documentation/devicetree/bindings/display/faraday,tve200.txt b/Documentation/devicetree/bindings/display/faraday,tve200.txt
> deleted file mode 100644
> index 82e3bc0b7485..000000000000
> --- a/Documentation/devicetree/bindings/display/faraday,tve200.txt
> +++ /dev/null
> @@ -1,54 +0,0 @@
> -* Faraday TV Encoder TVE200
> -
> -Required properties:
> -
> -- compatible: must be one of:
> -	"faraday,tve200"
> -	"cortina,gemini-tvc", "faraday,tve200"
> -
> -- reg: base address and size of the control registers block
> -
> -- interrupts: contains an interrupt specifier for the interrupt
> -	line from the TVE200
> -
> -- clock-names: should contain "PCLK" for the clock line clocking the
> -	silicon and "TVE" for the 27MHz clock to the video driver
> -
> -- clocks: contains phandle and clock specifier pairs for the entries
> -	in the clock-names property. See
> -	Documentation/devicetree/bindings/clock/clock-bindings.txt
> -
> -Optional properties:
> -
> -- resets: contains the reset line phandle for the block
> -
> -Required sub-nodes:
> -
> -- port: describes LCD panel signals, following the common binding
> -	for video transmitter interfaces; see
> -	Documentation/devicetree/bindings/media/video-interfaces.txt
> -	This port should have the properties:
> -	reg = <0>;
> -	It should have one endpoint connected to a remote endpoint where
> -	the display is connected.
> -
> -Example:
> -
> -display-controller@6a000000 {
> -	#address-cells = <1>;
> -	#size-cells = <0>;
> -	compatible = "faraday,tve200";
> -	reg = <0x6a000000 0x1000>;
> -	interrupts = <13 IRQ_TYPE_EDGE_RISING>;
> -	resets = <&syscon GEMINI_RESET_TVC>;
> -	clocks = <&syscon GEMINI_CLK_GATE_TVC>,
> -		 <&syscon GEMINI_CLK_TVC>;
> -	clock-names = "PCLK", "TVE";
> -
> -	port@0 {
> -		reg = <0>;
> -		display_out: endpoint {
> -			remote-endpoint = <&panel_in>;
> -		};
> -	};
> -};
> diff --git a/Documentation/devicetree/bindings/display/faraday,tve200.yaml b/Documentation/devicetree/bindings/display/faraday,tve200.yaml
> new file mode 100644
> index 000000000000..3ab51e7e72af
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/faraday,tve200.yaml
> @@ -0,0 +1,92 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/display/faraday,tve200.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Faraday TV Encoder TVE200
> +
> +maintainers:
> +  - Linus Walleij <linus.walleij@linaro.org>
> +
> +properties:
> +  compatible:
> +    oneOf:
> +      - const: faraday,tve200
> +      - items:
> +          - const: cortina,gemini-tvc
> +          - const: faraday,tve200
> +
> +  reg:
> +    minItems: 1

maxItems: 1

They evaluate the same, but maxItems seems a bit more logical. 

> +
> +  interrupts:
> +    minItems: 1
> +
> +  clock-names:
> +    items:
> +      - const: PCLK
> +      - const: TVE
> +
> +  clocks:
> +    minItems: 2
> +
> +  resets:
> +    minItems: 1
> +
> +  "#address-cells":
> +    const: 1
> +
> +  "#size-cells":
> +    const: 0
> +
> +patternProperties:
> +  "^port@[0-9]+$":

Should be just 'port' or 'port@0', but really the former is preferred 
when only 1. 

Use the graph binding:

$ref: /schemas/graph.yaml#/properties/port

> +    type: object
> +    description: describes LCD panel signals, following the common binding

But this is not an LCD panel...

> +      for video transmitter interfaces; see
> +      Documentation/devicetree/bindings/media/video-interfaces.txt

Drop this reference. It's now a schema, but this isn't using anything 
from it.

> +      It should have one endpoint connected to a remote endpoint where
> +      the display is connected.
> +
> +    properties:
> +      reg:
> +        const: 0
> +
> +    required:
> +      - reg
> +
> +required:
> +  - compatible
> +  - reg
> +  - interrupts
> +  - clock-names
> +  - clocks
> +  - "#address-cells"
> +  - "#size-cells"
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    #include <dt-bindings/clock/cortina,gemini-clock.h>
> +    #include <dt-bindings/interrupt-controller/irq.h>
> +    #include <dt-bindings/reset/cortina,gemini-reset.h>
> +    display-controller@6a000000 {
> +      #address-cells = <1>;
> +      #size-cells = <0>;
> +      compatible = "faraday,tve200";
> +      reg = <0x6a000000 0x1000>;
> +      interrupts = <13 IRQ_TYPE_EDGE_RISING>;
> +      resets = <&syscon GEMINI_RESET_TVC>;
> +      clocks = <&syscon GEMINI_CLK_GATE_TVC>,
> +               <&syscon GEMINI_CLK_TVC>;
> +      clock-names = "PCLK", "TVE";
> +
> +      port@0 {
> +        reg = <0>;
> +        display_out: endpoint {
> +          remote-endpoint = <&panel_in>;
> +        };
> +      };
> +    };
> -- 
> 2.26.3
>
Corentin Labbe May 18, 2021, 6:38 p.m. UTC | #2
Le Mon, May 17, 2021 at 07:26:24PM -0500, Rob Herring a écrit :
> On Tue, May 11, 2021 at 04:54:48PM +0000, Corentin Labbe wrote:
> > Converts display/faraday,tve200.txt to yaml.
> > 
> > Signed-off-by: Corentin Labbe <clabbe@baylibre.com>
> > ---
> >  .../bindings/display/faraday,tve200.txt       | 54 -----------
> >  .../bindings/display/faraday,tve200.yaml      | 92 +++++++++++++++++++
> >  2 files changed, 92 insertions(+), 54 deletions(-)
> >  delete mode 100644 Documentation/devicetree/bindings/display/faraday,tve200.txt
> >  create mode 100644 Documentation/devicetree/bindings/display/faraday,tve200.yaml
> > 
> > diff --git a/Documentation/devicetree/bindings/display/faraday,tve200.txt b/Documentation/devicetree/bindings/display/faraday,tve200.txt
> > deleted file mode 100644
> > index 82e3bc0b7485..000000000000
> > --- a/Documentation/devicetree/bindings/display/faraday,tve200.txt
> > +++ /dev/null
> > @@ -1,54 +0,0 @@
> > -* Faraday TV Encoder TVE200
> > -
> > -Required properties:
> > -
> > -- compatible: must be one of:
> > -	"faraday,tve200"
> > -	"cortina,gemini-tvc", "faraday,tve200"
> > -
> > -- reg: base address and size of the control registers block
> > -
> > -- interrupts: contains an interrupt specifier for the interrupt
> > -	line from the TVE200
> > -
> > -- clock-names: should contain "PCLK" for the clock line clocking the
> > -	silicon and "TVE" for the 27MHz clock to the video driver
> > -
> > -- clocks: contains phandle and clock specifier pairs for the entries
> > -	in the clock-names property. See
> > -	Documentation/devicetree/bindings/clock/clock-bindings.txt
> > -
> > -Optional properties:
> > -
> > -- resets: contains the reset line phandle for the block
> > -
> > -Required sub-nodes:
> > -
> > -- port: describes LCD panel signals, following the common binding
> > -	for video transmitter interfaces; see
> > -	Documentation/devicetree/bindings/media/video-interfaces.txt
> > -	This port should have the properties:
> > -	reg = <0>;
> > -	It should have one endpoint connected to a remote endpoint where
> > -	the display is connected.
> > -
> > -Example:
> > -
> > -display-controller@6a000000 {
> > -	#address-cells = <1>;
> > -	#size-cells = <0>;
> > -	compatible = "faraday,tve200";
> > -	reg = <0x6a000000 0x1000>;
> > -	interrupts = <13 IRQ_TYPE_EDGE_RISING>;
> > -	resets = <&syscon GEMINI_RESET_TVC>;
> > -	clocks = <&syscon GEMINI_CLK_GATE_TVC>,
> > -		 <&syscon GEMINI_CLK_TVC>;
> > -	clock-names = "PCLK", "TVE";
> > -
> > -	port@0 {
> > -		reg = <0>;
> > -		display_out: endpoint {
> > -			remote-endpoint = <&panel_in>;
> > -		};
> > -	};
> > -};
> > diff --git a/Documentation/devicetree/bindings/display/faraday,tve200.yaml b/Documentation/devicetree/bindings/display/faraday,tve200.yaml
> > new file mode 100644
> > index 000000000000..3ab51e7e72af
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/display/faraday,tve200.yaml
> > @@ -0,0 +1,92 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/display/faraday,tve200.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Faraday TV Encoder TVE200
> > +
> > +maintainers:
> > +  - Linus Walleij <linus.walleij@linaro.org>
> > +
> > +properties:
> > +  compatible:
> > +    oneOf:
> > +      - const: faraday,tve200
> > +      - items:
> > +          - const: cortina,gemini-tvc
> > +          - const: faraday,tve200
> > +
> > +  reg:
> > +    minItems: 1
> 
> maxItems: 1
> 
> They evaluate the same, but maxItems seems a bit more logical. 
> 
> > +
> > +  interrupts:
> > +    minItems: 1
> > +
> > +  clock-names:
> > +    items:
> > +      - const: PCLK
> > +      - const: TVE
> > +
> > +  clocks:
> > +    minItems: 2
> > +
> > +  resets:
> > +    minItems: 1
> > +
> > +  "#address-cells":
> > +    const: 1
> > +
> > +  "#size-cells":
> > +    const: 0
> > +
> > +patternProperties:
> > +  "^port@[0-9]+$":
> 
> Should be just 'port' or 'port@0', but really the former is preferred 
> when only 1. 
> 
> Use the graph binding:
> 
> $ref: /schemas/graph.yaml#/properties/port
> 

I have a problem:

I get the following warning:
/usr/src/linux-next/arch/arm/boot/dts/gemini.dtsi:410.31-423.5: Warning (graph_child_address): /soc/display-controller@6a000000: graph node has single child node 'port@0', #address-cells/#size-cells are not necessary
  also defined at /usr/src/linux-next/arch/arm/boot/dts/gemini-dlink-dir-685.dts:492.31-501.5

But if I remove them!
/usr/src/linux-next/arch/arm/boot/dts/gemini-dlink-dir-685.dts:496.5-15: Warning (reg_format): /soc/display-controller@6a000000/port@0:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
arch/arm/boot/dts/gemini-dlink-dir-685.dt.yaml: Warning (pci_device_reg): Failed prerequisite 'reg_format'
arch/arm/boot/dts/gemini-dlink-dir-685.dt.yaml: Warning (pci_device_bus_num): Failed prerequisite 'reg_format'
arch/arm/boot/dts/gemini-dlink-dir-685.dt.yaml: Warning (simple_bus_reg): Failed prerequisite 'reg_format'
arch/arm/boot/dts/gemini-dlink-dir-685.dt.yaml: Warning (i2c_bus_reg): Failed prerequisite 'reg_format'
arch/arm/boot/dts/gemini-dlink-dir-685.dt.yaml: Warning (spi_bus_reg): Failed prerequisite 'reg_format'
/usr/src/linux-next/arch/arm/boot/dts/gemini-dlink-dir-685.dts:495.11-500.6: Warning (avoid_default_addr_size): /soc/display-controller@6a000000/port@0: Relying on default #address-cells value
/usr/src/linux-next/arch/arm/boot/dts/gemini-dlink-dir-685.dts:495.11-500.6: Warning (avoid_default_addr_size): /soc/display-controller@6a000000/port@0: Relying on default #size-cells value
arch/arm/boot/dts/gemini-dlink-dir-685.dt.yaml: Warning (avoid_unnecessary_addr_size): Failed prerequisite 'avoid_default_addr_size'
arch/arm/boot/dts/gemini-dlink-dir-685.dt.yaml: Warning (unique_unit_address): Failed prerequisite 'avoid_default_addr_size'
/usr/src/linux-next/arch/arm/boot/dts/gemini-dlink-dir-685.dts:495.11-500.6: Warning (graph_port): /soc/display-controller@6a000000/port@0: graph node '#address-cells' is -1, must be 1
/usr/src/linux-next/arch/arm/boot/dts/gemini-dlink-dir-685.dts:495.11-500.6: Warning (graph_port): /soc/display-controller@6a000000/port@0: graph node '#size-cells' is -1, must be 0

The only solution is to remove "reg = <0>;" and calling the node "port".
Does it is acceptable ?
Linus Walleij May 18, 2021, 9:55 p.m. UTC | #3
On Tue, May 18, 2021 at 8:38 PM LABBE Corentin <clabbe@baylibre.com> wrote:

> The only solution is to remove "reg = <0>;" and calling the node "port".
> Does it is acceptable ?

It's what I've done in the past at least so looks like the right thing to me.
It is only used in this device tree:
arch/arm/boot/dts/gemini-dlink-dir-685.dts
if you send me a patch to change port@0
to just port then I'll merge it pronto. (I can apply this patch to the DRM
misc tree as well when Rob thing it's fine.)

Yours,
Linus Walleij
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/display/faraday,tve200.txt b/Documentation/devicetree/bindings/display/faraday,tve200.txt
deleted file mode 100644
index 82e3bc0b7485..000000000000
--- a/Documentation/devicetree/bindings/display/faraday,tve200.txt
+++ /dev/null
@@ -1,54 +0,0 @@ 
-* Faraday TV Encoder TVE200
-
-Required properties:
-
-- compatible: must be one of:
-	"faraday,tve200"
-	"cortina,gemini-tvc", "faraday,tve200"
-
-- reg: base address and size of the control registers block
-
-- interrupts: contains an interrupt specifier for the interrupt
-	line from the TVE200
-
-- clock-names: should contain "PCLK" for the clock line clocking the
-	silicon and "TVE" for the 27MHz clock to the video driver
-
-- clocks: contains phandle and clock specifier pairs for the entries
-	in the clock-names property. See
-	Documentation/devicetree/bindings/clock/clock-bindings.txt
-
-Optional properties:
-
-- resets: contains the reset line phandle for the block
-
-Required sub-nodes:
-
-- port: describes LCD panel signals, following the common binding
-	for video transmitter interfaces; see
-	Documentation/devicetree/bindings/media/video-interfaces.txt
-	This port should have the properties:
-	reg = <0>;
-	It should have one endpoint connected to a remote endpoint where
-	the display is connected.
-
-Example:
-
-display-controller@6a000000 {
-	#address-cells = <1>;
-	#size-cells = <0>;
-	compatible = "faraday,tve200";
-	reg = <0x6a000000 0x1000>;
-	interrupts = <13 IRQ_TYPE_EDGE_RISING>;
-	resets = <&syscon GEMINI_RESET_TVC>;
-	clocks = <&syscon GEMINI_CLK_GATE_TVC>,
-		 <&syscon GEMINI_CLK_TVC>;
-	clock-names = "PCLK", "TVE";
-
-	port@0 {
-		reg = <0>;
-		display_out: endpoint {
-			remote-endpoint = <&panel_in>;
-		};
-	};
-};
diff --git a/Documentation/devicetree/bindings/display/faraday,tve200.yaml b/Documentation/devicetree/bindings/display/faraday,tve200.yaml
new file mode 100644
index 000000000000..3ab51e7e72af
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/faraday,tve200.yaml
@@ -0,0 +1,92 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/faraday,tve200.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Faraday TV Encoder TVE200
+
+maintainers:
+  - Linus Walleij <linus.walleij@linaro.org>
+
+properties:
+  compatible:
+    oneOf:
+      - const: faraday,tve200
+      - items:
+          - const: cortina,gemini-tvc
+          - const: faraday,tve200
+
+  reg:
+    minItems: 1
+
+  interrupts:
+    minItems: 1
+
+  clock-names:
+    items:
+      - const: PCLK
+      - const: TVE
+
+  clocks:
+    minItems: 2
+
+  resets:
+    minItems: 1
+
+  "#address-cells":
+    const: 1
+
+  "#size-cells":
+    const: 0
+
+patternProperties:
+  "^port@[0-9]+$":
+    type: object
+    description: describes LCD panel signals, following the common binding
+      for video transmitter interfaces; see
+      Documentation/devicetree/bindings/media/video-interfaces.txt
+      It should have one endpoint connected to a remote endpoint where
+      the display is connected.
+
+    properties:
+      reg:
+        const: 0
+
+    required:
+      - reg
+
+required:
+  - compatible
+  - reg
+  - interrupts
+  - clock-names
+  - clocks
+  - "#address-cells"
+  - "#size-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/cortina,gemini-clock.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+    #include <dt-bindings/reset/cortina,gemini-reset.h>
+    display-controller@6a000000 {
+      #address-cells = <1>;
+      #size-cells = <0>;
+      compatible = "faraday,tve200";
+      reg = <0x6a000000 0x1000>;
+      interrupts = <13 IRQ_TYPE_EDGE_RISING>;
+      resets = <&syscon GEMINI_RESET_TVC>;
+      clocks = <&syscon GEMINI_CLK_GATE_TVC>,
+               <&syscon GEMINI_CLK_TVC>;
+      clock-names = "PCLK", "TVE";
+
+      port@0 {
+        reg = <0>;
+        display_out: endpoint {
+          remote-endpoint = <&panel_in>;
+        };
+      };
+    };