1display-timing bindings
2=======================
3
4display-timings node
5--------------------
6
7required properties:
8 - none
9
10optional properties:
11 - native-mode: The native mode for the display, in case multiple modes are
12		provided. When omitted, assume the first node is the native.
13
14timing subnode
15--------------
16
17required properties:
18 - hactive, vactive: display resolution
19 - hfront-porch, hback-porch, hsync-len: horizontal display timing parameters
20   in pixels
21   vfront-porch, vback-porch, vsync-len: vertical display timing parameters in
22   lines
23 - clock-frequency: display clock in Hz
24
25optional properties:
26 - hsync-active: hsync pulse is active low/high/ignored
27 - vsync-active: vsync pulse is active low/high/ignored
28 - de-active: data-enable pulse is active low/high/ignored
29 - pixelclk-active: with
30			- active high = drive pixel data on rising edge/
31					sample data on falling edge
32			- active low  = drive pixel data on falling edge/
33					sample data on rising edge
34			- ignored     = ignored
35 - syncclk-active: with
36			- active high = drive sync on rising edge/
37					sample sync on falling edge of pixel
38					clock
39			- active low  = drive sync on falling edge/
40					sample sync on rising edge of pixel
41					clock
42			- omitted     = same configuration as pixelclk-active
43 - interlaced (bool): boolean to enable interlaced mode
44 - doublescan (bool): boolean to enable doublescan mode
45 - doubleclk (bool): boolean to enable doubleclock mode
46
47All the optional properties that are not bool follow the following logic:
48    <1>: high active
49    <0>: low active
50    omitted: not used on hardware
51
52There are different ways of describing the capabilities of a display. The
53devicetree representation corresponds to the one commonly found in datasheets
54for displays. If a display supports multiple signal timings, the native-mode
55can be specified.
56
57The parameters are defined as:
58
59  +----------+-------------------------------------+----------+-------+
60  |          |        ^                            |          |       |
61  |          |        |vback_porch                 |          |       |
62  |          |        v                            |          |       |
63  +----------#######################################----------+-------+
64  |          #        ^                            #          |       |
65  |          #        |                            #          |       |
66  |  hback   #        |                            #  hfront  | hsync |
67  |   porch  #        |       hactive              #  porch   |  len  |
68  |<-------->#<-------+--------------------------->#<-------->|<----->|
69  |          #        |                            #          |       |
70  |          #        |vactive                     #          |       |
71  |          #        |                            #          |       |
72  |          #        v                            #          |       |
73  +----------#######################################----------+-------+
74  |          |        ^                            |          |       |
75  |          |        |vfront_porch                |          |       |
76  |          |        v                            |          |       |
77  +----------+-------------------------------------+----------+-------+
78  |          |        ^                            |          |       |
79  |          |        |vsync_len                   |          |       |
80  |          |        v                            |          |       |
81  +----------+-------------------------------------+----------+-------+
82
83Note: In addition to being used as subnode(s) of display-timings, the timing
84      subnode may also be used on its own. This is appropriate if only one mode
85      need be conveyed. In this case, the node should be named 'panel-timing'.
86
87
88Example:
89
90	display-timings {
91		native-mode = <&timing0>;
92		timing0: 1080p24 {
93			/* 1920x1080p24 */
94			clock-frequency = <52000000>;
95			hactive = <1920>;
96			vactive = <1080>;
97			hfront-porch = <25>;
98			hback-porch = <25>;
99			hsync-len = <25>;
100			vback-porch = <2>;
101			vfront-porch = <2>;
102			vsync-len = <2>;
103			hsync-active = <1>;
104		};
105	};
106
107Every required property also supports the use of ranges, so the commonly used
108datasheet description with minimum, typical and maximum values can be used.
109
110Example:
111
112	timing1: timing {
113		/* 1920x1080p24 */
114		clock-frequency = <148500000>;
115		hactive = <1920>;
116		vactive = <1080>;
117		hsync-len = <0 44 60>;
118		hfront-porch = <80 88 95>;
119		hback-porch = <100 148 160>;
120		vfront-porch = <0 4 6>;
121		vback-porch = <0 36 50>;
122		vsync-len = <0 5 6>;
123	};
124