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

Laurent Pinchart laurent.pinchart at ideasonboard.com
Fri Nov 8 16:12:26 UTC 2019


Hi Rob,

On Fri, Nov 08, 2019 at 06:01:20PM +0200, Laurent Pinchart wrote:
> 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.

I've now run dt_binding_check without DT_SCHEMA_FILES, and without a
uniqueItems in each of the oneOf options, duplicate values are allowed.
Is this expected ?

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