Merge tag 'edac_for_5.1' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp
[sfrench/cifs-2.6.git] / Documentation / devicetree / bindings / display / tegra / nvidia,tegra20-host1x.txt
1 NVIDIA Tegra host1x
2
3 Required properties:
4 - compatible: "nvidia,tegra<chip>-host1x"
5 - reg: Physical base address and length of the controller's registers.
6   For pre-Tegra186, one entry describing the whole register area.
7   For Tegra186, one entry for each entry in reg-names:
8     "vm" - VM region assigned to Linux
9     "hypervisor" - Hypervisor region (only if Linux acts as hypervisor)
10 - interrupts: The interrupt outputs from the controller.
11 - #address-cells: The number of cells used to represent physical base addresses
12   in the host1x address space. Should be 1.
13 - #size-cells: The number of cells used to represent the size of an address
14   range in the host1x address space. Should be 1.
15 - ranges: The mapping of the host1x address space to the CPU address space.
16 - clocks: Must contain one entry, for the module clock.
17   See ../clocks/clock-bindings.txt for details.
18 - resets: Must contain an entry for each entry in reset-names.
19   See ../reset/reset.txt for details.
20 - reset-names: Must include the following entries:
21   - host1x
22
23 The host1x top-level node defines a number of children, each representing one
24 of the following host1x client modules:
25
26 - mpe: video encoder
27
28   Required properties:
29   - compatible: "nvidia,tegra<chip>-mpe"
30   - reg: Physical base address and length of the controller's registers.
31   - interrupts: The interrupt outputs from the controller.
32   - clocks: Must contain one entry, for the module clock.
33     See ../clocks/clock-bindings.txt for details.
34   - resets: Must contain an entry for each entry in reset-names.
35     See ../reset/reset.txt for details.
36   - reset-names: Must include the following entries:
37     - mpe
38
39 - vi: video input
40
41   Required properties:
42   - compatible: "nvidia,tegra<chip>-vi"
43   - reg: Physical base address and length of the controller's registers.
44   - interrupts: The interrupt outputs from the controller.
45   - clocks: Must contain one entry, for the module clock.
46     See ../clocks/clock-bindings.txt for details.
47   - resets: Must contain an entry for each entry in reset-names.
48     See ../reset/reset.txt for details.
49   - reset-names: Must include the following entries:
50     - vi
51
52 - epp: encoder pre-processor
53
54   Required properties:
55   - compatible: "nvidia,tegra<chip>-epp"
56   - reg: Physical base address and length of the controller's registers.
57   - interrupts: The interrupt outputs from the controller.
58   - clocks: Must contain one entry, for the module clock.
59     See ../clocks/clock-bindings.txt for details.
60   - resets: Must contain an entry for each entry in reset-names.
61     See ../reset/reset.txt for details.
62   - reset-names: Must include the following entries:
63     - epp
64
65 - isp: image signal processor
66
67   Required properties:
68   - compatible: "nvidia,tegra<chip>-isp"
69   - reg: Physical base address and length of the controller's registers.
70   - interrupts: The interrupt outputs from the controller.
71   - clocks: Must contain one entry, for the module clock.
72     See ../clocks/clock-bindings.txt for details.
73   - resets: Must contain an entry for each entry in reset-names.
74     See ../reset/reset.txt for details.
75   - reset-names: Must include the following entries:
76     - isp
77
78 - gr2d: 2D graphics engine
79
80   Required properties:
81   - compatible: "nvidia,tegra<chip>-gr2d"
82   - reg: Physical base address and length of the controller's registers.
83   - interrupts: The interrupt outputs from the controller.
84   - clocks: Must contain one entry, for the module clock.
85     See ../clocks/clock-bindings.txt for details.
86   - resets: Must contain an entry for each entry in reset-names.
87     See ../reset/reset.txt for details.
88   - reset-names: Must include the following entries:
89     - 2d
90
91 - gr3d: 3D graphics engine
92
93   Required properties:
94   - compatible: "nvidia,tegra<chip>-gr3d"
95   - reg: Physical base address and length of the controller's registers.
96   - clocks: Must contain an entry for each entry in clock-names.
97     See ../clocks/clock-bindings.txt for details.
98   - clock-names: Must include the following entries:
99     (This property may be omitted if the only clock in the list is "3d")
100     - 3d
101       This MUST be the first entry.
102     - 3d2 (Only required on SoCs with two 3D clocks)
103   - resets: Must contain an entry for each entry in reset-names.
104     See ../reset/reset.txt for details.
105   - reset-names: Must include the following entries:
106     - 3d
107     - 3d2 (Only required on SoCs with two 3D clocks)
108
109 - dc: display controller
110
111   Required properties:
112   - compatible: "nvidia,tegra<chip>-dc"
113   - reg: Physical base address and length of the controller's registers.
114   - interrupts: The interrupt outputs from the controller.
115   - clocks: Must contain an entry for each entry in clock-names.
116     See ../clocks/clock-bindings.txt for details.
117   - clock-names: Must include the following entries:
118     - dc
119       This MUST be the first entry.
120     - parent
121   - resets: Must contain an entry for each entry in reset-names.
122     See ../reset/reset.txt for details.
123   - reset-names: Must include the following entries:
124     - dc
125   - nvidia,head: The number of the display controller head. This is used to
126     setup the various types of output to receive video data from the given
127     head.
128
129   Each display controller node has a child node, named "rgb", that represents
130   the RGB output associated with the controller. It can take the following
131   optional properties:
132   - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing
133   - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection
134   - nvidia,edid: supplies a binary EDID blob
135   - nvidia,panel: phandle of a display panel
136
137 - hdmi: High Definition Multimedia Interface
138
139   Required properties:
140   - compatible: "nvidia,tegra<chip>-hdmi"
141   - reg: Physical base address and length of the controller's registers.
142   - interrupts: The interrupt outputs from the controller.
143   - hdmi-supply: supply for the +5V HDMI connector pin
144   - vdd-supply: regulator for supply voltage
145   - pll-supply: regulator for PLL
146   - clocks: Must contain an entry for each entry in clock-names.
147     See ../clocks/clock-bindings.txt for details.
148   - clock-names: Must include the following entries:
149     - hdmi
150       This MUST be the first entry.
151     - parent
152   - resets: Must contain an entry for each entry in reset-names.
153     See ../reset/reset.txt for details.
154   - reset-names: Must include the following entries:
155     - hdmi
156
157   Optional properties:
158   - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing
159   - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection
160   - nvidia,edid: supplies a binary EDID blob
161   - nvidia,panel: phandle of a display panel
162
163 - tvo: TV encoder output
164
165   Required properties:
166   - compatible: "nvidia,tegra<chip>-tvo"
167   - reg: Physical base address and length of the controller's registers.
168   - interrupts: The interrupt outputs from the controller.
169   - clocks: Must contain one entry, for the module clock.
170     See ../clocks/clock-bindings.txt for details.
171
172 - dsi: display serial interface
173
174   Required properties:
175   - compatible: "nvidia,tegra<chip>-dsi"
176   - reg: Physical base address and length of the controller's registers.
177   - clocks: Must contain an entry for each entry in clock-names.
178     See ../clocks/clock-bindings.txt for details.
179   - clock-names: Must include the following entries:
180     - dsi
181       This MUST be the first entry.
182     - lp
183     - parent
184   - resets: Must contain an entry for each entry in reset-names.
185     See ../reset/reset.txt for details.
186   - reset-names: Must include the following entries:
187     - dsi
188   - avdd-dsi-supply: phandle of a supply that powers the DSI controller
189   - nvidia,mipi-calibrate: Should contain a phandle and a specifier specifying
190     which pads are used by this DSI output and need to be calibrated. See also
191     ../display/tegra/nvidia,tegra114-mipi.txt.
192
193   Optional properties:
194   - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing
195   - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection
196   - nvidia,edid: supplies a binary EDID blob
197   - nvidia,panel: phandle of a display panel
198   - nvidia,ganged-mode: contains a phandle to a second DSI controller to gang
199     up with in order to support up to 8 data lanes
200
201 - sor: serial output resource
202
203   Required properties:
204   - compatible: Should be:
205     - "nvidia,tegra124-sor": for Tegra124 and Tegra132
206     - "nvidia,tegra132-sor": for Tegra132
207     - "nvidia,tegra210-sor": for Tegra210
208     - "nvidia,tegra210-sor1": for Tegra210
209     - "nvidia,tegra186-sor": for Tegra186
210     - "nvidia,tegra186-sor1": for Tegra186
211   - reg: Physical base address and length of the controller's registers.
212   - interrupts: The interrupt outputs from the controller.
213   - clocks: Must contain an entry for each entry in clock-names.
214     See ../clocks/clock-bindings.txt for details.
215   - clock-names: Must include the following entries:
216     - sor: clock input for the SOR hardware
217     - out: SOR output clock
218     - parent: input for the pixel clock
219     - dp: reference clock for the SOR clock
220     - safe: safe reference for the SOR clock during power up
221
222     For Tegra186 and later:
223     - pad: SOR pad output clock (on Tegra186 and later)
224
225     Obsolete:
226     - source: source clock for the SOR clock (obsolete, use "out" instead)
227
228   - resets: Must contain an entry for each entry in reset-names.
229     See ../reset/reset.txt for details.
230   - reset-names: Must include the following entries:
231     - sor
232
233   Required properties on Tegra186 and later:
234   - nvidia,interface: index of the SOR interface
235
236   Optional properties:
237   - nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing
238   - nvidia,hpd-gpio: specifies a GPIO used for hotplug detection
239   - nvidia,edid: supplies a binary EDID blob
240   - nvidia,panel: phandle of a display panel
241   - nvidia,xbar-cfg: 5 cells containing the crossbar configuration. Each lane
242     of the SOR, identified by the cell's index, is mapped via the crossbar to
243     the pad specified by the cell's value.
244
245   Optional properties when driving an eDP output:
246   - nvidia,dpaux: phandle to a DispayPort AUX interface
247
248 - dpaux: DisplayPort AUX interface
249   - compatible : Should contain one of the following:
250     - "nvidia,tegra124-dpaux": for Tegra124 and Tegra132
251     - "nvidia,tegra210-dpaux": for Tegra210
252   - reg: Physical base address and length of the controller's registers.
253   - interrupts: The interrupt outputs from the controller.
254   - clocks: Must contain an entry for each entry in clock-names.
255     See ../clocks/clock-bindings.txt for details.
256   - clock-names: Must include the following entries:
257     - dpaux: clock input for the DPAUX hardware
258     - parent: reference clock
259   - resets: Must contain an entry for each entry in reset-names.
260     See ../reset/reset.txt for details.
261   - reset-names: Must include the following entries:
262     - dpaux
263   - vdd-supply: phandle of a supply that powers the DisplayPort link
264   - i2c-bus: Subnode where I2C slave devices are listed. This subnode
265     must be always present. If there are no I2C slave devices, an empty
266     node should be added. See ../../i2c/i2c.txt for more information.
267
268   See ../pinctrl/nvidia,tegra124-dpaux-padctl.txt for information
269   regarding the DPAUX pad controller bindings.
270
271 - vic: Video Image Compositor
272   - compatible : "nvidia,tegra<chip>-vic"
273   - reg: Physical base address and length of the controller's registers.
274   - interrupts: The interrupt outputs from the controller.
275   - clocks: Must contain an entry for each entry in clock-names.
276     See ../clocks/clock-bindings.txt for details.
277   - clock-names: Must include the following entries:
278     - vic: clock input for the VIC hardware
279   - resets: Must contain an entry for each entry in reset-names.
280     See ../reset/reset.txt for details.
281   - reset-names: Must include the following entries:
282     - vic
283
284 Example:
285
286 / {
287         ...
288
289         host1x {
290                 compatible = "nvidia,tegra20-host1x", "simple-bus";
291                 reg = <0x50000000 0x00024000>;
292                 interrupts = <0 65 0x04   /* mpcore syncpt */
293                               0 67 0x04>; /* mpcore general */
294                 clocks = <&tegra_car TEGRA20_CLK_HOST1X>;
295                 resets = <&tegra_car 28>;
296                 reset-names = "host1x";
297
298                 #address-cells = <1>;
299                 #size-cells = <1>;
300
301                 ranges = <0x54000000 0x54000000 0x04000000>;
302
303                 mpe {
304                         compatible = "nvidia,tegra20-mpe";
305                         reg = <0x54040000 0x00040000>;
306                         interrupts = <0 68 0x04>;
307                         clocks = <&tegra_car TEGRA20_CLK_MPE>;
308                         resets = <&tegra_car 60>;
309                         reset-names = "mpe";
310                 };
311
312                 vi {
313                         compatible = "nvidia,tegra20-vi";
314                         reg = <0x54080000 0x00040000>;
315                         interrupts = <0 69 0x04>;
316                         clocks = <&tegra_car TEGRA20_CLK_VI>;
317                         resets = <&tegra_car 100>;
318                         reset-names = "vi";
319                 };
320
321                 epp {
322                         compatible = "nvidia,tegra20-epp";
323                         reg = <0x540c0000 0x00040000>;
324                         interrupts = <0 70 0x04>;
325                         clocks = <&tegra_car TEGRA20_CLK_EPP>;
326                         resets = <&tegra_car 19>;
327                         reset-names = "epp";
328                 };
329
330                 isp {
331                         compatible = "nvidia,tegra20-isp";
332                         reg = <0x54100000 0x00040000>;
333                         interrupts = <0 71 0x04>;
334                         clocks = <&tegra_car TEGRA20_CLK_ISP>;
335                         resets = <&tegra_car 23>;
336                         reset-names = "isp";
337                 };
338
339                 gr2d {
340                         compatible = "nvidia,tegra20-gr2d";
341                         reg = <0x54140000 0x00040000>;
342                         interrupts = <0 72 0x04>;
343                         clocks = <&tegra_car TEGRA20_CLK_GR2D>;
344                         resets = <&tegra_car 21>;
345                         reset-names = "2d";
346                 };
347
348                 gr3d {
349                         compatible = "nvidia,tegra20-gr3d";
350                         reg = <0x54180000 0x00040000>;
351                         clocks = <&tegra_car TEGRA20_CLK_GR3D>;
352                         resets = <&tegra_car 24>;
353                         reset-names = "3d";
354                 };
355
356                 dc@54200000 {
357                         compatible = "nvidia,tegra20-dc";
358                         reg = <0x54200000 0x00040000>;
359                         interrupts = <0 73 0x04>;
360                         clocks = <&tegra_car TEGRA20_CLK_DISP1>,
361                                  <&tegra_car TEGRA20_CLK_PLL_P>;
362                         clock-names = "dc", "parent";
363                         resets = <&tegra_car 27>;
364                         reset-names = "dc";
365
366                         rgb {
367                                 status = "disabled";
368                         };
369                 };
370
371                 dc@54240000 {
372                         compatible = "nvidia,tegra20-dc";
373                         reg = <0x54240000 0x00040000>;
374                         interrupts = <0 74 0x04>;
375                         clocks = <&tegra_car TEGRA20_CLK_DISP2>,
376                                  <&tegra_car TEGRA20_CLK_PLL_P>;
377                         clock-names = "dc", "parent";
378                         resets = <&tegra_car 26>;
379                         reset-names = "dc";
380
381                         rgb {
382                                 status = "disabled";
383                         };
384                 };
385
386                 hdmi {
387                         compatible = "nvidia,tegra20-hdmi";
388                         reg = <0x54280000 0x00040000>;
389                         interrupts = <0 75 0x04>;
390                         clocks = <&tegra_car TEGRA20_CLK_HDMI>,
391                                  <&tegra_car TEGRA20_CLK_PLL_D_OUT0>;
392                         clock-names = "hdmi", "parent";
393                         resets = <&tegra_car 51>;
394                         reset-names = "hdmi";
395                         status = "disabled";
396                 };
397
398                 tvo {
399                         compatible = "nvidia,tegra20-tvo";
400                         reg = <0x542c0000 0x00040000>;
401                         interrupts = <0 76 0x04>;
402                         clocks = <&tegra_car TEGRA20_CLK_TVO>;
403                         status = "disabled";
404                 };
405
406                 dsi {
407                         compatible = "nvidia,tegra20-dsi";
408                         reg = <0x54300000 0x00040000>;
409                         clocks = <&tegra_car TEGRA20_CLK_DSI>,
410                                  <&tegra_car TEGRA20_CLK_PLL_D_OUT0>;
411                         clock-names = "dsi", "parent";
412                         resets = <&tegra_car 48>;
413                         reset-names = "dsi";
414                         status = "disabled";
415                 };
416         };
417
418         ...
419 };