diff mbox series

[v4,08/13] dt-bindings: display: Document dual-link LVDS display common properties

Message ID 20241028023740.19732-9-victor.liu@nxp.com (mailing list archive)
State New
Headers show
Series Add ITE IT6263 LVDS to HDMI converter support | expand

Commit Message

Liu Ying Oct. 28, 2024, 2:37 a.m. UTC
Dual-link LVDS displays receive odd pixels and even pixels separately from
dual LVDS links.  One link receives odd pixels and the other receives even
pixels.  Some of those displays may also use only one LVDS link to receive
all pixels, being odd and even agnostic.  Document common properties for
those displays by extending LVDS display common properties defined in
lvds.yaml.

Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Signed-off-by: Liu Ying <victor.liu@nxp.com>
---
v4:
* Squash change for advantech,idk-2121wr.yaml and
  panel-simple-lvds-dual-ports.yaml with lvds-dual-ports.yaml.  (Rob)
* Improve description in lvds-dual-ports.yaml.  (Krzysztof)

v3:
* New patch.  (Dmitry)

 .../bindings/display/lvds-dual-ports.yaml     | 76 +++++++++++++++++++
 .../display/panel/advantech,idk-2121wr.yaml   | 14 +---
 .../panel/panel-simple-lvds-dual-ports.yaml   | 20 +----
 3 files changed, 78 insertions(+), 32 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/display/lvds-dual-ports.yaml

Comments

Liu Ying Oct. 29, 2024, 6:16 a.m. UTC | #1
On 10/28/2024, Liu Ying wrote:
> Dual-link LVDS displays receive odd pixels and even pixels separately from
> dual LVDS links.  One link receives odd pixels and the other receives even
> pixels.  Some of those displays may also use only one LVDS link to receive
> all pixels, being odd and even agnostic.  Document common properties for
> those displays by extending LVDS display common properties defined in
> lvds.yaml.
> 
> Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> Signed-off-by: Liu Ying <victor.liu@nxp.com>
> ---
> v4:
> * Squash change for advantech,idk-2121wr.yaml and
>   panel-simple-lvds-dual-ports.yaml with lvds-dual-ports.yaml.  (Rob)
> * Improve description in lvds-dual-ports.yaml.  (Krzysztof)
> 
> v3:
> * New patch.  (Dmitry)
> 
>  .../bindings/display/lvds-dual-ports.yaml     | 76 +++++++++++++++++++
>  .../display/panel/advantech,idk-2121wr.yaml   | 14 +---
>  .../panel/panel-simple-lvds-dual-ports.yaml   | 20 +----
>  3 files changed, 78 insertions(+), 32 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> 
> diff --git a/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> new file mode 100644
> index 000000000000..5f7a30640404
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> @@ -0,0 +1,76 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/display/lvds-dual-ports.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Dual-link LVDS Display Common Properties
> +
> +maintainers:
> +  - Liu Ying <victor.liu@nxp.com>
> +
> +description: |
> +  Common properties for LVDS displays with dual LVDS links. Extend LVDS display
> +  common properties defined in lvds.yaml.
> +
> +  Dual-link LVDS displays receive odd pixels and even pixels separately from
> +  the dual LVDS links. One link receives odd pixels and the other receives
> +  even pixels. Some of those displays may also use only one LVDS link to
> +  receive all pixels, being odd and even agnostic.
> +
> +allOf:
> +  - $ref: lvds.yaml#
> +
> +properties:
> +  ports:
> +    $ref: /schemas/graph.yaml#/properties/ports
> +
> +    properties:
> +      port@0:
> +        $ref: /schemas/graph.yaml#/$defs/port-base
> +        unevaluatedProperties: false
> +        description: the first LVDS input link
> +
> +        properties:
> +          dual-lvds-odd-pixels:
> +            type: boolean
> +            description: the first LVDS input link for odd pixels
> +
> +          dual-lvds-even-pixels:
> +            type: boolean
> +            description: the first LVDS input link for even pixels
> +
> +        oneOf:
> +          - required: [dual-lvds-odd-pixels]
> +          - required: [dual-lvds-even-pixels]
> +          - properties:
> +              dual-lvds-odd-pixels: false
> +              dual-lvds-even-pixels: false
> +
> +      port@1:
> +        $ref: /schemas/graph.yaml#/$defs/port-base
> +        unevaluatedProperties: false
> +        description: the second LVDS input link
> +
> +        properties:
> +          dual-lvds-odd-pixels:
> +            type: boolean
> +            description: the second LVDS input link for odd pixels
> +
> +          dual-lvds-even-pixels:
> +            type: boolean
> +            description: the second LVDS input link for even pixels
> +
> +        oneOf:
> +          - required: [dual-lvds-odd-pixels]
> +          - required: [dual-lvds-even-pixels]
> +          - properties:
> +              dual-lvds-odd-pixels: false
> +              dual-lvds-even-pixels: false

Hmm, I should require port@0 or port@1.
Will wait a while for comments and add this in next version.

--8<--
    anyOf:                                                                      
      - required:                                                               
          - port@0                                                              
      - required:                                                               
          - port@1
--8<--

> +
> +required:
> +  - ports
> +
> +additionalProperties: true
> +
> +...

[...]
Biju Das Oct. 29, 2024, 6:58 a.m. UTC | #2
Hi Liu Ying,

> -----Original Message-----
> From: Liu Ying <victor.liu@nxp.com>
> Sent: 29 October 2024 06:17
> Subject: Re: [PATCH v4 08/13] dt-bindings: display: Document dual-link LVDS display common properties
> 
> On 10/28/2024, Liu Ying wrote:
> > Dual-link LVDS displays receive odd pixels and even pixels separately
> > from dual LVDS links.  One link receives odd pixels and the other
> > receives even pixels.  Some of those displays may also use only one
> > LVDS link to receive all pixels, being odd and even agnostic.
> > Document common properties for those displays by extending LVDS
> > display common properties defined in lvds.yaml.
> >
> > Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> > Signed-off-by: Liu Ying <victor.liu@nxp.com>
> > ---
> > v4:
> > * Squash change for advantech,idk-2121wr.yaml and
> >   panel-simple-lvds-dual-ports.yaml with lvds-dual-ports.yaml.  (Rob)
> > * Improve description in lvds-dual-ports.yaml.  (Krzysztof)
> >
> > v3:
> > * New patch.  (Dmitry)
> >
> >  .../bindings/display/lvds-dual-ports.yaml     | 76 +++++++++++++++++++
> >  .../display/panel/advantech,idk-2121wr.yaml   | 14 +---
> >  .../panel/panel-simple-lvds-dual-ports.yaml   | 20 +----
> >  3 files changed, 78 insertions(+), 32 deletions(-)  create mode
> > 100644 Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> >
> > diff --git
> > a/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> > b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> > new file mode 100644
> > index 000000000000..5f7a30640404
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> > @@ -0,0 +1,76 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/display/lvds-dual-ports.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Dual-link LVDS Display Common Properties
> > +
> > +maintainers:
> > +  - Liu Ying <victor.liu@nxp.com>
> > +
> > +description: |
> > +  Common properties for LVDS displays with dual LVDS links. Extend
> > +LVDS display
> > +  common properties defined in lvds.yaml.
> > +
> > +  Dual-link LVDS displays receive odd pixels and even pixels
> > + separately from  the dual LVDS links. One link receives odd pixels
> > + and the other receives  even pixels. Some of those displays may also
> > + use only one LVDS link to  receive all pixels, being odd and even agnostic.
> > +
> > +allOf:
> > +  - $ref: lvds.yaml#
> > +
> > +properties:
> > +  ports:
> > +    $ref: /schemas/graph.yaml#/properties/ports
> > +
> > +    properties:
> > +      port@0:
> > +        $ref: /schemas/graph.yaml#/$defs/port-base
> > +        unevaluatedProperties: false
> > +        description: the first LVDS input link
> > +
> > +        properties:
> > +          dual-lvds-odd-pixels:
> > +            type: boolean
> > +            description: the first LVDS input link for odd pixels
> > +
> > +          dual-lvds-even-pixels:
> > +            type: boolean
> > +            description: the first LVDS input link for even pixels
> > +
> > +        oneOf:
> > +          - required: [dual-lvds-odd-pixels]
> > +          - required: [dual-lvds-even-pixels]
> > +          - properties:
> > +              dual-lvds-odd-pixels: false
> > +              dual-lvds-even-pixels: false
> > +
> > +      port@1:
> > +        $ref: /schemas/graph.yaml#/$defs/port-base
> > +        unevaluatedProperties: false
> > +        description: the second LVDS input link
> > +
> > +        properties:
> > +          dual-lvds-odd-pixels:
> > +            type: boolean
> > +            description: the second LVDS input link for odd pixels
> > +
> > +          dual-lvds-even-pixels:
> > +            type: boolean
> > +            description: the second LVDS input link for even pixels
> > +
> > +        oneOf:
> > +          - required: [dual-lvds-odd-pixels]
> > +          - required: [dual-lvds-even-pixels]
> > +          - properties:
> > +              dual-lvds-odd-pixels: false
> > +              dual-lvds-even-pixels: false
> 
> Hmm, I should require port@0 or port@1.

For dual LVDS, you need 3 ports as common use case

2 input ports and 1 outport and all are required properties.

Cheers,
Biju

> Will wait a while for comments and add this in next version.
> 
> --8<--
>     anyOf:
>       - required:
>           - port@0
>       - required:
>           - port@1
> --8<--
> 
> > +
> > +required:
> > +  - ports
> > +
> > +additionalProperties: true
> > +
> > +...
> 
> [...]
> 
> --
> Regards,
> Liu Ying
Liu Ying Oct. 29, 2024, 7:13 a.m. UTC | #3
On 10/29/2024, Biju Das wrote:
> Hi Liu Ying,

Hi Biju,

