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
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
> +
> +...

[...]
Liu Ying Oct. 29, 2024, 7:13 a.m. UTC | #2
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:33 a.m. UTC | #3
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
Biju Das Oct. 29, 2024, 7:48 a.m. UTC | #4
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
Biju Das Oct. 29, 2024, 9:18 a.m. UTC | #5
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: