Hi Sam,

Thank you for the patch.

On Sun, Feb 16, 2020 at 07:15:10PM +0100, Sam Ravnborg wrote:
> Add display-timings.yaml - that references panel-timings.yaml.
> display-timings.yaml will be used for display bindings
> when they are converted to meta-schema format.
> 
> For now the old display-timing.txt points to the new
> display-timings.yaml - and all users are left as-is.
> 
> v2:
>   - Updated native-mode description
> 
> v3:
>   - Simpler "^timing" pattern (Rob)
>   - timing node is of type object (Rob)
>   - added display-timings to panel-common.yaml
>   - added yaml document terminator "..."
> 
> Signed-off-by: Sam Ravnborg <s...@ravnborg.org>
> Reviewed-by: Rob Herring <r...@kernel.org>
> Cc: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
> Cc: Thierry Reding <thierry.red...@gmail.com>
> Cc: Oleksandr Suvorov <oleksandr.suvo...@toradex.com>
> Cc: devicet...@vger.kernel.org
> ---
>  .../bindings/display/panel/display-timing.txt | 124 +-----------------
>  .../display/panel/display-timings.yaml        |  77 +++++++++++
>  .../bindings/display/panel/panel-common.yaml  |   8 ++
>  3 files changed, 86 insertions(+), 123 deletions(-)
>  create mode 100644 
> Documentation/devicetree/bindings/display/panel/display-timings.yaml
> 
> diff --git 
> a/Documentation/devicetree/bindings/display/panel/display-timing.txt 
> b/Documentation/devicetree/bindings/display/panel/display-timing.txt
> index 78222ced1874..7f55ad4a40c4 100644
> --- a/Documentation/devicetree/bindings/display/panel/display-timing.txt
> +++ b/Documentation/devicetree/bindings/display/panel/display-timing.txt
> @@ -1,123 +1 @@
> -display-timing bindings
> -=======================
> -
> -display-timings node
> ---------------------
> -
> -required properties:
> - - none
> -
> -optional properties:
> - - native-mode: The native mode for the display, in case multiple modes are
> -             provided. When omitted, assume the first node is the native.
> -
> -timing subnode
> ---------------
> -
> -required properties:
> - - hactive, vactive: display resolution
> - - hfront-porch, hback-porch, hsync-len: horizontal display timing parameters
> -   in pixels
> -   vfront-porch, vback-porch, vsync-len: vertical display timing parameters 
> in
> -   lines
> - - clock-frequency: display clock in Hz
> -
> -optional properties:
> - - hsync-active: hsync pulse is active low/high/ignored
> - - vsync-active: vsync pulse is active low/high/ignored
> - - de-active: data-enable pulse is active low/high/ignored
> - - pixelclk-active: with
> -                     - active high = drive pixel data on rising edge/
> -                                     sample data on falling edge
> -                     - active low  = drive pixel data on falling edge/
> -                                     sample data on rising edge
> -                     - ignored     = ignored
> - - syncclk-active: with
> -                     - active high = drive sync on rising edge/
> -                                     sample sync on falling edge of pixel
> -                                     clock
> -                     - active low  = drive sync on falling edge/
> -                                     sample sync on rising edge of pixel
> -                                     clock
> -                     - omitted     = same configuration as pixelclk-active
> - - interlaced (bool): boolean to enable interlaced mode
> - - doublescan (bool): boolean to enable doublescan mode
> - - doubleclk (bool): boolean to enable doubleclock mode
> -
> -All the optional properties that are not bool follow the following logic:
> -    <1>: high active
> -    <0>: low active
> -    omitted: not used on hardware
> -
> -There are different ways of describing the capabilities of a display. The
> -devicetree representation corresponds to the one commonly found in datasheets
> -for displays. If a display supports multiple signal timings, the native-mode
> -can be specified.
> -
> -The parameters are defined as:
> -
> -  +----------+-------------------------------------+----------+-------+
> -  |          |        ^                            |          |       |
> -  |          |        |vback_porch                 |          |       |
> -  |          |        v                            |          |       |
> -  +----------#######################################----------+-------+
> -  |          #        ^                            #          |       |
> -  |          #        |                            #          |       |
> -  |  hback   #        |                            #  hfront  | hsync |
> -  |   porch  #        |       hactive              #  porch   |  len  |
> -  |<-------->#<-------+--------------------------->#<-------->|<----->|
> -  |          #        |                            #          |       |
> -  |          #        |vactive                     #          |       |
> -  |          #        |                            #          |       |
> -  |          #        v                            #          |       |
> -  +----------#######################################----------+-------+
> -  |          |        ^                            |          |       |
> -  |          |        |vfront_porch                |          |       |
> -  |          |        v                            |          |       |
> -  +----------+-------------------------------------+----------+-------+
> -  |          |        ^                            |          |       |
> -  |          |        |vsync_len                   |          |       |
> -  |          |        v                            |          |       |
> -  +----------+-------------------------------------+----------+-------+
> -
> -Note: In addition to being used as subnode(s) of display-timings, the timing
> -      subnode may also be used on its own. This is appropriate if only one 
> mode
> -      need be conveyed. In this case, the node should be named 
> 'panel-timing'.
> -
> -
> -Example:
> -
> -     display-timings {
> -             native-mode = <&timing0>;
> -             timing0: 1080p24 {
> -                     /* 1920x1080p24 */
> -                     clock-frequency = <52000000>;
> -                     hactive = <1920>;
> -                     vactive = <1080>;
> -                     hfront-porch = <25>;
> -                     hback-porch = <25>;
> -                     hsync-len = <25>;
> -                     vback-porch = <2>;
> -                     vfront-porch = <2>;
> -                     vsync-len = <2>;
> -                     hsync-active = <1>;
> -             };
> -     };
> -
> -Every required property also supports the use of ranges, so the commonly used
> -datasheet description with minimum, typical and maximum values can be used.
> -
> -Example:
> -
> -     timing1: timing {
> -             /* 1920x1080p24 */
> -             clock-frequency = <148500000>;
> -             hactive = <1920>;
> -             vactive = <1080>;
> -             hsync-len = <0 44 60>;
> -             hfront-porch = <80 88 95>;
> -             hback-porch = <100 148 160>;
> -             vfront-porch = <0 4 6>;
> -             vback-porch = <0 36 50>;
> -             vsync-len = <0 5 6>;
> -     };
> +See display-timings.yaml in this directory.
> diff --git 
> a/Documentation/devicetree/bindings/display/panel/display-timings.yaml 
> b/Documentation/devicetree/bindings/display/panel/display-timings.yaml
> new file mode 100644
> index 000000000000..c8c0c9cb0492
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/panel/display-timings.yaml
> @@ -0,0 +1,77 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/display/panel/display-timings.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: display timing bindings

