[PATCH v9 1/4] dt-bindings: display: xlnx: Add ZynqMP DP subsystem bindings
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Fri Nov 8 14:31:55 UTC 2019
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.
> >
> > 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
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:
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.
> > > Strictly speaking, that leaves items clocks wrong, but 'description'
> > > doesn't do anything. So I'd just leave it as is.
> >
> > Speaking of which, there doesn't seem to be anything that validates the
> > size of clocks and clock-names being identical. Is that a known issue ?
--
Regards,
Laurent Pinchart
More information about the dri-devel
mailing list