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