[PATCH v3 2/5] dt-bindings: display: convert display-timings to DT schema

Laurent Pinchart laurent.pinchart at ideasonboard.com
Tue Mar 3 18:46:49 UTC 2020


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 <sam at ravnborg.org>
> Reviewed-by: Rob Herring <robh at kernel.org>
> Cc: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> Cc: Thierry Reding <thierry.reding at gmail.com>
> Cc: Oleksandr Suvorov <oleksandr.suvorov at toradex.com>
> Cc: devicetree at 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.reding at gmail.com>
> +  - Laurent Pinchart <laurent.pinchart+renesas at ideasonboard.com>
> +  - Sam Ravnborg <sam at 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.pinchart at ideasonboard.com>

Great work !

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

-- 
Regards,

Laurent Pinchart


More information about the dri-devel mailing list