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