s/timing/timings/

> +
> +maintainers:
> +  - Thierry Reding <thierry.red...@gmail.com>
> +  - Laurent Pinchart <laurent.pinchart+rene...@ideasonboard.com>
> +  - Sam Ravnborg <s...@ravnborg.org>
> +
> +description: |
> +  A display panel may be able to handle several display timings,
> +  with different resolutions.
> +  The display-timings node makes it possible to specify the timing

s/the timing/the timings/

> +  and to specify the timing that is native for the display.
> +
> +properties:
> +  $nodename:
> +    const: display-timings
> +
> +  native-mode:
> +    $ref: /schemas/types.yaml#/definitions/phandle
> +    description: |
> +      The default display timing is the one specified as native-mode.
> +      If no native-mode is specified then the first node is assumed the

s/assumed the/assumed to be the/

> +      native mode.
> +
> +patternProperties:
> +  "^timing":

Should this be "^timing[0-9]*$", or do we want to allow or names ?

> +    type: object
> +    allOf:
> +      - $ref: panel-timing.yaml#
> +
> +additionalProperties: false
> +
> +examples:
> +  - |+
> +
> +    /*
> +     * Example that specifies panel timing using minimum, typical,
> +     * maximum values as commonly used in datasheet description.
> +     * timing1 is the native-mode.
> +     */
> +    display-timings {
> +        native-mode = <&timing1>;

Does this compile, as there's no phandle named timing1 ?

> +        timing0 {
> +            /* 1920x1080p24 */
> +            clock-frequency = <148500000>;
> +            hactive = <1920>;
> +            vactive = <1080>;
> +            hsync-len = <0 44 60>;
> +            hfront-porch = <80 88 95>;
> +            hback-porch = <100 148 160>;
> +            vfront-porch = <0 4 6>;
> +            vback-porch = <0 36 50>;
> +            vsync-len = <0 5 6>;
> +        };
> +        timing1 {
> +            /* 1920x1080p24 */
> +            clock-frequency = <52000000>;
> +            hactive = <1920>;
> +            vactive = <1080>;
> +            hfront-porch = <25>;
> +            hback-porch = <25>;
> +            hsync-len = <0 25 25>;
> +            vback-porch = <2>;
> +            vfront-porch = <2>;
> +            vsync-len = <2>;
> +            hsync-active = <1>;
> +            pixelclk-active = <1>;
> +        };
> +    };
> +
> +...
> diff --git 
> a/Documentation/devicetree/bindings/display/panel/panel-common.yaml 
> b/Documentation/devicetree/bindings/display/panel/panel-common.yaml
> index 8070c439adbd..ed051ba12084 100644
> --- a/Documentation/devicetree/bindings/display/panel/panel-common.yaml
> +++ b/Documentation/devicetree/bindings/display/panel/panel-common.yaml
> @@ -61,6 +61,14 @@ properties:
>      allOf:
>        - $ref: panel-timing.yaml#
>  
> +  display-timings:
> +    description:
> +      Some display panels supports several resolutions with different timing.

s/timing/timings/

> +      The display-timings bindings supports specifying several timings and
> +      optional specify which is the native mode.

s/optional/optionally/

With these small issues fixed,

Reviewed-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>

Great work !

> +    allOf:
> +      - $ref: display-timings.yaml#
> +
>    # Connectivity
>    port:
>      type: object

-- 
Regards,

Laurent Pinchart
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to