On Mon, Jan 20, 2020 at 2:07 PM Sam Ravnborg <sam@xxxxxxxxxxxx> wrote: > > Add meta-schema variant of panel-timing and > reference it from panel-common.yaml. > > Signed-off-by: Sam Ravnborg <sam@xxxxxxxxxxxx> > Cc: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > Cc: Rob Herring <robh@xxxxxxxxxx> > Cc: Thierry Reding <thierry.reding@xxxxxxxxx> > Cc: Oleksandr Suvorov <oleksandr.suvorov@xxxxxxxxxxx> > Cc: devicetree@xxxxxxxxxxxxxxx > --- > .../bindings/display/panel/panel-common.yaml | 7 +- > .../bindings/display/panel/panel-timing.yaml | 253 ++++++++++++++++++ > 2 files changed, 256 insertions(+), 4 deletions(-) > create mode 100644 Documentation/devicetree/bindings/display/panel/panel-timing.yaml > > diff --git a/Documentation/devicetree/bindings/display/panel/panel-common.yaml b/Documentation/devicetree/bindings/display/panel/panel-common.yaml > index ef8d8cdfcede..8070c439adbd 100644 > --- a/Documentation/devicetree/bindings/display/panel/panel-common.yaml > +++ b/Documentation/devicetree/bindings/display/panel/panel-common.yaml > @@ -54,13 +54,12 @@ properties: > > # Display Timings > panel-timing: > - type: object > description: > Most display panels are restricted to a single resolution and > require specific display timings. The panel-timing subnode expresses those > - timings as specified in the timing subnode section of the display timing > - bindings defined in > - Documentation/devicetree/bindings/display/panel/display-timing.txt. > + timings. > + allOf: > + - $ref: panel-timing.yaml# > > # Connectivity > port: > diff --git a/Documentation/devicetree/bindings/display/panel/panel-timing.yaml b/Documentation/devicetree/bindings/display/panel/panel-timing.yaml > new file mode 100644 > index 000000000000..59891c7a58ee > --- /dev/null > +++ b/Documentation/devicetree/bindings/display/panel/panel-timing.yaml > @@ -0,0 +1,253 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) Some of this comes from the existing binding files, do you have rights to change the license (it would be nice to get it). > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/display/panel/panel-timing.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: panel timing bindings > + > +maintainers: > + - Thierry Reding <thierry.reding@xxxxxxxxx> > + - Sam Ravnborg <sam@xxxxxxxxxxxx> > + > +description: | > + There are different ways of describing the timing data data of a panel. The > + devicetree representation corresponds to the one commonly found in datasheets > + for panels. If a panel supports multiple signal timings, the native-mode > + can be specified. > + > + The parameters are defined as seen in the following illustration. > + > + +----------+-------------------------------------+----------+-------+ > + | | ^ | | | > + | | |vback_porch | | | > + | | v | | | > + +----------#######################################----------+-------+ > + | # ^ # | | > + | # | # | | > + | hback # | # hfront | hsync | > + | porch # | hactive # porch | len | > + |<-------->#<-------+--------------------------->#<-------->|<----->| > + | # | # | | > + | # |vactive # | | > + | # | # | | > + | # v # | | > + +----------#######################################----------+-------+ > + | | ^ | | | > + | | |vfront_porch | | | > + | | v | | | > + +----------+-------------------------------------+----------+-------+ > + | | ^ | | | > + | | |vsync_len | | | > + | | v | | | > + +----------+-------------------------------------+----------+-------+ > + > + > + The following is the panel timings shown with time on the x-axis. > + This matches the timing diagrams often found in data sheets. > + > + Active Front Sync Back > + Region Porch Porch > + <-----------------------><----------------><-------------><--------------> > + //////////////////////| > + ////////////////////// | > + ////////////////////// |.................. ................ > + _______________ > + > + Timing can be specified either as a typical value or as a tuple > + of min, typ, max values. > + > +properties: > + > + clock-frequency: > + $ref: /schemas/types.yaml#/definitions/uint32 There's already a type definition for this. > + description: | Drop '|' unless you have multiple paragraphs or need to maintain formatting. > + Panel clock in Hz > + > + hactive: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: | > + Horizontal panel resolution in pixels > + > + vactive: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: | > + Verical panel resolution in pixels typo > + > + hfront-porch: > + description: | > + Horizontal front porch panel timing > + oneOf: > + - allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32-array > + - maxItems: 1 > + items: > + description: typical number of pixels > + - allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32-array > + - minItems: 3 > + maxItems: 3 > + items: > + description: min, typ, max number of pixels I think you can describe it like this (test with 2 items though): allOf: - $ref: /schemas/types.yaml#/definitions/uint32-array not: maxItems: 2 items: - description: ... - description: ... - description: ... > + > + hback-porch: > + description: | > + Horizontal back porch timing > + oneOf: > + - allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32-array > + - maxItems: 1 > + items: > + description: typical number of pixels > + - allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32-array > + - minItems: 3 > + maxItems: 3 > + items: > + description: min, typ, max number of pixels > + > + hsync-len: > + description: | > + Horizontal sync length panel timing > + oneOf: > + - allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32-array > + - maxItems: 1 > + items: > + description: typical number of pixels > + - allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32-array > + - minItems: 3 > + maxItems: 3 > + items: > + description: min, typ, max number of pixels > + > + vfront-porch: > + description: | > + Vertical front porch panel timing > + oneOf: > + - allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32-array > + - maxItems: 1 > + items: > + description: typical number of lines > + - allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32-array > + - minItems: 3 > + maxItems: 3 > + items: > + description: min, typ, max number of lines > + > + vback-porch: > + description: | > + Vertical back porch panel timing > + oneOf: > + - allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32-array > + - maxItems: 1 > + items: > + description: typical number of lines > + - allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32-array > + - minItems: 3 > + maxItems: 3 > + items: > + description: min, typ, max number of lines > + > + vsync-len: > + description: | > + Vertical sync length panel timing > + oneOf: > + - allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32-array > + - maxItems: 1 > + items: > + description: typical number of lines > + - allOf: > + - $ref: /schemas/types.yaml#/definitions/uint32-array > + - minItems: 3 > + maxItems: 3 > + items: > + description: min, typ, max number of lines > + > + hsync-active: > + description: | > + Horizontal sync pulse. > + If omitted then it is not used by the hardware > + oneOf: > + - const: 0 > + description: active low > + - const: 1 > + description: active high > + > + vsync-active: > + description: | > + Vertical sync pulse. > + If omitted then it is not used by the hardware > + oneOf: > + - const: 0 > + description: active low > + - const: 1 > + description: active high > + > + de-active: > + description: | > + Data enable. > + If omitted then it is not used by the hardware > + oneOf: > + - const: 0 > + description: active low > + - const: 1 > + description: active high > + > + pixelclk-active: > + description: | > + Data driving on rising or falling edge > + oneOf: > + - const: 0 > + description: | > + Drive pixel data on falling edge and > + sample data on rising edge > + - const: 1 > + description: | > + Drive pixel data on rising edge and > + sample data on falling edge > + > + syncclk-active: > + description: | > + Drive sync on rising or sample sync on falling edge. > + If not specified then the same as pixelclk-active > + oneOf: > + - const: 0 > + description: | > + Drive sync on falling edge and > + sample sync on rising edge of pixel clock > + - const: 1 > + description: | > + Drive sync on rising edge and > + sample sync on falling edge of pixel clock > + > + interlaced: > + type: boolean > + description: Enable interlaced mode > + > + doublescan: > + type: boolean > + description: Enable double scan mode > + > + doubleclk: > + type: boolean > + description: Enable double clock mode > + > +required: > + - clock-frequency > + - hactive > + - vactive > + - hfront-porch > + - hback-porch > + - hsync-len > + - vfront-porch > + - vback-porch > + - vsync-len > + > +additionalProperties: false > -- > 2.20.1 >