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 - interlaced (bool): boolean to enable interlaced mode
36 - doublescan (bool): boolean to enable doublescan mode
37 - doubleclk (bool): boolean to enable doubleclock mode
38
39All the optional properties that are not bool follow the following logic:
40    <1>: high active
41    <0>: low active
42    omitted: not used on hardware
43
44There are different ways of describing the capabilities of a display. The
45devicetree representation corresponds to the one commonly found in datasheets
46for displays. If a display supports multiple signal timings, the native-mode
47can be specified.
48
49The parameters are defined as:
50
51  +----------+-------------------------------------+----------+-------+
52  |          |        ↑                            |          |       |
53  |          |        |vback_porch                 |          |       |
54  |          |        ↓                            |          |       |
55  +----------#######################################----------+-------+
56  |          #        ↑                            #          |       |
57  |          #        |                            #          |       |
58  |  hback   #        |                            #  hfront  | hsync |
59  |   porch  #        |       hactive              #  porch   |  len  |
60  |<-------->#<-------+--------------------------->#<-------->|<----->|
61  |          #        |                            #          |       |
62  |          #        |vactive                     #          |       |
63  |          #        |                            #          |       |
64  |          #        ↓                            #          |       |
65  +----------#######################################----------+-------+
66  |          |        ↑                            |          |       |
67  |          |        |vfront_porch                |          |       |
68  |          |        ↓                            |          |       |
69  +----------+-------------------------------------+----------+-------+
70  |          |        ↑                            |          |       |
71  |          |        |vsync_len                   |          |       |
72  |          |        ↓                            |          |       |
73  +----------+-------------------------------------+----------+-------+
74
75Example:
76
77	display-timings {
78		native-mode = <&timing0>;
79		timing0: 1080p24 {
80			/* 1920x1080p24 */
81			clock-frequency = <52000000>;
82			hactive = <1920>;
83			vactive = <1080>;
84			hfront-porch = <25>;
85			hback-porch = <25>;
86			hsync-len = <25>;
87			vback-porch = <2>;
88			vfront-porch = <2>;
89			vsync-len = <2>;
90			hsync-active = <1>;
91		};
92	};
93
94Every required property also supports the use of ranges, so the commonly used
95datasheet description with minimum, typical and maximum values can be used.
96
97Example:
98
99	timing1: timing {
100		/* 1920x1080p24 */
101		clock-frequency = <148500000>;
102		hactive = <1920>;
103		vactive = <1080>;
104		hsync-len = <0 44 60>;
105		hfront-porch = <80 88 95>;
106		hback-porch = <100 148 160>;
107		vfront-porch = <0 4 6>;
108		vback-porch = <0 36 50>;
109		vsync-len = <0 5 6>;
110	};
111