[PATCH] dt-bindings: display: panel: add common definition of ports

Krzysztof Kozlowski posted 1 patch 2 years, 8 months ago
.../bindings/display/panel/panel-common.yaml     | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
[PATCH] dt-bindings: display: panel: add common definition of ports
Posted by Krzysztof Kozlowski 2 years, 8 months ago
Few panel bindings for dual-link connections just type "ports: true",
which does not enforce any type.  Add common definition of ports, so the
type will be fixed.

Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

---

Cc: Konrad Dybcio <konrad.dybcio@linaro.org>
---
 .../bindings/display/panel/panel-common.yaml     | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/Documentation/devicetree/bindings/display/panel/panel-common.yaml b/Documentation/devicetree/bindings/display/panel/panel-common.yaml
index 5b38dc89cb21..ad62d34e6fa3 100644
--- a/Documentation/devicetree/bindings/display/panel/panel-common.yaml
+++ b/Documentation/devicetree/bindings/display/panel/panel-common.yaml
@@ -70,6 +70,16 @@ properties:
   port:
     $ref: /schemas/graph.yaml#/properties/port
 
+  # For dual-link connections
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+    patternProperties:
+      "^port@[0-9a-f]+$":
+        $ref: /schemas/graph.yaml#/$defs/port-base
+
+    required:
+      - port@0
+
   ddc-i2c-bus:
     $ref: /schemas/types.yaml#/definitions/phandle
     description:
@@ -154,6 +164,12 @@ dependencies:
   width-mm: [ height-mm ]
   height-mm: [ width-mm ]
 
+allOf:
+  - not:
+      required:
+        - port
+        - ports
+
 additionalProperties: true
 
 ...
-- 
2.34.1
Re: [PATCH] dt-bindings: display: panel: add common definition of ports
Posted by Rob Herring 2 years, 8 months ago
On Sun, Apr 16, 2023 at 05:39:29PM +0200, Krzysztof Kozlowski wrote:
> Few panel bindings for dual-link connections just type "ports: true",
> which does not enforce any type.  Add common definition of ports, so the
> type will be fixed.
> 
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> 
> ---
> 
> Cc: Konrad Dybcio <konrad.dybcio@linaro.org>
> ---
>  .../bindings/display/panel/panel-common.yaml     | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/display/panel/panel-common.yaml b/Documentation/devicetree/bindings/display/panel/panel-common.yaml
> index 5b38dc89cb21..ad62d34e6fa3 100644
> --- a/Documentation/devicetree/bindings/display/panel/panel-common.yaml
> +++ b/Documentation/devicetree/bindings/display/panel/panel-common.yaml
> @@ -70,6 +70,16 @@ properties:
>    port:
>      $ref: /schemas/graph.yaml#/properties/port
>  
> +  # For dual-link connections
> +  ports:
> +    $ref: /schemas/graph.yaml#/properties/ports
> +    patternProperties:
> +      "^port@[0-9a-f]+$":
> +        $ref: /schemas/graph.yaml#/$defs/port-base

This allows any undocumented property.

> +
> +    required:
> +      - port@0
> +

I don't think this should be added here because users must define what 
each port is. With it here, we're going to validate the nodes twice as 
well. Same can be said for 'port' though. It can't be extended though.

I originally wanted to a do a meta-schema to enforce some of this, but 
there's just too many exceptions.

Rob
Re: [PATCH] dt-bindings: display: panel: add common definition of ports
Posted by Krzysztof Kozlowski 2 years, 8 months ago
On 19/04/2023 00:26, Rob Herring wrote:
> On Sun, Apr 16, 2023 at 05:39:29PM +0200, Krzysztof Kozlowski wrote:
>> Few panel bindings for dual-link connections just type "ports: true",
>> which does not enforce any type.  Add common definition of ports, so the
>> type will be fixed.
>>
>> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
>>
>> ---
>>
>> Cc: Konrad Dybcio <konrad.dybcio@linaro.org>
>> ---
>>  .../bindings/display/panel/panel-common.yaml     | 16 ++++++++++++++++
>>  1 file changed, 16 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/display/panel/panel-common.yaml b/Documentation/devicetree/bindings/display/panel/panel-common.yaml
>> index 5b38dc89cb21..ad62d34e6fa3 100644
>> --- a/Documentation/devicetree/bindings/display/panel/panel-common.yaml
>> +++ b/Documentation/devicetree/bindings/display/panel/panel-common.yaml
>> @@ -70,6 +70,16 @@ properties:
>>    port:
>>      $ref: /schemas/graph.yaml#/properties/port
>>  
>> +  # For dual-link connections
>> +  ports:
>> +    $ref: /schemas/graph.yaml#/properties/ports
>> +    patternProperties:
>> +      "^port@[0-9a-f]+$":
>> +        $ref: /schemas/graph.yaml#/$defs/port-base
> 
> This allows any undocumented property.

Yes, which I hope the device schema (using this panel-common) will
narrow with additionalProperties: false.

I can make it explicit: additionalProperties: true.

Otherwise, how do I allow custom properties like:
Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml

> 
>> +
>> +    required:
>> +      - port@0
>> +
> 
> I don't think this should be added here because users must define what 
> each port is. With it here, we're going to validate the nodes twice as 
> well. Same can be said for 'port' though. It can't be extended though.

So you propose to drop entire "ports" here and expect every panel schema
to define it instead?

Best regards,
Krzysztof
Re: [PATCH] dt-bindings: display: panel: add common definition of ports
Posted by Rob Herring 2 years, 8 months ago
On Wed, Apr 19, 2023 at 10:56:55AM +0200, Krzysztof Kozlowski wrote:
> On 19/04/2023 00:26, Rob Herring wrote:
> > On Sun, Apr 16, 2023 at 05:39:29PM +0200, Krzysztof Kozlowski wrote:
> >> Few panel bindings for dual-link connections just type "ports: true",
> >> which does not enforce any type.  Add common definition of ports, so the
> >> type will be fixed.
> >>
> >> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> >>
> >> ---
> >>
> >> Cc: Konrad Dybcio <konrad.dybcio@linaro.org>
> >> ---
> >>  .../bindings/display/panel/panel-common.yaml     | 16 ++++++++++++++++
> >>  1 file changed, 16 insertions(+)
> >>
> >> diff --git a/Documentation/devicetree/bindings/display/panel/panel-common.yaml b/Documentation/devicetree/bindings/display/panel/panel-common.yaml
> >> index 5b38dc89cb21..ad62d34e6fa3 100644
> >> --- a/Documentation/devicetree/bindings/display/panel/panel-common.yaml
> >> +++ b/Documentation/devicetree/bindings/display/panel/panel-common.yaml
> >> @@ -70,6 +70,16 @@ properties:
> >>    port:
> >>      $ref: /schemas/graph.yaml#/properties/port
> >>  
> >> +  # For dual-link connections
> >> +  ports:
> >> +    $ref: /schemas/graph.yaml#/properties/ports
> >> +    patternProperties:
> >> +      "^port@[0-9a-f]+$":
> >> +        $ref: /schemas/graph.yaml#/$defs/port-base
> > 
> > This allows any undocumented property.
> 
> Yes, which I hope the device schema (using this panel-common) will
> narrow with additionalProperties: false.
> 
> I can make it explicit: additionalProperties: true.
> 
> Otherwise, how do I allow custom properties like:
> Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml
> 
> > 
> >> +
> >> +    required:
> >> +      - port@0
> >> +
> > 
> > I don't think this should be added here because users must define what 
> > each port is. With it here, we're going to validate the nodes twice as 
> > well. Same can be said for 'port' though. It can't be extended though.
> 
> So you propose to drop entire "ports" here and expect every panel schema
> to define it instead?

Only those with more than 1 port or extra port/endpoint properties. If 
neither of those are true, then they can use just 'port'. Otherwise, 
all those panel bindings already have to define the port nodes already.

Rob
Re: [PATCH] dt-bindings: display: panel: add common definition of ports
Posted by Neil Armstrong 2 years, 8 months ago
On 16/04/2023 17:39, Krzysztof Kozlowski wrote:
> Few panel bindings for dual-link connections just type "ports: true",
> which does not enforce any type.  Add common definition of ports, so the
> type will be fixed.
> 
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> 
> ---
> 
> Cc: Konrad Dybcio <konrad.dybcio@linaro.org>
> ---
>   .../bindings/display/panel/panel-common.yaml     | 16 ++++++++++++++++
>   1 file changed, 16 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/display/panel/panel-common.yaml b/Documentation/devicetree/bindings/display/panel/panel-common.yaml
> index 5b38dc89cb21..ad62d34e6fa3 100644
> --- a/Documentation/devicetree/bindings/display/panel/panel-common.yaml
> +++ b/Documentation/devicetree/bindings/display/panel/panel-common.yaml
> @@ -70,6 +70,16 @@ properties:
>     port:
>       $ref: /schemas/graph.yaml#/properties/port
>   
> +  # For dual-link connections
> +  ports:
> +    $ref: /schemas/graph.yaml#/properties/ports
> +    patternProperties:
> +      "^port@[0-9a-f]+$":
> +        $ref: /schemas/graph.yaml#/$defs/port-base
> +
> +    required:
> +      - port@0
> +
>     ddc-i2c-bus:
>       $ref: /schemas/types.yaml#/definitions/phandle
>       description:
> @@ -154,6 +164,12 @@ dependencies:
>     width-mm: [ height-mm ]
>     height-mm: [ width-mm ]
>   
> +allOf:
> +  - not:
> +      required:
> +        - port
> +        - ports
> +
>   additionalProperties: true
>   
>   ...

Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
Re: [PATCH] dt-bindings: display: panel: add common definition of ports
Posted by Konrad Dybcio 2 years, 8 months ago

On 16.04.2023 17:39, Krzysztof Kozlowski wrote:
> Few panel bindings for dual-link connections just type "ports: true",
> which does not enforce any type.  Add common definition of ports, so the
> type will be fixed.
> 
> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> 
> ---
Acked-by: Konrad Dybcio <konrad.dybcio@linaro.org>

Konrad
> 
> Cc: Konrad Dybcio <konrad.dybcio@linaro.org>
> ---
>  .../bindings/display/panel/panel-common.yaml     | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/display/panel/panel-common.yaml b/Documentation/devicetree/bindings/display/panel/panel-common.yaml
> index 5b38dc89cb21..ad62d34e6fa3 100644
> --- a/Documentation/devicetree/bindings/display/panel/panel-common.yaml
> +++ b/Documentation/devicetree/bindings/display/panel/panel-common.yaml
> @@ -70,6 +70,16 @@ properties:
>    port:
>      $ref: /schemas/graph.yaml#/properties/port
>  
> +  # For dual-link connections
> +  ports:
> +    $ref: /schemas/graph.yaml#/properties/ports
> +    patternProperties:
> +      "^port@[0-9a-f]+$":
> +        $ref: /schemas/graph.yaml#/$defs/port-base
> +
> +    required:
> +      - port@0
> +
>    ddc-i2c-bus:
>      $ref: /schemas/types.yaml#/definitions/phandle
>      description:
> @@ -154,6 +164,12 @@ dependencies:
>    width-mm: [ height-mm ]
>    height-mm: [ width-mm ]
>  
> +allOf:
> +  - not:
> +      required:
> +        - port
> +        - ports
> +
>  additionalProperties: true
>  
>  ...