> 
>> -----Original Message-----
>> From: Liu Ying <victor.liu@nxp.com>
>> Sent: 29 October 2024 06:17
>> Subject: Re: [PATCH v4 08/13] dt-bindings: display: Document dual-link LVDS display common properties
>>
>> On 10/28/2024, Liu Ying wrote:
>>> Dual-link LVDS displays receive odd pixels and even pixels separately
>>> from dual LVDS links.  One link receives odd pixels and the other
>>> receives even pixels.  Some of those displays may also use only one
>>> LVDS link to receive all pixels, being odd and even agnostic.
>>> Document common properties for those displays by extending LVDS
>>> display common properties defined in lvds.yaml.
>>>
>>> Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>>> Signed-off-by: Liu Ying <victor.liu@nxp.com>
>>> ---
>>> v4:
>>> * Squash change for advantech,idk-2121wr.yaml and
>>>   panel-simple-lvds-dual-ports.yaml with lvds-dual-ports.yaml.  (Rob)
>>> * Improve description in lvds-dual-ports.yaml.  (Krzysztof)
>>>
>>> v3:
>>> * New patch.  (Dmitry)
>>>
>>>  .../bindings/display/lvds-dual-ports.yaml     | 76 +++++++++++++++++++
>>>  .../display/panel/advantech,idk-2121wr.yaml   | 14 +---
>>>  .../panel/panel-simple-lvds-dual-ports.yaml   | 20 +----
>>>  3 files changed, 78 insertions(+), 32 deletions(-)  create mode
>>> 100644 Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>>>
>>> diff --git
>>> a/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>>> b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>>> new file mode 100644
>>> index 000000000000..5f7a30640404
>>> --- /dev/null
>>> +++ b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>>> @@ -0,0 +1,76 @@
>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2
>>> +---
>>> +$id: http://devicetree.org/schemas/display/lvds-dual-ports.yaml#
>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>> +
>>> +title: Dual-link LVDS Display Common Properties
>>> +
>>> +maintainers:
>>> +  - Liu Ying <victor.liu@nxp.com>
>>> +
>>> +description: |
>>> +  Common properties for LVDS displays with dual LVDS links. Extend
>>> +LVDS display
>>> +  common properties defined in lvds.yaml.
>>> +
>>> +  Dual-link LVDS displays receive odd pixels and even pixels
>>> + separately from  the dual LVDS links. One link receives odd pixels
>>> + and the other receives  even pixels. Some of those displays may also
>>> + use only one LVDS link to  receive all pixels, being odd and even agnostic.
>>> +
>>> +allOf:
>>> +  - $ref: lvds.yaml#
>>> +
>>> +properties:
>>> +  ports:
>>> +    $ref: /schemas/graph.yaml#/properties/ports
>>> +
>>> +    properties:
>>> +      port@0:
>>> +        $ref: /schemas/graph.yaml#/$defs/port-base
>>> +        unevaluatedProperties: false
>>> +        description: the first LVDS input link
>>> +
>>> +        properties:
>>> +          dual-lvds-odd-pixels:
>>> +            type: boolean
>>> +            description: the first LVDS input link for odd pixels
>>> +
>>> +          dual-lvds-even-pixels:
>>> +            type: boolean
>>> +            description: the first LVDS input link for even pixels
>>> +
>>> +        oneOf:
>>> +          - required: [dual-lvds-odd-pixels]
>>> +          - required: [dual-lvds-even-pixels]
>>> +          - properties:
>>> +              dual-lvds-odd-pixels: false
>>> +              dual-lvds-even-pixels: false
>>> +
>>> +      port@1:
>>> +        $ref: /schemas/graph.yaml#/$defs/port-base
>>> +        unevaluatedProperties: false
>>> +        description: the second LVDS input link
>>> +
>>> +        properties:
>>> +          dual-lvds-odd-pixels:
>>> +            type: boolean
>>> +            description: the second LVDS input link for odd pixels
>>> +
>>> +          dual-lvds-even-pixels:
>>> +            type: boolean
>>> +            description: the second LVDS input link for even pixels
>>> +
>>> +        oneOf:
>>> +          - required: [dual-lvds-odd-pixels]
>>> +          - required: [dual-lvds-even-pixels]
>>> +          - properties:
>>> +              dual-lvds-odd-pixels: false
>>> +              dual-lvds-even-pixels: false
>>
>> Hmm, I should require port@0 or port@1.
> 
> For dual LVDS, you need 3 ports as common use case

For LVDS panels, only two ports for LVDS sink are needed.
For display bridges with LVDS sink, one additional output
port is needed.  However, I'm not sure if this output
port should be documented in this binding or not, because
it doesn't look common enough considering the LVDS panels.

> 
> 2 input ports and 1 outport and all are required properties.

The output port cannot be required for LVDS panels at least.

We need to require one or two input ports, because IT6263
may use one LVDS link or two.

> 
> Cheers,
> Biju
> 
>> Will wait a while for comments and add this in next version.
>>
>> --8<--
>>     anyOf:
>>       - required:
>>           - port@0
>>       - required:
>>           - port@1
>> --8<--
>>
>>> +
>>> +required:
>>> +  - ports
>>> +
>>> +additionalProperties: true
>>> +
>>> +...
>>
>> [...]
>>
>> --
>> Regards,
>> Liu Ying
>
Biju Das Oct. 29, 2024, 7:17 a.m. UTC | #4
Hi Liu Ying,

> -----Original Message-----
> From: Liu Ying <victor.liu@nxp.com>
> Sent: 29 October 2024 07:13
> Subject: Re: [PATCH v4 08/13] dt-bindings: display: Document dual-link LVDS display common properties
> 
> On 10/29/2024, Biju Das wrote:
> > Hi Liu Ying,
> 
> Hi Biju,
> 
> >
> >> -----Original Message-----
> >> From: Liu Ying <victor.liu@nxp.com>
> >> Sent: 29 October 2024 06:17
> >> Subject: Re: [PATCH v4 08/13] dt-bindings: display: Document
> >> dual-link LVDS display common properties
> >>
> >> On 10/28/2024, Liu Ying wrote:
> >>> Dual-link LVDS displays receive odd pixels and even pixels
> >>> separately from dual LVDS links.  One link receives odd pixels and
> >>> the other receives even pixels.  Some of those displays may also use
> >>> only one LVDS link to receive all pixels, being odd and even agnostic.
> >>> Document common properties for those displays by extending LVDS
> >>> display common properties defined in lvds.yaml.
> >>>
> >>> Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> >>> Signed-off-by: Liu Ying <victor.liu@nxp.com>
> >>> ---
> >>> v4:
> >>> * Squash change for advantech,idk-2121wr.yaml and
> >>>   panel-simple-lvds-dual-ports.yaml with lvds-dual-ports.yaml.
> >>> (Rob)
> >>> * Improve description in lvds-dual-ports.yaml.  (Krzysztof)
> >>>
> >>> v3:
> >>> * New patch.  (Dmitry)
> >>>
> >>>  .../bindings/display/lvds-dual-ports.yaml     | 76 +++++++++++++++++++
> >>>  .../display/panel/advantech,idk-2121wr.yaml   | 14 +---
> >>>  .../panel/panel-simple-lvds-dual-ports.yaml   | 20 +----
> >>>  3 files changed, 78 insertions(+), 32 deletions(-)  create mode
> >>> 100644
> >>> Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> >>>
> >>> diff --git
> >>> a/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> >>> b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> >>> new file mode 100644
> >>> index 000000000000..5f7a30640404
> >>> --- /dev/null
> >>> +++ b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> >>> @@ -0,0 +1,76 @@
> >>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2
> >>> +---
> >>> +$id: http://devicetree.org/schemas/display/lvds-dual-ports.yaml#
> >>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> >>> +
> >>> +title: Dual-link LVDS Display Common Properties
> >>> +
> >>> +maintainers:
> >>> +  - Liu Ying <victor.liu@nxp.com>
> >>> +
> >>> +description: |
> >>> +  Common properties for LVDS displays with dual LVDS links. Extend
> >>> +LVDS display
> >>> +  common properties defined in lvds.yaml.
> >>> +
> >>> +  Dual-link LVDS displays receive odd pixels and even pixels
> >>> + separately from  the dual LVDS links. One link receives odd pixels
> >>> + and the other receives  even pixels. Some of those displays may
> >>> + also use only one LVDS link to  receive all pixels, being odd and even agnostic.
> >>> +
> >>> +allOf:
> >>> +  - $ref: lvds.yaml#
> >>> +
> >>> +properties:
> >>> +  ports:
> >>> +    $ref: /schemas/graph.yaml#/properties/ports
> >>> +
> >>> +    properties:
> >>> +      port@0:
> >>> +        $ref: /schemas/graph.yaml#/$defs/port-base
> >>> +        unevaluatedProperties: false
> >>> +        description: the first LVDS input link
> >>> +
> >>> +        properties:
> >>> +          dual-lvds-odd-pixels:
> >>> +            type: boolean
> >>> +            description: the first LVDS input link for odd pixels
> >>> +
> >>> +          dual-lvds-even-pixels:
> >>> +            type: boolean
> >>> +            description: the first LVDS input link for even pixels
> >>> +
> >>> +        oneOf:
> >>> +          - required: [dual-lvds-odd-pixels]
> >>> +          - required: [dual-lvds-even-pixels]
> >>> +          - properties:
> >>> +              dual-lvds-odd-pixels: false
> >>> +              dual-lvds-even-pixels: false
> >>> +
> >>> +      port@1:
> >>> +        $ref: /schemas/graph.yaml#/$defs/port-base
> >>> +        unevaluatedProperties: false
> >>> +        description: the second LVDS input link
> >>> +
> >>> +        properties:
> >>> +          dual-lvds-odd-pixels:
> >>> +            type: boolean
> >>> +            description: the second LVDS input link for odd pixels
> >>> +
> >>> +          dual-lvds-even-pixels:
> >>> +            type: boolean
> >>> +            description: the second LVDS input link for even pixels
> >>> +
> >>> +        oneOf:
> >>> +          - required: [dual-lvds-odd-pixels]
> >>> +          - required: [dual-lvds-even-pixels]
> >>> +          - properties:
> >>> +              dual-lvds-odd-pixels: false
> >>> +              dual-lvds-even-pixels: false
> >>
> >> Hmm, I should require port@0 or port@1.
> >
> > For dual LVDS, you need 3 ports as common use case
> 
> For LVDS panels, only two ports for LVDS sink are needed.
> For display bridges with LVDS sink, one additional output port is needed.  However, I'm not sure if
> this output port should be documented in this binding or not, because it doesn't look common enough
> considering the LVDS panels.
> 
> >
> > 2 input ports and 1 outport and all are required properties.
> 
> The output port cannot be required for LVDS panels at least.

Ack.

> 
> We need to require one or two input ports, because IT6263 may use one LVDS link or two.

This patch is for generic dual link common cases and is not applicable for IT6263 single link case.


Cheers,
Biju

> 
> >
> > Cheers,
> > Biju
> >
> >> Will wait a while for comments and add this in next version.
> >>
> >> --8<--
> >>     anyOf:
> >>       - required:
> >>           - port@0
> >>       - required:
> >>           - port@1
> >> --8<--
> >>
> >>> +
> >>> +required:
> >>> +  - ports
> >>> +
> >>> +additionalProperties: true
> >>> +
> >>> +...
> >>
> >> [...]
> >>
> >> --
> >> Regards,
> >> Liu Ying
> >
> 
> --
> Regards,
> Liu Ying
Biju Das Oct. 29, 2024, 7:33 a.m. UTC | #5
Hi Liu Ying,

