Commit 9e12da08 authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-misc-next-2020-03-09' of git://anongit.freedesktop.org/drm/drm-misc into drm-next



drm-misc-next for 5.7:

UAPI Changes:

Cross-subsystem Changes:

Core Changes:

Driver Changes:
 - fb-helper: Remove drm_fb_helper_{add,add_all,remove}_one_connector
 - fbdev: some cleanups and dead-code removal
 - Conversions to simple-encoder
 - zero-length array removal
 - Panel: panel-dpi support in panel-simple, Novatek NT35510, Elida
   KD35T133,

Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Maxime Ripard <maxime@cerno.tech>
Link: https://patchwork.freedesktop.org/patch/msgid/20200309135439.dicfnbo4ikj4tkz7@gilmour
parents d3bd37f5 bc1a4130
Loading
Loading
Loading
Loading
+1 −123
Original line number Diff line number Diff line
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.
+77 −0
Original line number Diff line number Diff line
# 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

maintainers:
  - Thierry Reding <thierry.reding@gmail.com>
  - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
  - Sam Ravnborg <sam@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
  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
      native mode.

patternProperties:
  "^timing":
    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>;
        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>;
        };
    };

...
+49 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/panel/elida,kd35t133.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Elida KD35T133 3.5in 320x480 DSI panel

maintainers:
  - Heiko Stuebner <heiko.stuebner@theobroma-systems.com>

allOf:
  - $ref: panel-common.yaml#

properties:
  compatible:
    const: elida,kd35t133
  reg: true
  backlight: true
  reset-gpios: true
  iovcc-supply:
     description: regulator that supplies the iovcc voltage
  vdd-supply:
     description: regulator that supplies the vdd voltage

required:
  - compatible
  - reg
  - backlight
  - iovcc-supply
  - vdd-supply

additionalProperties: false

examples:
  - |
    dsi@ff450000 {
        #address-cells = <1>;
        #size-cells = <0>;
        panel@0 {
            compatible = "elida,kd35t133";
            reg = <0>;
            backlight = <&backlight>;
            iovcc-supply = <&vcc_1v8>;
            vdd-supply = <&vcc3v3_lcd>;
        };
    };

...
+56 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/panel/novatek,nt35510.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Novatek NT35510-based display panels

maintainers:
  - Linus Walleij <linus.walleij@linaro.org>

allOf:
  - $ref: panel-common.yaml#

properties:
  compatible:
    items:
      - const: hydis,hva40wv1
      - const: novatek,nt35510
    description: This indicates the panel manufacturer of the panel
      that is in turn using the NT35510 panel driver. The compatible
      string determines how the NT35510 panel driver shall be configured
      to work with the indicated panel. The novatek,nt35510 compatible shall
      always be provided as a fallback.
  reg: true
  reset-gpios: true
  vdd-supply:
     description: regulator that supplies the vdd voltage
  vddi-supply:
     description: regulator that supplies the vddi voltage
  backlight: true

required:
  - compatible
  - reg

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>

    dsi@a0351000 {
        #address-cells = <1>;
        #size-cells = <0>;
        panel {
            compatible = "hydis,hva40wv1", "novatek,nt35510";
            reg = <0>;
            vdd-supply = <&ab8500_ldo_aux4_reg>;
            vddi-supply = <&ab8500_ldo_aux6_reg>;
            reset-gpios = <&gpio4 11 GPIO_ACTIVE_LOW>;
            backlight = <&gpio_bl>;
        };
    };

...
+11 −4
Original line number Diff line number Diff line
@@ -54,13 +54,20 @@ 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#

  display-timings:
    description:
      Some display panels supports several resolutions with different timing.
      The display-timings bindings supports specifying several timings and
      optional specify which is the native mode.
    allOf:
      - $ref: display-timings.yaml#

  # Connectivity
  port:
Loading