1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/display/panel/panel-timing.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: panel timing bindings
8
9maintainers:
10  - Thierry Reding <thierry.reding@gmail.com>
11  - Sam Ravnborg <sam@ravnborg.org>
12
13description: |
14  There are different ways of describing the timing data of a panel. The
15  devicetree representation corresponds to the one commonly found in datasheets
16  for panels.
17
18  The parameters are defined as seen in the following illustration.
19
20  +----------+-------------------------------------+----------+-------+
21  |          |        ^                            |          |       |
22  |          |        |vback_porch                 |          |       |
23  |          |        v                            |          |       |
24  +----------#######################################----------+-------+
25  |          #        ^                            #          |       |
26  |          #        |                            #          |       |
27  |  hback   #        |                            #  hfront  | hsync |
28  |   porch  #        |       hactive              #  porch   |  len  |
29  |<-------->#<-------+--------------------------->#<-------->|<----->|
30  |          #        |                            #          |       |
31  |          #        |vactive                     #          |       |
32  |          #        |                            #          |       |
33  |          #        v                            #          |       |
34  +----------#######################################----------+-------+
35  |          |        ^                            |          |       |
36  |          |        |vfront_porch                |          |       |
37  |          |        v                            |          |       |
38  +----------+-------------------------------------+----------+-------+
39  |          |        ^                            |          |       |
40  |          |        |vsync_len                   |          |       |
41  |          |        v                            |          |       |
42  +----------+-------------------------------------+----------+-------+
43
44
45  The following is the panel timings shown with time on the x-axis.
46  This matches the timing diagrams often found in data sheets.
47
48              Active                 Front           Sync           Back
49              Region                 Porch                          Porch
50  <-----------------------><----------------><-------------><-------------->
51    //////////////////////|
52   ////////////////////// |
53  //////////////////////  |..................               ................
54                                             _______________
55
56  Timing can be specified either as a typical value or as a tuple
57  of min, typ, max values.
58
59properties:
60
61  clock-frequency:
62   description: Panel clock in Hz
63
64  hactive:
65    $ref: /schemas/types.yaml#/definitions/uint32
66    description: Horizontal panel resolution in pixels
67
68  vactive:
69    $ref: /schemas/types.yaml#/definitions/uint32
70    description: Vertical panel resolution in pixels
71
72  hfront-porch:
73    description: Horizontal front porch panel timing
74    oneOf:
75      - allOf:
76        - $ref: /schemas/types.yaml#/definitions/uint32
77        - maxItems: 1
78          items:
79            description: typical number of pixels
80      - allOf:
81        - $ref: /schemas/types.yaml#/definitions/uint32-array
82        - minItems: 3
83          maxItems: 3
84          items:
85            description: min, typ, max number of pixels
86
87  hback-porch:
88    description: Horizontal back porch timing
89    oneOf:
90      - allOf:
91        - $ref: /schemas/types.yaml#/definitions/uint32
92        - maxItems: 1
93          items:
94            description: typical number of pixels
95      - allOf:
96        - $ref: /schemas/types.yaml#/definitions/uint32-array
97        - minItems: 3
98          maxItems: 3
99          items:
100            description: min, typ, max number of pixels
101
102  hsync-len:
103    description: Horizontal sync length panel timing
104    oneOf:
105      - allOf:
106        - $ref: /schemas/types.yaml#/definitions/uint32
107        - maxItems: 1
108          items:
109            description: typical number of pixels
110      - allOf:
111        - $ref: /schemas/types.yaml#/definitions/uint32-array
112        - minItems: 3
113          maxItems: 3
114          items:
115            description: min, typ, max number of pixels
116
117  vfront-porch:
118    description: Vertical front porch panel timing
119    oneOf:
120      - allOf:
121        - $ref: /schemas/types.yaml#/definitions/uint32
122        - maxItems: 1
123          items:
124            description: typical number of lines
125      - allOf:
126        - $ref: /schemas/types.yaml#/definitions/uint32-array
127        - minItems: 3
128          maxItems: 3
129          items:
130            description: min, typ, max number of lines
131
132  vback-porch:
133    description: Vertical back porch panel timing
134    oneOf:
135      - allOf:
136        - $ref: /schemas/types.yaml#/definitions/uint32
137        - maxItems: 1
138          items:
139            description: typical number of lines
140      - allOf:
141        - $ref: /schemas/types.yaml#/definitions/uint32-array
142        - minItems: 3
143          maxItems: 3
144          items:
145            description: min, typ, max number of lines
146
147  vsync-len:
148    description: Vertical sync length panel timing
149    oneOf:
150      - allOf:
151        - $ref: /schemas/types.yaml#/definitions/uint32
152        - maxItems: 1
153          items:
154            description: typical number of lines
155      - allOf:
156        - $ref: /schemas/types.yaml#/definitions/uint32-array
157        - minItems: 3
158          maxItems: 3
159          items:
160            description: min, typ, max number of lines
161
162  hsync-active:
163    description: |
164      Horizontal sync pulse.
165      0 selects active low, 1 selects active high.
166      If omitted then it is not used by the hardware
167    enum: [0, 1]
168
169  vsync-active:
170    description: |
171      Vertical sync pulse.
172      0 selects active low, 1 selects active high.
173      If omitted then it is not used by the hardware
174    enum: [0, 1]
175
176  de-active:
177    description: |
178      Data enable.
179      0 selects active low, 1 selects active high.
180      If omitted then it is not used by the hardware
181    enum: [0, 1]
182
183  pixelclk-active:
184    description: |
185      Data driving on rising or falling edge.
186      Use 0 to drive pixel data on falling edge and
187      sample data on rising edge.
188      Use 1 to drive pixel data on rising edge and
189      sample data on falling edge
190    enum: [0, 1]
191
192  syncclk-active:
193    description: |
194      Drive sync on rising or sample sync on falling edge.
195      If not specified then the setup is as specified by pixelclk-active.
196      Use 0 to drive sync on falling edge and
197      sample sync on rising edge of pixel clock.
198      Use 1 to drive sync on rising edge and
199      sample sync on falling edge of pixel clock
200    enum: [0, 1]
201
202  interlaced:
203    type: boolean
204    description: Enable interlaced mode
205
206  doublescan:
207    type: boolean
208    description: Enable double scan mode
209
210  doubleclk:
211    type: boolean
212    description: Enable double clock mode
213
214required:
215 - clock-frequency
216 - hactive
217 - vactive
218 - hfront-porch
219 - hback-porch
220 - hsync-len
221 - vfront-porch
222 - vback-porch
223 - vsync-len
224
225additionalProperties: false
226
227...
228