> -----Original Message-----
> From: Liu Ying <victor.liu@nxp.com>
> Sent: 28 October 2024 02:38
> Subject: [PATCH v4 08/13] dt-bindings: display: Document dual-link LVDS display common properties
> 
> Dual-link LVDS displays receive odd pixels and even pixels separately from dual LVDS links.  One link
> receives odd pixels and the other receives even pixels.  Some of those displays may also use only one
> LVDS link to receive all pixels, being odd and even agnostic.  Document common properties for those
> displays by extending LVDS display common properties defined in lvds.yaml.
> 
> Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> Signed-off-by: Liu Ying <victor.liu@nxp.com>
> ---
> v4:
> * Squash change for advantech,idk-2121wr.yaml and
>   panel-simple-lvds-dual-ports.yaml with lvds-dual-ports.yaml.  (Rob)
> * Improve description in lvds-dual-ports.yaml.  (Krzysztof)
> 
> v3:
> * New patch.  (Dmitry)
> 
>  .../bindings/display/lvds-dual-ports.yaml     | 76 +++++++++++++++++++
>  .../display/panel/advantech,idk-2121wr.yaml   | 14 +---
>  .../panel/panel-simple-lvds-dual-ports.yaml   | 20 +----
>  3 files changed, 78 insertions(+), 32 deletions(-)  create mode 100644
> Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> 
> diff --git a/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> new file mode 100644
> index 000000000000..5f7a30640404
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> @@ -0,0 +1,76 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/display/lvds-dual-ports.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Dual-link LVDS Display Common Properties
> +
> +maintainers:
> +  - Liu Ying <victor.liu@nxp.com>
> +
> +description: |
> +  Common properties for LVDS displays with dual LVDS links. Extend LVDS
> +display
> +  common properties defined in lvds.yaml.
> +
> +  Dual-link LVDS displays receive odd pixels and even pixels separately
> + from  the dual LVDS links. One link receives odd pixels and the other
> + receives  even pixels. Some of those displays may also use only one
> + LVDS link to  receive all pixels, being odd and even agnostic.
> +
> +allOf:
> +  - $ref: lvds.yaml#
> +
> +properties:
> +  ports:
> +    $ref: /schemas/graph.yaml#/properties/ports
> +
> +    properties:
> +      port@0:
> +        $ref: /schemas/graph.yaml#/$defs/port-base
> +        unevaluatedProperties: false
> +        description: the first LVDS input link
> +
> +        properties:
> +          dual-lvds-odd-pixels:
> +            type: boolean
> +            description: the first LVDS input link for odd pixels
> +
> +          dual-lvds-even-pixels:
> +            type: boolean
> +            description: the first LVDS input link for even pixels


port@0 we know it is first link
port@1 we know it is second link.
dual-lvds-odd-pixels: We know it is for odd pixels.
dual-lvds-even-pixels: We know it is for odd pixels.

Not sure, whether we can give common description and avoid the duplicate
from port@1 ??


> +
> +        oneOf:
> +          - required: [dual-lvds-odd-pixels]
> +          - required: [dual-lvds-even-pixels]
> +          - properties:
> +              dual-lvds-odd-pixels: false
> +              dual-lvds-even-pixels: false

Why this is false here? oneOf is not sufficient?

> +
> +      port@1:
> +        $ref: /schemas/graph.yaml#/$defs/port-base
> +        unevaluatedProperties: false
> +        description: the second LVDS input link
> +
> +        properties:
> +          dual-lvds-odd-pixels:
> +            type: boolean
> +            description: the second LVDS input link for odd pixels
> +
> +          dual-lvds-even-pixels:
> +            type: boolean
> +            description: the second LVDS input link for even pixels
> +
> +        oneOf:
> +          - required: [dual-lvds-odd-pixels]
> +          - required: [dual-lvds-even-pixels]
> +          - properties:
> +              dual-lvds-odd-pixels: false
> +              dual-lvds-even-pixels: false

Same as above??

Cheers,
Biju

> +
> +required:
> +  - ports
> +
> +additionalProperties: true
> +
> +...
> diff --git a/Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml
> b/Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml
> index 2e8dbdb5a3d5..05ca3b2385f8 100644
> --- a/Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml
> +++ b/Documentation/devicetree/bindings/display/panel/advantech,idk-2121
> +++ wr.yaml
> @@ -20,6 +20,7 @@ description: |
>    dual-lvds-odd-pixels or dual-lvds-even-pixels).
> 
>  allOf:
> +  - $ref: /schemas/display/lvds-dual-ports.yaml#
>    - $ref: panel-common.yaml#
> 
>  properties:
> @@ -44,22 +45,10 @@ properties:
> 
>      properties:
>        port@0:
> -        $ref: /schemas/graph.yaml#/$defs/port-base
> -        unevaluatedProperties: false
> -        description: The sink for odd pixels.
> -        properties:
> -          dual-lvds-odd-pixels: true
> -
>          required:
>            - dual-lvds-odd-pixels
> 
>        port@1:
> -        $ref: /schemas/graph.yaml#/$defs/port-base
> -        unevaluatedProperties: false
> -        description: The sink for even pixels.
> -        properties:
> -          dual-lvds-even-pixels: true
> -
>          required:
>            - dual-lvds-even-pixels
> 
> @@ -75,7 +64,6 @@ required:
>    - height-mm
>    - data-mapping
>    - panel-timing
> -  - ports
> 
>  examples:
>    - |+
> diff --git a/Documentation/devicetree/bindings/display/panel/panel-simple-lvds-dual-ports.yaml
> b/Documentation/devicetree/bindings/display/panel/panel-simple-lvds-dual-ports.yaml
> index 10ed4b57232b..e80fc7006984 100644
> --- a/Documentation/devicetree/bindings/display/panel/panel-simple-lvds-dual-ports.yaml
> +++ b/Documentation/devicetree/bindings/display/panel/panel-simple-lvds-
> +++ dual-ports.yaml
> @@ -22,6 +22,7 @@ description: |
>    If the panel is more advanced a dedicated binding file is required.
> 
>  allOf:
> +  - $ref: /schemas/display/lvds-dual-ports.yaml#
>    - $ref: panel-common.yaml#
> 
>  properties:
> @@ -55,28 +56,10 @@ properties:
> 
>      properties:
>        port@0:
> -        $ref: /schemas/graph.yaml#/$defs/port-base
> -        unevaluatedProperties: false
> -        description: The first sink port.
> -
> -        properties:
> -          dual-lvds-odd-pixels:
> -            type: boolean
> -            description: The first sink port for odd pixels.
> -
>          required:
>            - dual-lvds-odd-pixels
> 
>        port@1:
> -        $ref: /schemas/graph.yaml#/$defs/port-base
> -        unevaluatedProperties: false
> -        description: The second sink port.
> -
> -        properties:
> -          dual-lvds-even-pixels:
> -            type: boolean
> -            description: The second sink port for even pixels.
> -
>          required:
>            - dual-lvds-even-pixels
> 
> @@ -88,7 +71,6 @@ unevaluatedProperties: false
> 
>  required:
>    - compatible
> -  - ports
>    - power-supply
> 
>  examples:
> --
> 2.34.1
Liu Ying Oct. 29, 2024, 7:35 a.m. UTC | #6
On 10/29/2024, Biju Das wrote:
> Hi Liu Ying,

Hi Biju,

> 
>> -----Original Message-----
>> From: Liu Ying <victor.liu@nxp.com>
>> Sent: 29 October 2024 07:13
>> Subject: Re: [PATCH v4 08/13] dt-bindings: display: Document dual-link LVDS display common properties
>>
>> On 10/29/2024, Biju Das wrote:
>>> Hi Liu Ying,
>>
>> Hi Biju,
>>
>>>
>>>> -----Original Message-----
>>>> From: Liu Ying <victor.liu@nxp.com>
>>>> Sent: 29 October 2024 06:17
>>>> Subject: Re: [PATCH v4 08/13] dt-bindings: display: Document
>>>> dual-link LVDS display common properties
>>>>
>>>> On 10/28/2024, Liu Ying wrote:
>>>>> Dual-link LVDS displays receive odd pixels and even pixels
>>>>> separately from dual LVDS links.  One link receives odd pixels and
>>>>> the other receives even pixels.  Some of those displays may also use
>>>>> only one LVDS link to receive all pixels, being odd and even agnostic.
>>>>> Document common properties for those displays by extending LVDS
>>>>> display common properties defined in lvds.yaml.
>>>>>
>>>>> Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>>>>> Signed-off-by: Liu Ying <victor.liu@nxp.com>
>>>>> ---
>>>>> v4:
>>>>> * Squash change for advantech,idk-2121wr.yaml and
>>>>>   panel-simple-lvds-dual-ports.yaml with lvds-dual-ports.yaml.
>>>>> (Rob)
>>>>> * Improve description in lvds-dual-ports.yaml.  (Krzysztof)
>>>>>
>>>>> v3:
>>>>> * New patch.  (Dmitry)
>>>>>
>>>>>  .../bindings/display/lvds-dual-ports.yaml     | 76 +++++++++++++++++++
>>>>>  .../display/panel/advantech,idk-2121wr.yaml   | 14 +---
>>>>>  .../panel/panel-simple-lvds-dual-ports.yaml   | 20 +----
>>>>>  3 files changed, 78 insertions(+), 32 deletions(-)  create mode
>>>>> 100644
>>>>> Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>>>>>
>>>>> diff --git
>>>>> a/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>>>>> b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>>>>> new file mode 100644
>>>>> index 000000000000..5f7a30640404
>>>>> --- /dev/null
>>>>> +++ b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>>>>> @@ -0,0 +1,76 @@
>>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2
>>>>> +---
>>>>> +$id: http://devicetree.org/schemas/display/lvds-dual-ports.yaml#
>>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>>>> +
>>>>> +title: Dual-link LVDS Display Common Properties
>>>>> +
>>>>> +maintainers:
>>>>> +  - Liu Ying <victor.liu@nxp.com>
>>>>> +
>>>>> +description: |
>>>>> +  Common properties for LVDS displays with dual LVDS links. Extend
>>>>> +LVDS display
>>>>> +  common properties defined in lvds.yaml.
>>>>> +
>>>>> +  Dual-link LVDS displays receive odd pixels and even pixels
>>>>> + separately from  the dual LVDS links. One link receives odd pixels
>>>>> + and the other receives  even pixels. Some of those displays may
>>>>> + also use only one LVDS link to  receive all pixels, being odd and even agnostic.
>>>>> +
>>>>> +allOf:
>>>>> +  - $ref: lvds.yaml#
>>>>> +
>>>>> +properties:
>>>>> +  ports:
>>>>> +    $ref: /schemas/graph.yaml#/properties/ports
>>>>> +
>>>>> +    properties:
>>>>> +      port@0:
>>>>> +        $ref: /schemas/graph.yaml#/$defs/port-base
>>>>> +        unevaluatedProperties: false
>>>>> +        description: the first LVDS input link
>>>>> +
>>>>> +        properties:
>>>>> +          dual-lvds-odd-pixels:
>>>>> +            type: boolean
>>>>> +            description: the first LVDS input link for odd pixels
>>>>> +
>>>>> +          dual-lvds-even-pixels:
>>>>> +            type: boolean
>>>>> +            description: the first LVDS input link for even pixels
>>>>> +
>>>>> +        oneOf:
>>>>> +          - required: [dual-lvds-odd-pixels]
>>>>> +          - required: [dual-lvds-even-pixels]
>>>>> +          - properties:
>>>>> +              dual-lvds-odd-pixels: false
>>>>> +              dual-lvds-even-pixels: false
>>>>> +
>>>>> +      port@1:
>>>>> +        $ref: /schemas/graph.yaml#/$defs/port-base
>>>>> +        unevaluatedProperties: false
>>>>> +        description: the second LVDS input link
>>>>> +
>>>>> +        properties:
>>>>> +          dual-lvds-odd-pixels:
>>>>> +            type: boolean
>>>>> +            description: the second LVDS input link for odd pixels
>>>>> +
>>>>> +          dual-lvds-even-pixels:
>>>>> +            type: boolean
>>>>> +            description: the second LVDS input link for even pixels
>>>>> +
>>>>> +        oneOf:
>>>>> +          - required: [dual-lvds-odd-pixels]
>>>>> +          - required: [dual-lvds-even-pixels]
>>>>> +          - properties:
>>>>> +              dual-lvds-odd-pixels: false
>>>>> +              dual-lvds-even-pixels: false
>>>>
>>>> Hmm, I should require port@0 or port@1.
>>>
>>> For dual LVDS, you need 3 ports as common use case
>>
>> For LVDS panels, only two ports for LVDS sink are needed.
>> For display bridges with LVDS sink, one additional output port is needed.  However, I'm not sure if
>> this output port should be documented in this binding or not, because it doesn't look common enough
>> considering the LVDS panels.
>>
>>>
>>> 2 input ports and 1 outport and all are required properties.
>>
>> The output port cannot be required for LVDS panels at least.
> 
> Ack.
> 
>>
>> We need to require one or two input ports, because IT6263 may use one LVDS link or two.
> 
> This patch is for generic dual link common cases and is not applicable for IT6263 single link case.

