Re: [PATCH v2 5/9] dt-bindings: display: bridge: Add ITE IT6263 LVDS to HDMI converter

From: Dmitry Baryshkov
Date: Mon Oct 14 2024 - 07:19:17 EST


On Mon, Oct 14, 2024 at 06:01:49PM +0800, Liu Ying wrote:
> On 10/14/2024, Dmitry Baryshkov wrote:
>
> [...]
>
> >>>>> My suggestion would be to add a single root-level property which
> >>>>> specifies which port provides even pixel data.
> >>>>
> >>>> That won't work. The LVDS source side expects the ports of
> >>>> the sink side specify dual-lvds-{odd,even}-pixels properties.
> >>>
> >>> I didn't notice that these properties are already defined.
> >>>
> >>> As these properties are common between several schema files, please
> >>> extract them to a common schema file (like lvds.yaml).
> >>
> >> I'm not sure how to do that. Is it obvious?
> >> Please shed some light.
> >>
> >> Only two panel schema files are defining even/odd pixels now -
> >> advantech,idk-2121wr.yaml and panel-simple-lvds-dual-ports.yaml.
> >> Maybe, extract them later when more schema files(especially for
> >> bridges) try to define the same? I'd like to keep a low profile
> >> for now.
> >
> > I'd say, please extract those now. Adding third is more than enough and
> > should be avoided. Extracting is pretty simple. One patch to move the
> > definition and descriptions from panel-simple-lvds-dual-ports to a
> > common location (e.g. lvds-dual-ports.yaml). Leave the required
> > constrains in place. Second patch is to add oneOf constraints to the
> > ports.
>
> oneOf just sits below ports so that single-port and dual-port
> are documented separately? That won't pass dt_binding_check
> as the v1 binding has proved that warnings will be generated.
>
> > port@0 might get the same oneOf + the
> > dual-lvds-{odd,even}-pixels:false case, allowing a single-port
> > definition.
>
> I don't catch this.
> Below snippet is a draft lvds-dual-port.yaml.
> How can it be referenced in ite,it6263.yaml?

allOf:
- $ref: /schemas/display/lvds-dual-port.yaml

Another option might be to use $defs, define two combinations:
single-or-dual-port, dual-only-port. Reference them from the panel
bindings and from your bridge bindings by using:

ports:
port@0:
$ref: /schemas/display/lvds.yaml#/#defs/single-or-dual-port

port@1:
$ref: /schemas/display/lvds.yaml#/#defs/dual-only-port

(the names are just an example, feel free to come with better
suggestions).

>
> ---8<---
> 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 sink port for odd pixels
>
> dual-lvds-even-pixels:
> type: boolean
> description: the first sink port for even pixels
>
> oneOf:
> - required: [dual-lvds-even-pixels]
> - required: [dual-lvds-odd-pixels]

Also under oneOf:
- 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-even-pixels:
> type: boolean
> description: the second sink port for even pixels
>
> dual-lvds-odd-pixels:
> type: boolean
> description: the second sink port for odd pixels
>
> oneOf:
> - required: [dual-lvds-even-pixels]
> - required: [dual-lvds-odd-pixels]
>
> required:
> - port@0
> - port@1

You allow both single-port and dual-port configurations, so you can not
use this required statement. Please keep this part in the corresponding
panel bindings.

>
> unevaluatedProperties: false
> ---8<---
>
> --
> Regards,
> Liu Ying
>

--
With best wishes
Dmitry