[PATCH v2 2/2] dt-bindings: drm/bridge: ti-sn65dsi86: Improve the yaml validation

From: Douglas Anderson
Date: Wed May 06 2020 - 17:03:09 EST


This patch adds the following checks to the yaml:
- Remapping of the eDP output lanes is now limited to the subset of
remappings that the hardware supports.
- No more additional properties can be added under 'ports'.

This patch fixes the following bugs in the original yaml conversion:
- Fixed dependency between 'data-lanes' and 'lane-polarities', which
was backwards. Now you can only specify 'lane-polarities' if you
specified 'data-lanes'. I could have sworn I tried this before.
- We can't remap input lanes in this hardware.

This patch doesn't do, but if someone knew how I'd love to:
- Make sure if we have both 'lane-polarities' and 'data-lanes' that
they have the same number of elements.

Signed-off-by: Douglas Anderson <dianders@xxxxxxxxxxxx>
---
This patch could be squashed atop the patch adding the yaml [1]. I'm
sending separately for now to avoid churning the series another time.

[1] https://lore.kernel.org/r/20200430124442.v4.4.Ifcdc4ecb12742a27862744ee1e8753cb95a38a7f@changeid

Changes in v2:
- ("... Improve the yaml validation") new for v2.

.../bindings/display/bridge/ti,sn65dsi86.yaml | 74 ++++++++++---------
1 file changed, 40 insertions(+), 34 deletions(-)

diff --git a/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml b/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml
index 75c4e8b8e4b7..be10e8cf31e1 100644
--- a/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml
+++ b/Documentation/devicetree/bindings/display/bridge/ti,sn65dsi86.yaml
@@ -72,6 +72,7 @@ properties:

ports:
type: object
+ additionalProperties: false

properties:
"#address-cells":
@@ -94,33 +95,9 @@ properties:
endpoint:
type: object
additionalProperties: false
-
properties:
remote-endpoint: true

- data-lanes:
- minItems: 1
- maxItems: 4
- items:
- enum:
- - 0
- - 1
- - 2
- - 3
- description: See ../../media/video-interface.txt
-
- lane-polarities:
- minItems: 1
- maxItems: 4
- items:
- enum:
- - 0
- - 1
- description: See ../../media/video-interface.txt
-
- dependencies:
- data-lanes: [lane-polarities]
-
required:
- reg

@@ -143,15 +120,44 @@ properties:
remote-endpoint: true

data-lanes:
- minItems: 1
- maxItems: 4
- items:
- enum:
- - 0
- - 1
- - 2
- - 3
- description: See ../../media/video-interface.txt
+ oneOf:
+ - minItems: 1
+ maxItems: 1
+ uniqueItems: true
+ items:
+ enum:
+ - 0
+ - 1
+ description:
+ If you have 1 logical lane the bridge supports routing
+ to either port 0 or port 1. Port 0 is suggested.
+ See ../../media/video-interface.txt for details.
+
+ - minItems: 2
+ maxItems: 2
+ uniqueItems: true
+ items:
+ enum:
+ - 0
+ - 1
+ description:
+ If you have 2 logical lanes the bridge supports
+ reordering but only on physical ports 0 and 1.
+ See ../../media/video-interface.txt for details.
+
+ - minItems: 4
+ maxItems: 4
+ uniqueItems: true
+ items:
+ enum:
+ - 0
+ - 1
+ - 2
+ - 3
+ description:
+ If you have 4 logical lanes the bridge supports
+ reordering in any way.
+ See ../../media/video-interface.txt for details.

lane-polarities:
minItems: 1
@@ -163,7 +169,7 @@ properties:
description: See ../../media/video-interface.txt

dependencies:
- data-lanes: [lane-polarities]
+ lane-polarities: [data-lanes]

required:
- reg
--
2.26.2.645.ge9eca65c58-goog