Common Properties for Display Panel
===================================

This document defines device tree properties common to several classes of
display panels. It doesn't constitue a device tree binding specification by
itself but is meant to be referenced by device tree bindings.

When referenced from panel device tree bindings the properties defined in this
document are defined as follows. The panel device tree bindings are
responsible for defining whether each property is required or optional.


Descriptive Properties
----------------------

- width-mm,
- height-mm: The width-mm and height-mm specify the width and height of the
  physical area where images are displayed. These properties are expressed in
  millimeters and rounded to the closest unit.

- label: The label property specifies a symbolic name for the panel as a
  string suitable for use by humans. It typically contains a name inscribed on
  the system (e.g. as an affixed label) or specified in the system's
  documentation (e.g. in the user's manual).

  If no such name exists, and unless the property is mandatory according to
  device tree bindings, it shall rather be omitted than constructed of
  non-descriptive information. For instance an LCD panel in a system that
  contains a single panel shall not be labelled "LCD" if that name is not
  inscribed on the system or used in a descriptive fashion in system
  documentation.


Display Timings
---------------

- panel-timing: 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.


Connectivity
------------

- ports: Panels receive video data through one or multiple connections. While
  the nature of those connections is specific to the panel type, the
  connectivity is expressed in a standard fashion using ports as specified in
  the device graph bindings defined in
  Documentation/devicetree/bindings/graph.txt.

- ddc-i2c-bus: Some panels expose EDID information through an I2C-compatible
  bus such as DDC2 or E-DDC. For such panels the ddc-i2c-bus contains a
  phandle to the system I2C controller connected to that bus.


Control I/Os
------------

Many display panels can be controlled through pins driven by GPIOs. The nature
and timing of those control signals are device-specific and left for panel
device tree bindings to specify. The following GPIO specifiers can however be
used for panels that implement compatible control signals.

- enable-gpios: Specifier for a GPIO connected to the panel enable control
  signal. The enable signal is active high and enables operation of the panel.
  This property can also be used for panels implementing an active low power
  down signal, which is a negated version of the enable signal. Active low
  enable signals (or active high power down signals) can be supported by
  inverting the GPIO specifier polarity flag.

  Note that the enable signal control panel operation only and must not be
  confused with a backlight enable signal.

- reset-gpios: Specifier for a GPIO coonnected to the panel reset control
  signal. The reset signal is active low and resets the panel internal logic
  while active. Active high reset signals can be supported by inverting the
  GPIO specifier polarity flag.

Power
-----

- power-supply: display panels require power to be supplied. While several
  panels need more than one power supply with panel-specific constraints
  governing the order and timings of the power supplies, in many cases a single
  power supply is sufficient, either because the panel has a single power rail,
  or because all its power rails can be driven by the same supply. In that case
  the power-supply property specifies the supply powering the panel as a phandle
  to a regulator.

Backlight
---------

Most display panels include a backlight. Some of them also include a backlight
controller exposed through a control bus such as I2C or DSI. Others expose
backlight control through GPIO, PWM or other signals connected to an external
backlight controller.

- backlight: For panels whose backlight is controlled by an external backlight
  controller, this property contains a phandle that references the controller.
