[PATCH v9 1/4] dt-bindings: display: xlnx: Add ZynqMP DP subsystem bindings

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri Nov 8 16:01:20 UTC 2019


Hi Rob,

On Fri, Nov 08, 2019 at 09:57:55AM -0600, Rob Herring wrote:
> On Fri, Nov 8, 2019 at 8:32 AM Laurent Pinchart wrote:
> > On Fri, Nov 08, 2019 at 04:10:40PM +0200, Laurent Pinchart wrote:
> > > On Fri, Nov 08, 2019 at 04:07:33PM +0200, Laurent Pinchart wrote:
> > > > On Thu, Sep 26, 2019 at 09:57:29AM -0500, Rob Herring wrote:
> > > > > On Thu, Sep 26, 2019 at 9:23 AM Laurent Pinchart wrote:
> > > > >> On Thu, Sep 26, 2019 at 09:15:01AM -0500, Rob Herring wrote:
> > > > >>> On Wed, Sep 25, 2019 at 6:56 PM Laurent Pinchart wrote:
> > > > >>>>
> > > > >>>> From: Hyun Kwon <hyun.kwon at xilinx.com>
> > > > >>>>
> > > > >>>> The bindings describe the ZynqMP DP subsystem. They don't support the
> > > > >>>> interface with the programmable logic (FPGA) or audio yet.
> > > > >>>>
> > > > >>>> Signed-off-by: Hyun Kwon <hyun.kwon at xilinx.com>
> > > > >>>> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > > > >>>> ---
> > > > >>>> Changes since v8:
> > > > >>>>
> > > > >>>> - Convert to yaml
> > > > >>>> - Rename aclk to dp_apb_clk
> > > > >>>
> > > > >>> /builds/robherring/linux-dt-review/Documentation/devicetree/bindings/display/xlnx/xlnx,zynqmp-dpsub.example.dt.yaml:
> > > > >>> display at fd4a0000: clock-names:2: 'dp_vtc_pixel_clk_in' was expected
> > > > >>
> > > > >> If you allow me to steal a bit of your brain time, could you help me
> > > > >> expressing the clocks constraint ?
> > > > >>
> > > > >>   clocks:
> > > > >>     description:
> > > > >>       The AXI clock and at least one video clock are mandatory, the audio clock
> > > > >>       optional.
> > > > >>     minItems: 2
> > > > >>     maxItems: 4
> > > > >>     items:
> > > > >>       - description: AXI clock
> > > > >>       - description: Audio clock
> > > > >>       - description: Non-live video clock (from Processing System)
> > > > >>       - description: Live video clock (from Programmable Logic)
> > > > >>   clock-names:
> > > > >>     minItems: 2
> > > > >>     maxItems: 4
> > > > >>     items:
> > > > >>       - const: dp_apb_clk
> > > > >>       - const: dp_aud_clk
> > > > >>       - const: dp_vtc_pixel_clk_in
> > > > >>       - const: dp_live_video_in_clk
> > > > >>
> > > > >> dp_apb_clk is required, dp_aud_clk is optional, and at least one of
> > > > >> dp_vtc_pixel_clk_in and dp_live_video_in_clk is required.
> > > > >
> > > > > I'm hoping people's inability to express the schema will prevent
> > > > > complicated ones like this in the first place...
> > > > >
> > > > > clock-names:
> > > > >   oneOf:
> > > > >     - minItems: 3
> > > > >       maxItems: 4
> > > > >       items:
> > > > >         - const: dp_apb_clk
> > > > >         - const: dp_aud_clk
> > > > >         - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
> > > > >         - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
> > > > >     - minItems: 2
> > > > >       maxItems: 3
> > > > >       items:
> > > > >         - const: dp_apb_clk
> > > > >         - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
> > > > >         - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
> > > >
> > > > The above would make
> > > >
> > > >     clock-names = "dp_apb_clk", "dp_vtc_pixel_clk_in", "dp_vtc_pixel_clk_in";
> > > >
> > > > valid. I've investigated a little bit and found uniqueItems which solves
> > > > my issue.
> 
> It wouldn't because uniqueItems is the default (not for json-schema,
> but DT schema string-arrays).
> 
> > > > Would the following simpler solution be acceptable ?
> > > >
> > > > clock-names:
> > > >     minItems: 2
> > > >     maxItems: 4
> > > >     items:
> > > >       - const: dp_apb_clk
> > > >       - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
> > > >       - const: dp_aud_clk
> > > >       - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
> > > >     uniqueItems: true
> > >
> > > To give more context,
> > >
> > >   clocks:
> > >     description:
> > >       The AXI clock and at least one video clock are mandatory, the audio clock
> > >       is optional.
> > >     minItems: 2
> > >     maxItems: 4
> > >     items:
> > >       - description: dp_apb_clk is the AXI clock
> > >       - description: dp_aud_clk is the Audio clock
> > >       - description:
> > >           dp_vtc_pixel_clk_in is the non-live video clock (from Processing
> > >           System)
> > >       - description:
> > >           dp_live_video_in_clk is the live video clock (from Programmable
> > >           Logic)
> > >   clock-names:
> > >       minItems: 2
> > >       maxItems: 4
> > >       items:
> > >         - const: dp_apb_clk
> > >         - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
> > >         - const: dp_aud_clk
> > >         - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
> > >       uniqueItems: true
> 
> 'clock' and 'clock-names' don't match. dp_aud_clk is in the wrong spot.

You're right, and after thinking twice about it, this won't allow

	clock-names = "dp_apb_clk", "dp_vtc_pixel_clk_in", "dp_live_video_in_clk";

so your solution is the only one that will work.

> >
> > There's something going on that I can't really understand...
> >
> > clock-names:
> >   minItems: 2
> >   maxItems: 4
> >   items:
> >     - const: dp_apb_clk
> >     - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
> >     - const: dp_aud_clk
> >     - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
> >   uniqueItems: true
> >
> > results in dt_mk_schema complaining about an invalid schema. However,
> > the following works:
> 
> Because 'uniqueItems' is not allowed because it's not needed.

Error messages could be improved :-)

> > clock-names:
> >   oneOf:
> >     - minItems: 2
> >       maxItems: 4
> >       items:
> >         - const: dp_apb_clk
> >         - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
> >         - const: dp_aud_clk
> >         - enum: [ dp_vtc_pixel_clk_in, dp_live_video_in_clk ]
> >       uniqueItems: true
> >
> > I assume this is due to clock-names being a string-array, which already
> > contains uniqueItems. However, if I leave uniqueItems out, an example
> > with a duplicated clock-names validates fine.
> 
> Are you using 'DT_SCHEMA_FILES' as that leaves out all the core schema?

Ah, that's probably why ! Thank you.

> BTW, this case is probably allowed because we fail to apply the same
> meta-schemas for schema behind the oneOf.

-- 
Regards,

Laurent Pinchart


More information about the dri-devel mailing list