Based on previous discussion(especially Dmitry's suggestion),
this binding should cover display bridges that can use one
LVDS sink port or two LVDS sink ports, like IT6263.  To be
clear, those bridges may have two modes(supported by one
chip) - single LVDS sink link mode and dual LVDS sink link
mode.  Those bridges are considered as common dual-link
LVDS displays.  That's why I was asked to extract the common
properties to this schema when adding IT6263 DT binding.   

> 
> 
> Cheers,
> Biju
> 
>>
>>>
>>> Cheers,
>>> Biju
>>>
>>>> Will wait a while for comments and add this in next version.
>>>>
>>>> --8<--
>>>>     anyOf:
>>>>       - required:
>>>>           - port@0
>>>>       - required:
>>>>           - port@1
>>>> --8<--
>>>>
>>>>> +
>>>>> +required:
>>>>> +  - ports
>>>>> +
>>>>> +additionalProperties: true
>>>>> +
>>>>> +...
>>>>
>>>> [...]
>>>>
>>>> --
>>>> Regards,
>>>> Liu Ying
>>>
>>
>> --
>> Regards,
>> Liu Ying
>
Biju Das Oct. 29, 2024, 7:48 a.m. UTC | #7
Hi Liu Ying,

> -----Original Message-----
> From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of Liu Ying
> Sent: 29 October 2024 07:35
> Subject: Re: [PATCH v4 08/13] dt-bindings: display: Document dual-link LVDS display common properties
> 
> On 10/29/2024, Biju Das wrote:
> > Hi Liu Ying,
> 
> Hi Biju,
> 
> >
> >> -----Original Message-----
> >> From: Liu Ying <victor.liu@nxp.com>
> >> Sent: 29 October 2024 07:13
> >> Subject: Re: [PATCH v4 08/13] dt-bindings: display: Document
> >> dual-link LVDS display common properties
> >>
> >> On 10/29/2024, Biju Das wrote:
> >>> Hi Liu Ying,
> >>
> >> Hi Biju,
> >>
> >>>
> >>>> -----Original Message-----
> >>>> From: Liu Ying <victor.liu@nxp.com>
> >>>> Sent: 29 October 2024 06:17
> >>>> Subject: Re: [PATCH v4 08/13] dt-bindings: display: Document
> >>>> dual-link LVDS display common properties
> >>>>
> >>>> On 10/28/2024, Liu Ying wrote:
> >>>>> Dual-link LVDS displays receive odd pixels and even pixels
> >>>>> separately from dual LVDS links.  One link receives odd pixels and
> >>>>> the other receives even pixels.  Some of those displays may also
> >>>>> use only one LVDS link to receive all pixels, being odd and even agnostic.
> >>>>> Document common properties for those displays by extending LVDS
> >>>>> display common properties defined in lvds.yaml.
> >>>>>
> >>>>> Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> >>>>> Signed-off-by: Liu Ying <victor.liu@nxp.com>
> >>>>> ---
> >>>>> v4:
> >>>>> * Squash change for advantech,idk-2121wr.yaml and
> >>>>>   panel-simple-lvds-dual-ports.yaml with lvds-dual-ports.yaml.
> >>>>> (Rob)
> >>>>> * Improve description in lvds-dual-ports.yaml.  (Krzysztof)
> >>>>>
> >>>>> v3:
> >>>>> * New patch.  (Dmitry)
> >>>>>
> >>>>>  .../bindings/display/lvds-dual-ports.yaml     | 76 +++++++++++++++++++
> >>>>>  .../display/panel/advantech,idk-2121wr.yaml   | 14 +---
> >>>>>  .../panel/panel-simple-lvds-dual-ports.yaml   | 20 +----
> >>>>>  3 files changed, 78 insertions(+), 32 deletions(-)  create mode
> >>>>> 100644
> >>>>> Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> >>>>>
> >>>>> diff --git
> >>>>> a/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> >>>>> b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> >>>>> new file mode 100644
> >>>>> index 000000000000..5f7a30640404
> >>>>> --- /dev/null
> >>>>> +++ b/Documentation/devicetree/bindings/display/lvds-dual-ports.ya
> >>>>> +++ ml
> >>>>> @@ -0,0 +1,76 @@
> >>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML
> >>>>> +1.2
> >>>>> +---
> >>>>> +$id: http://devicetree.org/schemas/display/lvds-dual-ports.yaml#
> >>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> >>>>> +
> >>>>> +title: Dual-link LVDS Display Common Properties
> >>>>> +
> >>>>> +maintainers:
> >>>>> +  - Liu Ying <victor.liu@nxp.com>
> >>>>> +
> >>>>> +description: |
> >>>>> +  Common properties for LVDS displays with dual LVDS links.
> >>>>> +Extend LVDS display
> >>>>> +  common properties defined in lvds.yaml.
> >>>>> +
> >>>>> +  Dual-link LVDS displays receive odd pixels and even pixels
> >>>>> + separately from  the dual LVDS links. One link receives odd
> >>>>> + pixels and the other receives  even pixels. Some of those
> >>>>> + displays may also use only one LVDS link to  receive all pixels, being odd and even agnostic.
> >>>>> +
> >>>>> +allOf:
> >>>>> +  - $ref: lvds.yaml#
> >>>>> +
> >>>>> +properties:
> >>>>> +  ports:
> >>>>> +    $ref: /schemas/graph.yaml#/properties/ports
> >>>>> +
> >>>>> +    properties:
> >>>>> +      port@0:
> >>>>> +        $ref: /schemas/graph.yaml#/$defs/port-base
> >>>>> +        unevaluatedProperties: false
> >>>>> +        description: the first LVDS input link
> >>>>> +
> >>>>> +        properties:
> >>>>> +          dual-lvds-odd-pixels:
> >>>>> +            type: boolean
> >>>>> +            description: the first LVDS input link for odd pixels
> >>>>> +
> >>>>> +          dual-lvds-even-pixels:
> >>>>> +            type: boolean
> >>>>> +            description: the first LVDS input link for even
> >>>>> + pixels
> >>>>> +
> >>>>> +        oneOf:
> >>>>> +          - required: [dual-lvds-odd-pixels]
> >>>>> +          - required: [dual-lvds-even-pixels]
> >>>>> +          - properties:
> >>>>> +              dual-lvds-odd-pixels: false
> >>>>> +              dual-lvds-even-pixels: false
> >>>>> +
> >>>>> +      port@1:
> >>>>> +        $ref: /schemas/graph.yaml#/$defs/port-base
> >>>>> +        unevaluatedProperties: false
> >>>>> +        description: the second LVDS input link
> >>>>> +
> >>>>> +        properties:
> >>>>> +          dual-lvds-odd-pixels:
> >>>>> +            type: boolean
> >>>>> +            description: the second LVDS input link for odd
> >>>>> + pixels
> >>>>> +
> >>>>> +          dual-lvds-even-pixels:
> >>>>> +            type: boolean
> >>>>> +            description: the second LVDS input link for even
> >>>>> + pixels
> >>>>> +
> >>>>> +        oneOf:
> >>>>> +          - required: [dual-lvds-odd-pixels]
> >>>>> +          - required: [dual-lvds-even-pixels]
> >>>>> +          - properties:
> >>>>> +              dual-lvds-odd-pixels: false
> >>>>> +              dual-lvds-even-pixels: false
> >>>>
> >>>> Hmm, I should require port@0 or port@1.
> >>>
> >>> For dual LVDS, you need 3 ports as common use case
> >>
> >> For LVDS panels, only two ports for LVDS sink are needed.
> >> For display bridges with LVDS sink, one additional output port is
> >> needed.  However, I'm not sure if this output port should be
> >> documented in this binding or not, because it doesn't look common enough considering the LVDS
> panels.
> >>
> >>>
> >>> 2 input ports and 1 outport and all are required properties.
> >>
> >> The output port cannot be required for LVDS panels at least.
> >
> > Ack.
> >
> >>
> >> We need to require one or two input ports, because IT6263 may use one LVDS link or two.
> >
> > This patch is for generic dual link common cases and is not applicable for IT6263 single link case.
> 
> Based on previous discussion(especially Dmitry's suggestion), this binding should cover display
> bridges that can use one LVDS sink port or two LVDS sink ports, like IT6263.  To be clear, those
> bridges may have two modes(supported by one
> chip) - single LVDS sink link mode and dual LVDS sink link mode.  Those bridges are considered as
> common dual-link LVDS displays.  That's why I was asked to extract the common
> properties to this schema when adding IT6263 DT binding.

As per [1] and [2] both panels don’t support single LVDS link.
IT6263 is bridge device that has single and dual link support.
Not sure the single link case has to be taken care in ITE6263 binding itself,
Leaving Dual link as it is??

[1]
https://elixir.bootlin.com/linux/v6.12-rc5/source/Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml
[2]

https://elixir.bootlin.com/linux/v6.12-rc5/source/Documentation/devicetree/bindings/display/panel/panel-simple-lvds-dual-ports.yaml


Cheers,
Biju
Liu Ying Oct. 29, 2024, 8:01 a.m. UTC | #8
On 10/29/2024, Biju Das wrote:
> Hi Liu Ying,

Hi Biju,

> 
>> -----Original Message-----
>> From: Liu Ying <victor.liu@nxp.com>
>> Sent: 28 October 2024 02:38
>> Subject: [PATCH v4 08/13] dt-bindings: display: Document dual-link LVDS display common properties
>>
>> Dual-link LVDS displays receive odd pixels and even pixels separately from dual LVDS links.  One link
>> receives odd pixels and the other receives even pixels.  Some of those displays may also use only one
>> LVDS link to receive all pixels, being odd and even agnostic.  Document common properties for those
>> displays by extending LVDS display common properties defined in lvds.yaml.
>>
>> Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>> Signed-off-by: Liu Ying <victor.liu@nxp.com>
>> ---
>> v4:
>> * Squash change for advantech,idk-2121wr.yaml and
>>   panel-simple-lvds-dual-ports.yaml with lvds-dual-ports.yaml.  (Rob)
>> * Improve description in lvds-dual-ports.yaml.  (Krzysztof)
>>
>> v3:
>> * New patch.  (Dmitry)
>>
>>  .../bindings/display/lvds-dual-ports.yaml     | 76 +++++++++++++++++++
>>  .../display/panel/advantech,idk-2121wr.yaml   | 14 +---
>>  .../panel/panel-simple-lvds-dual-ports.yaml   | 20 +----
>>  3 files changed, 78 insertions(+), 32 deletions(-)  create mode 100644
>> Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>>
>> diff --git a/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>> b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>> new file mode 100644
>> index 000000000000..5f7a30640404
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>> @@ -0,0 +1,76 @@
>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/display/lvds-dual-ports.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Dual-link LVDS Display Common Properties
>> +
>> +maintainers:
>> +  - Liu Ying <victor.liu@nxp.com>
>> +
>> +description: |
>> +  Common properties for LVDS displays with dual LVDS links. Extend LVDS
>> +display
>> +  common properties defined in lvds.yaml.
>> +
>> +  Dual-link LVDS displays receive odd pixels and even pixels separately
>> + from  the dual LVDS links. One link receives odd pixels and the other
>> + receives  even pixels. Some of those displays may also use only one
>> + LVDS link to  receive all pixels, being odd and even agnostic.
>> +
>> +allOf:
>> +  - $ref: lvds.yaml#
>> +
>> +properties:
>> +  ports:
>> +    $ref: /schemas/graph.yaml#/properties/ports
>> +
>> +    properties:
>> +      port@0:
>> +        $ref: /schemas/graph.yaml#/$defs/port-base
>> +        unevaluatedProperties: false
>> +        description: the first LVDS input link
>> +
>> +        properties:
>> +          dual-lvds-odd-pixels:
>> +            type: boolean
>> +            description: the first LVDS input link for odd pixels
>> +
>> +          dual-lvds-even-pixels:
>> +            type: boolean
>> +            description: the first LVDS input link for even pixels
> 
> 
> port@0 we know it is first link
> port@1 we know it is second link.
> dual-lvds-odd-pixels: We know it is for odd pixels.
> dual-lvds-even-pixels: We know it is for odd pixels.
> 
> Not sure, whether we can give common description and avoid the duplicate
> from port@1 ??

Yes, it'd better to use patternProperties. Thanks.

--8<--
    patternProperties:                                                           
      '^port@[01]$':                                                             
        $ref: /schemas/graph.yaml#/$defs/port-base                               
        unevaluatedProperties: false                                             
        description: |                                                           
          port@0 is for the first LVDS input link.                               
          port@1 is for the second LVDS input link.                              
                                                                                 
        properties:                                                              
          dual-lvds-odd-pixels:                                                  
            type: boolean                                                        
            description: LVDS input link for odd pixels                          
                                                                                 
          dual-lvds-even-pixels:                                                 
            type: boolean                                                        
            description: LVDS input link for even pixels                         
                                                                                 
        oneOf:                                                                   
          - required: [dual-lvds-odd-pixels]                                     
          - required: [dual-lvds-even-pixels]                                    
          - properties:                                                          
              dual-lvds-odd-pixels: false                                        
              dual-lvds-even-pixels: false                                       
                                                                                 
    anyOf:                                                                       
      - required:                                                                
          - port@0                                                               
      - required:                                                                
          - port@1
--8<--

> 
> 
>> +
>> +        oneOf:
>> +          - required: [dual-lvds-odd-pixels]
>> +          - required: [dual-lvds-even-pixels]
>> +          - properties:
>> +              dual-lvds-odd-pixels: false
>> +              dual-lvds-even-pixels: false
> 
> Why this is false here? oneOf is not sufficient?

The 'false' is used when this LVDS link works alone
as a single LVDS link, being odd and even agnostic.

The 'oneOf' allows a LVDS link to be defined as a single
LVDS link or one link of dual LVDS links.

> 
>> +
>> +      port@1:
>> +        $ref: /schemas/graph.yaml#/$defs/port-base
>> +        unevaluatedProperties: false
>> +        description: the second LVDS input link
>> +
>> +        properties:
>> +          dual-lvds-odd-pixels:
>> +            type: boolean
>> +            description: the second LVDS input link for odd pixels
>> +
>> +          dual-lvds-even-pixels:
>> +            type: boolean
>> +            description: the second LVDS input link for even pixels
>> +
>> +        oneOf:
>> +          - required: [dual-lvds-odd-pixels]
>> +          - required: [dual-lvds-even-pixels]
>> +          - properties:
>> +              dual-lvds-odd-pixels: false
>> +              dual-lvds-even-pixels: false
> 
> Same as above??
> 
> Cheers,
> Biju
> 
>> +
>> +required:
>> +  - ports
>> +
>> +additionalProperties: true
>> +
>> +...
>> diff --git a/Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml
>> b/Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml
>> index 2e8dbdb5a3d5..05ca3b2385f8 100644
>> --- a/Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml
>> +++ b/Documentation/devicetree/bindings/display/panel/advantech,idk-2121
>> +++ wr.yaml
>> @@ -20,6 +20,7 @@ description: |
>>    dual-lvds-odd-pixels or dual-lvds-even-pixels).
>>
>>  allOf:
>> +  - $ref: /schemas/display/lvds-dual-ports.yaml#
>>    - $ref: panel-common.yaml#
>>
>>  properties:
>> @@ -44,22 +45,10 @@ properties:
>>
>>      properties:
>>        port@0:
>> -        $ref: /schemas/graph.yaml#/$defs/port-base
>> -        unevaluatedProperties: false
>> -        description: The sink for odd pixels.
>> -        properties:
>> -          dual-lvds-odd-pixels: true
>> -
>>          required:
>>            - dual-lvds-odd-pixels
>>
>>        port@1:
>> -        $ref: /schemas/graph.yaml#/$defs/port-base
>> -        unevaluatedProperties: false
>> -        description: The sink for even pixels.
>> -        properties:
>> -          dual-lvds-even-pixels: true
>> -
>>          required:
>>            - dual-lvds-even-pixels
>>
>> @@ -75,7 +64,6 @@ required:
>>    - height-mm
>>    - data-mapping
>>    - panel-timing
>> -  - ports
>>
>>  examples:
>>    - |+
>> diff --git a/Documentation/devicetree/bindings/display/panel/panel-simple-lvds-dual-ports.yaml
>> b/Documentation/devicetree/bindings/display/panel/panel-simple-lvds-dual-ports.yaml
>> index 10ed4b57232b..e80fc7006984 100644
>> --- a/Documentation/devicetree/bindings/display/panel/panel-simple-lvds-dual-ports.yaml
>> +++ b/Documentation/devicetree/bindings/display/panel/panel-simple-lvds-
>> +++ dual-ports.yaml
>> @@ -22,6 +22,7 @@ description: |
>>    If the panel is more advanced a dedicated binding file is required.
>>
>>  allOf:
>> +  - $ref: /schemas/display/lvds-dual-ports.yaml#
>>    - $ref: panel-common.yaml#
>>
>>  properties:
>> @@ -55,28 +56,10 @@ properties:
>>
>>      properties:
>>        port@0:
>> -        $ref: /schemas/graph.yaml#/$defs/port-base
>> -        unevaluatedProperties: false
>> -        description: The first sink port.
>> -
>> -        properties:
>> -          dual-lvds-odd-pixels:
>> -            type: boolean
>> -            description: The first sink port for odd pixels.
>> -
>>          required:
>>            - dual-lvds-odd-pixels
>>
>>        port@1:
>> -        $ref: /schemas/graph.yaml#/$defs/port-base
>> -        unevaluatedProperties: false
>> -        description: The second sink port.
>> -
>> -        properties:
>> -          dual-lvds-even-pixels:
>> -            type: boolean
>> -            description: The second sink port for even pixels.
>> -
>>          required:
>>            - dual-lvds-even-pixels
>>
>> @@ -88,7 +71,6 @@ unevaluatedProperties: false
>>
>>  required:
>>    - compatible
>> -  - ports
>>    - power-supply
>>
>>  examples:
>> --
>> 2.34.1
>
Liu Ying Oct. 29, 2024, 8:25 a.m. UTC | #9
On 10/29/2024, Biju Das wrote:
> 
> Hi Liu Ying,

Hi Biju,

> 
>> -----Original Message-----
>> From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of Liu Ying
>> Sent: 29 October 2024 07:35
>> Subject: Re: [PATCH v4 08/13] dt-bindings: display: Document dual-link LVDS display common properties
>>
>> On 10/29/2024, Biju Das wrote:
>>> Hi Liu Ying,
>>
>> Hi Biju,
>>
>>>
>>>> -----Original Message-----
>>>> From: Liu Ying <victor.liu@nxp.com>
>>>> Sent: 29 October 2024 07:13
>>>> Subject: Re: [PATCH v4 08/13] dt-bindings: display: Document
>>>> dual-link LVDS display common properties
>>>>
>>>> On 10/29/2024, Biju Das wrote:
>>>>> Hi Liu Ying,
>>>>
>>>> Hi Biju,
>>>>
>>>>>
>>>>>> -----Original Message-----
>>>>>> From: Liu Ying <victor.liu@nxp.com>
>>>>>> Sent: 29 October 2024 06:17
>>>>>> Subject: Re: [PATCH v4 08/13] dt-bindings: display: Document
>>>>>> dual-link LVDS display common properties
>>>>>>
>>>>>> On 10/28/2024, Liu Ying wrote:
>>>>>>> Dual-link LVDS displays receive odd pixels and even pixels
>>>>>>> separately from dual LVDS links.  One link receives odd pixels and
>>>>>>> the other receives even pixels.  Some of those displays may also
>>>>>>> use only one LVDS link to receive all pixels, being odd and even agnostic.
>>>>>>> Document common properties for those displays by extending LVDS
>>>>>>> display common properties defined in lvds.yaml.
>>>>>>>
>>>>>>> Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>>>>>>> Signed-off-by: Liu Ying <victor.liu@nxp.com>
>>>>>>> ---
>>>>>>> v4:
>>>>>>> * Squash change for advantech,idk-2121wr.yaml and
>>>>>>>   panel-simple-lvds-dual-ports.yaml with lvds-dual-ports.yaml.
>>>>>>> (Rob)
>>>>>>> * Improve description in lvds-dual-ports.yaml.  (Krzysztof)
>>>>>>>
>>>>>>> v3:
>>>>>>> * New patch.  (Dmitry)
>>>>>>>
>>>>>>>  .../bindings/display/lvds-dual-ports.yaml     | 76 +++++++++++++++++++
>>>>>>>  .../display/panel/advantech,idk-2121wr.yaml   | 14 +---
>>>>>>>  .../panel/panel-simple-lvds-dual-ports.yaml   | 20 +----
>>>>>>>  3 files changed, 78 insertions(+), 32 deletions(-)  create mode
>>>>>>> 100644
>>>>>>> Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>>>>>>>
>>>>>>> diff --git
>>>>>>> a/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>>>>>>> b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>>>>>>> new file mode 100644
>>>>>>> index 000000000000..5f7a30640404
>>>>>>> --- /dev/null
>>>>>>> +++ b/Documentation/devicetree/bindings/display/lvds-dual-ports.ya
>>>>>>> +++ ml
>>>>>>> @@ -0,0 +1,76 @@
>>>>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML
>>>>>>> +1.2
>>>>>>> +---
>>>>>>> +$id: http://devicetree.org/schemas/display/lvds-dual-ports.yaml#
>>>>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>>>>>> +
>>>>>>> +title: Dual-link LVDS Display Common Properties
>>>>>>> +
>>>>>>> +maintainers:
>>>>>>> +  - Liu Ying <victor.liu@nxp.com>
>>>>>>> +
>>>>>>> +description: |
>>>>>>> +  Common properties for LVDS displays with dual LVDS links.
>>>>>>> +Extend LVDS display
>>>>>>> +  common properties defined in lvds.yaml.
>>>>>>> +
>>>>>>> +  Dual-link LVDS displays receive odd pixels and even pixels
>>>>>>> + separately from  the dual LVDS links. One link receives odd
>>>>>>> + pixels and the other receives  even pixels. Some of those
>>>>>>> + displays may also use only one LVDS link to  receive all pixels, being odd and even agnostic.
>>>>>>> +
>>>>>>> +allOf:
>>>>>>> +  - $ref: lvds.yaml#
>>>>>>> +
>>>>>>> +properties:
>>>>>>> +  ports:
>>>>>>> +    $ref: /schemas/graph.yaml#/properties/ports
>>>>>>> +
>>>>>>> +    properties:
>>>>>>> +      port@0:
>>>>>>> +        $ref: /schemas/graph.yaml#/$defs/port-base
>>>>>>> +        unevaluatedProperties: false
>>>>>>> +        description: the first LVDS input link
>>>>>>> +
>>>>>>> +        properties:
>>>>>>> +          dual-lvds-odd-pixels:
>>>>>>> +            type: boolean
>>>>>>> +            description: the first LVDS input link for odd pixels
>>>>>>> +
>>>>>>> +          dual-lvds-even-pixels:
>>>>>>> +            type: boolean
>>>>>>> +            description: the first LVDS input link for even
>>>>>>> + pixels
>>>>>>> +
>>>>>>> +        oneOf:
>>>>>>> +          - required: [dual-lvds-odd-pixels]
>>>>>>> +          - required: [dual-lvds-even-pixels]
>>>>>>> +          - properties:
>>>>>>> +              dual-lvds-odd-pixels: false
>>>>>>> +              dual-lvds-even-pixels: false
>>>>>>> +
>>>>>>> +      port@1:
>>>>>>> +        $ref: /schemas/graph.yaml#/$defs/port-base
>>>>>>> +        unevaluatedProperties: false
>>>>>>> +        description: the second LVDS input link
>>>>>>> +
>>>>>>> +        properties:
>>>>>>> +          dual-lvds-odd-pixels:
>>>>>>> +            type: boolean
>>>>>>> +            description: the second LVDS input link for odd
>>>>>>> + pixels
>>>>>>> +
>>>>>>> +          dual-lvds-even-pixels:
>>>>>>> +            type: boolean
>>>>>>> +            description: the second LVDS input link for even
>>>>>>> + pixels
>>>>>>> +
>>>>>>> +        oneOf:
>>>>>>> +          - required: [dual-lvds-odd-pixels]
>>>>>>> +          - required: [dual-lvds-even-pixels]
>>>>>>> +          - properties:
>>>>>>> +              dual-lvds-odd-pixels: false
>>>>>>> +              dual-lvds-even-pixels: false
>>>>>>
>>>>>> Hmm, I should require port@0 or port@1.
>>>>>
>>>>> For dual LVDS, you need 3 ports as common use case
>>>>
>>>> For LVDS panels, only two ports for LVDS sink are needed.
>>>> For display bridges with LVDS sink, one additional output port is
>>>> needed.  However, I'm not sure if this output port should be
>>>> documented in this binding or not, because it doesn't look common enough considering the LVDS
>> panels.
>>>>
>>>>>
>>>>> 2 input ports and 1 outport and all are required properties.
>>>>
>>>> The output port cannot be required for LVDS panels at least.
>>>
>>> Ack.
>>>
>>>>
>>>> We need to require one or two input ports, because IT6263 may use one LVDS link or two.
>>>
>>> This patch is for generic dual link common cases and is not applicable for IT6263 single link case.
>>
>> Based on previous discussion(especially Dmitry's suggestion), this binding should cover display
>> bridges that can use one LVDS sink port or two LVDS sink ports, like IT6263.  To be clear, those
>> bridges may have two modes(supported by one
>> chip) - single LVDS sink link mode and dual LVDS sink link mode.  Those bridges are considered as
>> common dual-link LVDS displays.  That's why I was asked to extract the common
>> properties to this schema when adding IT6263 DT binding.
> 
> As per [1] and [2] both panels don’t support single LVDS link.
> IT6263 is bridge device that has single and dual link support.
> Not sure the single link case has to be taken care in ITE6263 binding itself,
> Leaving Dual link as it is??

There are a couple of bridges supporting dual-link LVDS like
IT6263, see lontium,lt9211.yaml and thine,thc63lvd1024.yaml.
So, it looks fine for this binding to cover those bridges,
as those LVDS links are sort of common stuff.

> 
> [1]
> https://elixir.bootlin.com/linux/v6.12-rc5/source/Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml
> [2]
> 
> https://elixir.bootlin.com/linux/v6.12-rc5/source/Documentation/devicetree/bindings/display/panel/panel-simple-lvds-dual-ports.yaml
> 
> 
> Cheers,
> Biju
Biju Das Oct. 29, 2024, 8:51 a.m. UTC | #10
Hi Liu Ying,

> -----Original Message-----
> From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of Liu Ying
> Sent: 29 October 2024 08:02
> Subject: Re: [PATCH v4 08/13] dt-bindings: display: Document dual-link LVDS display common properties
> 
> On 10/29/2024, Biju Das wrote:
> > Hi Liu Ying,
> 
> Hi Biju,
> 
> >
> >> -----Original Message-----
> >> From: Liu Ying <victor.liu@nxp.com>
> >> Sent: 28 October 2024 02:38
> >> Subject: [PATCH v4 08/13] dt-bindings: display: Document dual-link
> >> LVDS display common properties
> >>
> >> Dual-link LVDS displays receive odd pixels and even pixels separately
> >> from dual LVDS links.  One link receives odd pixels and the other
> >> receives even pixels.  Some of those displays may also use only one
> >> LVDS link to receive all pixels, being odd and even agnostic.  Document common properties for those
> displays by extending LVDS display common properties defined in lvds.yaml.
> >>
> >> Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> >> Signed-off-by: Liu Ying <victor.liu@nxp.com>
> >> ---
> >> v4:
> >> * Squash change for advantech,idk-2121wr.yaml and
> >>   panel-simple-lvds-dual-ports.yaml with lvds-dual-ports.yaml.  (Rob)
> >> * Improve description in lvds-dual-ports.yaml.  (Krzysztof)
> >>
> >> v3:
> >> * New patch.  (Dmitry)
> >>
> >>  .../bindings/display/lvds-dual-ports.yaml     | 76 +++++++++++++++++++
> >>  .../display/panel/advantech,idk-2121wr.yaml   | 14 +---
> >>  .../panel/panel-simple-lvds-dual-ports.yaml   | 20 +----
> >>  3 files changed, 78 insertions(+), 32 deletions(-)  create mode
> >> 100644 Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> >>
> >> diff --git
> >> a/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> >> b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> >> new file mode 100644
> >> index 000000000000..5f7a30640404
> >> --- /dev/null
> >> +++ b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> >> @@ -0,0 +1,76 @@
> >> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2
> >> +---
> >> +$id: http://devicetree.org/schemas/display/lvds-dual-ports.yaml#
> >> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> >> +
> >> +title: Dual-link LVDS Display Common Properties
> >> +
> >> +maintainers:
> >> +  - Liu Ying <victor.liu@nxp.com>
> >> +
> >> +description: |
> >> +  Common properties for LVDS displays with dual LVDS links. Extend
> >> +LVDS display
> >> +  common properties defined in lvds.yaml.
> >> +
> >> +  Dual-link LVDS displays receive odd pixels and even pixels
> >> + separately from  the dual LVDS links. One link receives odd pixels
> >> + and the other receives  even pixels. Some of those displays may
> >> + also use only one LVDS link to  receive all pixels, being odd and even agnostic.
> >> +
> >> +allOf:
> >> +  - $ref: lvds.yaml#
> >> +
> >> +properties:
> >> +  ports:
> >> +    $ref: /schemas/graph.yaml#/properties/ports
> >> +
> >> +    properties:
> >> +      port@0:
> >> +        $ref: /schemas/graph.yaml#/$defs/port-base
> >> +        unevaluatedProperties: false
> >> +        description: the first LVDS input link
> >> +
> >> +        properties:
> >> +          dual-lvds-odd-pixels:
> >> +            type: boolean
> >> +            description: the first LVDS input link for odd pixels
> >> +
> >> +          dual-lvds-even-pixels:
> >> +            type: boolean
> >> +            description: the first LVDS input link for even pixels
> >
> >
> > port@0 we know it is first link
> > port@1 we know it is second link.
> > dual-lvds-odd-pixels: We know it is for odd pixels.
> > dual-lvds-even-pixels: We know it is for odd pixels.
> >
> > Not sure, whether we can give common description and avoid the
> > duplicate from port@1 ??
> 
> Yes, it'd better to use patternProperties. Thanks.
> 
> --8<--
>     patternProperties:
>       '^port@[01]$':
>         $ref: /schemas/graph.yaml#/$defs/port-base
>         unevaluatedProperties: false
>         description: |
>           port@0 is for the first LVDS input link.
>           port@1 is for the second LVDS input link.
> 
>         properties:
>           dual-lvds-odd-pixels:
>             type: boolean
>             description: LVDS input link for odd pixels
> 
>           dual-lvds-even-pixels:
>             type: boolean
>             description: LVDS input link for even pixels
> 
>         oneOf:
>           - required: [dual-lvds-odd-pixels]
>           - required: [dual-lvds-even-pixels]
>           - properties:
>               dual-lvds-odd-pixels: false
>               dual-lvds-even-pixels: false
> 
>     anyOf:
>       - required:
>           - port@0
>       - required:
>           - port@1
> --8<--
> 
> >
> >
> >> +
> >> +        oneOf:
> >> +          - required: [dual-lvds-odd-pixels]
> >> +          - required: [dual-lvds-even-pixels]
> >> +          - properties:
> >> +              dual-lvds-odd-pixels: false
> >> +              dual-lvds-even-pixels: false
> >
> > Why this is false here? oneOf is not sufficient?
> 
> The 'false' is used when this LVDS link works alone as a single LVDS link, being odd and even
> agnostic.
> 
> The 'oneOf' allows a LVDS link to be defined as a single LVDS link or one link of dual LVDS links.

Ok, it makes sense for single LVDS link. Maybe rename the file to lvds-dual-ports.yaml->lvds-ports.yaml
to make it clear, it is for all LVDS ports, if it is going to address single link case aswell??

Cheers,
Biju
Liu Ying Oct. 29, 2024, 9:07 a.m. UTC | #11
On 10/29/2024, Biju Das wrote:
> Hi Liu Ying,

Hi Biju,

> 
>> -----Original Message-----
>> From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of Liu Ying
>> Sent: 29 October 2024 08:02
>> Subject: Re: [PATCH v4 08/13] dt-bindings: display: Document dual-link LVDS display common properties
>>
>> On 10/29/2024, Biju Das wrote:
>>> Hi Liu Ying,
>>
>> Hi Biju,
>>
>>>
>>>> -----Original Message-----
>>>> From: Liu Ying <victor.liu@nxp.com>
>>>> Sent: 28 October 2024 02:38
>>>> Subject: [PATCH v4 08/13] dt-bindings: display: Document dual-link
>>>> LVDS display common properties
>>>>
>>>> Dual-link LVDS displays receive odd pixels and even pixels separately
>>>> from dual LVDS links.  One link receives odd pixels and the other
>>>> receives even pixels.  Some of those displays may also use only one
>>>> LVDS link to receive all pixels, being odd and even agnostic.  Document common properties for those
>> displays by extending LVDS display common properties defined in lvds.yaml.
>>>>
>>>> Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
>>>> Signed-off-by: Liu Ying <victor.liu@nxp.com>
>>>> ---
>>>> v4:
>>>> * Squash change for advantech,idk-2121wr.yaml and
>>>>   panel-simple-lvds-dual-ports.yaml with lvds-dual-ports.yaml.  (Rob)
>>>> * Improve description in lvds-dual-ports.yaml.  (Krzysztof)
>>>>
>>>> v3:
>>>> * New patch.  (Dmitry)
>>>>
>>>>  .../bindings/display/lvds-dual-ports.yaml     | 76 +++++++++++++++++++
>>>>  .../display/panel/advantech,idk-2121wr.yaml   | 14 +---
>>>>  .../panel/panel-simple-lvds-dual-ports.yaml   | 20 +----
>>>>  3 files changed, 78 insertions(+), 32 deletions(-)  create mode
>>>> 100644 Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>>>>
>>>> diff --git
>>>> a/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>>>> b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>>>> new file mode 100644
>>>> index 000000000000..5f7a30640404
>>>> --- /dev/null
>>>> +++ b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
>>>> @@ -0,0 +1,76 @@
>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2
>>>> +---
>>>> +$id: http://devicetree.org/schemas/display/lvds-dual-ports.yaml#
>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>>> +
>>>> +title: Dual-link LVDS Display Common Properties
>>>> +
>>>> +maintainers:
>>>> +  - Liu Ying <victor.liu@nxp.com>
>>>> +
>>>> +description: |
>>>> +  Common properties for LVDS displays with dual LVDS links. Extend
>>>> +LVDS display
>>>> +  common properties defined in lvds.yaml.
>>>> +
>>>> +  Dual-link LVDS displays receive odd pixels and even pixels
>>>> + separately from  the dual LVDS links. One link receives odd pixels
>>>> + and the other receives  even pixels. Some of those displays may
>>>> + also use only one LVDS link to  receive all pixels, being odd and even agnostic.
>>>> +
>>>> +allOf:
>>>> +  - $ref: lvds.yaml#
>>>> +
>>>> +properties:
>>>> +  ports:
>>>> +    $ref: /schemas/graph.yaml#/properties/ports
>>>> +
>>>> +    properties:
>>>> +      port@0:
>>>> +        $ref: /schemas/graph.yaml#/$defs/port-base
>>>> +        unevaluatedProperties: false
>>>> +        description: the first LVDS input link
>>>> +
>>>> +        properties:
>>>> +          dual-lvds-odd-pixels:
>>>> +            type: boolean
>>>> +            description: the first LVDS input link for odd pixels
>>>> +
>>>> +          dual-lvds-even-pixels:
>>>> +            type: boolean
>>>> +            description: the first LVDS input link for even pixels
>>>
>>>
>>> port@0 we know it is first link
>>> port@1 we know it is second link.
>>> dual-lvds-odd-pixels: We know it is for odd pixels.
>>> dual-lvds-even-pixels: We know it is for odd pixels.
>>>
>>> Not sure, whether we can give common description and avoid the
>>> duplicate from port@1 ??
>>
>> Yes, it'd better to use patternProperties. Thanks.
>>
>> --8<--
>>     patternProperties:
>>       '^port@[01]$':
>>         $ref: /schemas/graph.yaml#/$defs/port-base
>>         unevaluatedProperties: false
>>         description: |
>>           port@0 is for the first LVDS input link.
>>           port@1 is for the second LVDS input link.
>>
>>         properties:
>>           dual-lvds-odd-pixels:
>>             type: boolean
>>             description: LVDS input link for odd pixels
>>
>>           dual-lvds-even-pixels:
>>             type: boolean
>>             description: LVDS input link for even pixels
>>
>>         oneOf:
>>           - required: [dual-lvds-odd-pixels]
>>           - required: [dual-lvds-even-pixels]
>>           - properties:
>>               dual-lvds-odd-pixels: false
>>               dual-lvds-even-pixels: false
>>
>>     anyOf:
>>       - required:
>>           - port@0
>>       - required:
>>           - port@1
>> --8<--
>>
>>>
>>>
>>>> +
>>>> +        oneOf:
>>>> +          - required: [dual-lvds-odd-pixels]
>>>> +          - required: [dual-lvds-even-pixels]
>>>> +          - properties:
>>>> +              dual-lvds-odd-pixels: false
>>>> +              dual-lvds-even-pixels: false
>>>
>>> Why this is false here? oneOf is not sufficient?
>>
>> The 'false' is used when this LVDS link works alone as a single LVDS link, being odd and even
>> agnostic.
>>
>> The 'oneOf' allows a LVDS link to be defined as a single LVDS link or one link of dual LVDS links.
> 
> Ok, it makes sense for single LVDS link. Maybe rename the file to lvds-dual-ports.yaml->lvds-ports.yaml
> to make it clear, it is for all LVDS ports, if it is going to address single link case aswell??

Single-link LVDS displays are supposed to be documented
without referencing this schema, i.e., they may reference
lvds.yaml and define the single LVDS sink link with port
property(for panels) or port@0 property(for bridges).
port@1 would be defined as output port for bridges, not
input port.  Maybe, we'll have something like
lvds-single-port.yaml in the future.

> 
> Cheers,
> Biju
>
Biju Das Oct. 29, 2024, 9:18 a.m. UTC | #12
Hi Liu Ying,

> -----Original Message-----
> From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf Of Liu Ying
> Sent: 29 October 2024 09:07
> Subject: Re: [PATCH v4 08/13] dt-bindings: display: Document dual-link LVDS display common properties
> 
> On 10/29/2024, Biju Das wrote:
> > Hi Liu Ying,
> 
> Hi Biju,
> 
> >
> >> -----Original Message-----
> >> From: dri-devel <dri-devel-bounces@lists.freedesktop.org> On Behalf
> >> Of Liu Ying
> >> Sent: 29 October 2024 08:02
> >> Subject: Re: [PATCH v4 08/13] dt-bindings: display: Document
> >> dual-link LVDS display common properties
> >>
> >> On 10/29/2024, Biju Das wrote:
> >>> Hi Liu Ying,
> >>
> >> Hi Biju,
> >>
> >>>
> >>>> -----Original Message-----
> >>>> From: Liu Ying <victor.liu@nxp.com>
> >>>> Sent: 28 October 2024 02:38
> >>>> Subject: [PATCH v4 08/13] dt-bindings: display: Document dual-link
> >>>> LVDS display common properties
> >>>>
> >>>> Dual-link LVDS displays receive odd pixels and even pixels
> >>>> separately from dual LVDS links.  One link receives odd pixels and
> >>>> the other receives even pixels.  Some of those displays may also
> >>>> use only one LVDS link to receive all pixels, being odd and even
> >>>> agnostic.  Document common properties for those
> >> displays by extending LVDS display common properties defined in lvds.yaml.
> >>>>
> >>>> Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
> >>>> Signed-off-by: Liu Ying <victor.liu@nxp.com>
> >>>> ---
> >>>> v4:
> >>>> * Squash change for advantech,idk-2121wr.yaml and
> >>>>   panel-simple-lvds-dual-ports.yaml with lvds-dual-ports.yaml.
> >>>> (Rob)
> >>>> * Improve description in lvds-dual-ports.yaml.  (Krzysztof)
> >>>>
> >>>> v3:
> >>>> * New patch.  (Dmitry)
> >>>>
> >>>>  .../bindings/display/lvds-dual-ports.yaml     | 76 +++++++++++++++++++
> >>>>  .../display/panel/advantech,idk-2121wr.yaml   | 14 +---
> >>>>  .../panel/panel-simple-lvds-dual-ports.yaml   | 20 +----
> >>>>  3 files changed, 78 insertions(+), 32 deletions(-)  create mode
> >>>> 100644
> >>>> Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> >>>>
> >>>> diff --git
> >>>> a/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> >>>> b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
> >>>> new file mode 100644
> >>>> index 000000000000..5f7a30640404
> >>>> --- /dev/null
> >>>> +++ b/Documentation/devicetree/bindings/display/lvds-dual-ports.yam
> >>>> +++ l
> >>>> @@ -0,0 +1,76 @@
> >>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML
> >>>> +1.2
> >>>> +---
> >>>> +$id: http://devicetree.org/schemas/display/lvds-dual-ports.yaml#
> >>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> >>>> +
> >>>> +title: Dual-link LVDS Display Common Properties
> >>>> +
> >>>> +maintainers:
> >>>> +  - Liu Ying <victor.liu@nxp.com>
> >>>> +
> >>>> +description: |
> >>>> +  Common properties for LVDS displays with dual LVDS links. Extend
> >>>> +LVDS display
> >>>> +  common properties defined in lvds.yaml.
> >>>> +
> >>>> +  Dual-link LVDS displays receive odd pixels and even pixels
> >>>> + separately from  the dual LVDS links. One link receives odd
> >>>> + pixels and the other receives  even pixels. Some of those
> >>>> + displays may also use only one LVDS link to  receive all pixels, being odd and even agnostic.
> >>>> +
> >>>> +allOf:
> >>>> +  - $ref: lvds.yaml#
> >>>> +
> >>>> +properties:
> >>>> +  ports:
> >>>> +    $ref: /schemas/graph.yaml#/properties/ports
> >>>> +
> >>>> +    properties:
> >>>> +      port@0:
> >>>> +        $ref: /schemas/graph.yaml#/$defs/port-base
> >>>> +        unevaluatedProperties: false
> >>>> +        description: the first LVDS input link
> >>>> +
> >>>> +        properties:
> >>>> +          dual-lvds-odd-pixels:
> >>>> +            type: boolean
> >>>> +            description: the first LVDS input link for odd pixels
> >>>> +
> >>>> +          dual-lvds-even-pixels:
> >>>> +            type: boolean
> >>>> +            description: the first LVDS input link for even pixels
> >>>
> >>>
> >>> port@0 we know it is first link
> >>> port@1 we know it is second link.
> >>> dual-lvds-odd-pixels: We know it is for odd pixels.
> >>> dual-lvds-even-pixels: We know it is for odd pixels.
> >>>
> >>> Not sure, whether we can give common description and avoid the
> >>> duplicate from port@1 ??
> >>
> >> Yes, it'd better to use patternProperties. Thanks.
> >>
> >> --8<--
> >>     patternProperties:
> >>       '^port@[01]$':
> >>         $ref: /schemas/graph.yaml#/$defs/port-base
> >>         unevaluatedProperties: false
> >>         description: |
> >>           port@0 is for the first LVDS input link.
> >>           port@1 is for the second LVDS input link.
> >>
> >>         properties:
> >>           dual-lvds-odd-pixels:
> >>             type: boolean
> >>             description: LVDS input link for odd pixels
> >>
> >>           dual-lvds-even-pixels:
> >>             type: boolean
> >>             description: LVDS input link for even pixels
> >>
> >>         oneOf:
> >>           - required: [dual-lvds-odd-pixels]
> >>           - required: [dual-lvds-even-pixels]
> >>           - properties:
> >>               dual-lvds-odd-pixels: false
> >>               dual-lvds-even-pixels: false
> >>
> >>     anyOf:
> >>       - required:
> >>           - port@0
> >>       - required:
> >>           - port@1
> >> --8<--
> >>
> >>>
> >>>
> >>>> +
> >>>> +        oneOf:
> >>>> +          - required: [dual-lvds-odd-pixels]
> >>>> +          - required: [dual-lvds-even-pixels]
> >>>> +          - properties:
> >>>> +              dual-lvds-odd-pixels: false
> >>>> +              dual-lvds-even-pixels: false
> >>>
> >>> Why this is false here? oneOf is not sufficient?
> >>
> >> The 'false' is used when this LVDS link works alone as a single LVDS
> >> link, being odd and even agnostic.
> >>
> >> The 'oneOf' allows a LVDS link to be defined as a single LVDS link or one link of dual LVDS links.
> >
> > Ok, it makes sense for single LVDS link. Maybe rename the file to
> > lvds-dual-ports.yaml->lvds-ports.yaml
> > to make it clear, it is for all LVDS ports, if it is going to address single link case aswell??
> 
> Single-link LVDS displays are supposed to be documented without referencing this schema, i.e., they
> may reference lvds.yaml and define the single LVDS sink link with port property(for panels) or port@0
> property(for bridges).
> port@1 would be defined as output port for bridges, not input port.  Maybe, we'll have something like
> lvds-single-port.yaml in the future.

OK, then this binding is suffient I guess.

As description says, majority devices supports dual links.
Some dual link display supports single link as well.

Cheers,
Biju
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
new file mode 100644
index 000000000000..5f7a30640404
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/lvds-dual-ports.yaml
@@ -0,0 +1,76 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/lvds-dual-ports.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Dual-link LVDS Display Common Properties
+
+maintainers:
+  - Liu Ying <victor.liu@nxp.com>
+
+description: |
+  Common properties for LVDS displays with dual LVDS links. Extend LVDS display
+  common properties defined in lvds.yaml.
+
+  Dual-link LVDS displays receive odd pixels and even pixels separately from
+  the dual LVDS links. One link receives odd pixels and the other receives
+  even pixels. Some of those displays may also use only one LVDS link to
+  receive all pixels, being odd and even agnostic.
+
+allOf:
+  - $ref: lvds.yaml#
+
+properties:
+  ports:
+    $ref: /schemas/graph.yaml#/properties/ports
+
+    properties:
+      port@0:
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description: the first LVDS input link
+
+        properties:
+          dual-lvds-odd-pixels:
+            type: boolean
+            description: the first LVDS input link for odd pixels
+
+          dual-lvds-even-pixels:
+            type: boolean
+            description: the first LVDS input link for even pixels
+
+        oneOf:
+          - required: [dual-lvds-odd-pixels]
+          - required: [dual-lvds-even-pixels]
+          - properties:
+              dual-lvds-odd-pixels: false
+              dual-lvds-even-pixels: false
+
+      port@1:
+        $ref: /schemas/graph.yaml#/$defs/port-base
+        unevaluatedProperties: false
+        description: the second LVDS input link
+
+        properties:
+          dual-lvds-odd-pixels:
+            type: boolean
+            description: the second LVDS input link for odd pixels
+
+          dual-lvds-even-pixels:
+            type: boolean
+            description: the second LVDS input link for even pixels
+
+        oneOf:
+          - required: [dual-lvds-odd-pixels]
+          - required: [dual-lvds-even-pixels]
+          - properties:
+              dual-lvds-odd-pixels: false
+              dual-lvds-even-pixels: false
+
+required:
+  - ports
+
+additionalProperties: true
+
+...
diff --git a/Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml b/Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml
index 2e8dbdb5a3d5..05ca3b2385f8 100644
--- a/Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml
+++ b/Documentation/devicetree/bindings/display/panel/advantech,idk-2121wr.yaml
@@ -20,6 +20,7 @@  description: |
   dual-lvds-odd-pixels or dual-lvds-even-pixels).
 
 allOf:
+  - $ref: /schemas/display/lvds-dual-ports.yaml#
   - $ref: panel-common.yaml#
 
 properties:
@@ -44,22 +45,10 @@  properties:
 
     properties:
       port@0:
-        $ref: /schemas/graph.yaml#/$defs/port-base
-        unevaluatedProperties: false
-        description: The sink for odd pixels.
-        properties:
-          dual-lvds-odd-pixels: true
-
         required:
           - dual-lvds-odd-pixels
 
       port@1:
-        $ref: /schemas/graph.yaml#/$defs/port-base
-        unevaluatedProperties: false
-        description: The sink for even pixels.
-        properties:
-          dual-lvds-even-pixels: true
-
         required:
           - dual-lvds-even-pixels
 
@@ -75,7 +64,6 @@  required:
   - height-mm
   - data-mapping
   - panel-timing
-  - ports
 
 examples:
   - |+
diff --git a/Documentation/devicetree/bindings/display/panel/panel-simple-lvds-dual-ports.yaml b/Documentation/devicetree/bindings/display/panel/panel-simple-lvds-dual-ports.yaml
index 10ed4b57232b..e80fc7006984 100644
--- a/Documentation/devicetree/bindings/display/panel/panel-simple-lvds-dual-ports.yaml
+++ b/Documentation/devicetree/bindings/display/panel/panel-simple-lvds-dual-ports.yaml
@@ -22,6 +22,7 @@  description: |
   If the panel is more advanced a dedicated binding file is required.
 
 allOf:
+  - $ref: /schemas/display/lvds-dual-ports.yaml#
   - $ref: panel-common.yaml#
 
 properties:
@@ -55,28 +56,10 @@  properties:
 
     properties:
       port@0:
-        $ref: /schemas/graph.yaml#/$defs/port-base
-        unevaluatedProperties: false
-        description: The first sink port.
-
-        properties:
-          dual-lvds-odd-pixels:
-            type: boolean
-            description: The first sink port for odd pixels.
-
         required:
           - dual-lvds-odd-pixels
 
       port@1:
-        $ref: /schemas/graph.yaml#/$defs/port-base
-        unevaluatedProperties: false
-        description: The second sink port.
-
-        properties:
-          dual-lvds-even-pixels:
-            type: boolean
-            description: The second sink port for even pixels.
-
         required:
           - dual-lvds-even-pixels
 
@@ -88,7 +71,6 @@  unevaluatedProperties: false
 
 required:
   - compatible
-  - ports
   - power-supply
 
 examples: