Linux 4.1.18
[linux/fpc-iii.git] / Documentation / devicetree / bindings / drm / imx / ldb.txt
blob9a21366436f6de14f862bed9ee71bb054e7b03d4
1 Device-Tree bindings for LVDS Display Bridge (ldb)
3 LVDS Display Bridge
4 ===================
6 The LVDS Display Bridge device tree node contains up to two lvds-channel
7 nodes describing each of the two LVDS encoder channels of the bridge.
9 Required properties:
10  - #address-cells : should be <1>
11  - #size-cells : should be <0>
12  - compatible : should be "fsl,imx53-ldb" or "fsl,imx6q-ldb".
13                 Both LDB versions are similar, but i.MX6 has an additional
14                 multiplexer in the front to select any of the four IPU display
15                 interfaces as input for each LVDS channel.
16  - gpr : should be <&gpr> on i.MX53 and i.MX6q.
17          The phandle points to the iomuxc-gpr region containing the LVDS
18          control register.
19 - clocks, clock-names : phandles to the LDB divider and selector clocks and to
20                         the display interface selector clocks, as described in
21                         Documentation/devicetree/bindings/clock/clock-bindings.txt
22         The following clocks are expected on i.MX53:
23                 "di0_pll" - LDB LVDS channel 0 mux
24                 "di1_pll" - LDB LVDS channel 1 mux
25                 "di0" - LDB LVDS channel 0 gate
26                 "di1" - LDB LVDS channel 1 gate
27                 "di0_sel" - IPU1 DI0 mux
28                 "di1_sel" - IPU1 DI1 mux
29         On i.MX6q the following additional clocks are needed:
30                 "di2_sel" - IPU2 DI0 mux
31                 "di3_sel" - IPU2 DI1 mux
32         The needed clock numbers for each are documented in
33         Documentation/devicetree/bindings/clock/imx5-clock.txt, and in
34         Documentation/devicetree/bindings/clock/imx6q-clock.txt.
36 Optional properties:
37  - pinctrl-names : should be "default" on i.MX53, not used on i.MX6q
38  - pinctrl-0 : a phandle pointing to LVDS pin settings on i.MX53,
39                not used on i.MX6q
40  - fsl,dual-channel : boolean. if it exists, only LVDS channel 0 should
41    be configured - one input will be distributed on both outputs in dual
42    channel mode
44 LVDS Channel
45 ============
47 Each LVDS Channel has to contain either an of graph link to a panel device node
48 or a display-timings node that describes the video timings for the connected
49 LVDS display as well as the fsl,data-mapping and fsl,data-width properties.
51 Required properties:
52  - reg : should be <0> or <1>
53  - port: Input and output port nodes with endpoint definitions as defined in
54    Documentation/devicetree/bindings/graph.txt.
55    On i.MX5, the internal two-input-multiplexer is used. Due to hardware
56    limitations, only one input port (port@[0,1]) can be used for each channel
57    (lvds-channel@[0,1], respectively).
58    On i.MX6, there should be four input ports (port@[0-3]) that correspond
59    to the four LVDS multiplexer inputs.
60    A single output port (port@2 on i.MX5, port@4 on i.MX6) must be connected
61    to a panel input port. Optionally, the output port can be left out if
62    display-timings are used instead.
64 Optional properties (required if display-timings are used):
65  - display-timings : A node that describes the display timings as defined in
66    Documentation/devicetree/bindings/video/display-timing.txt.
67  - fsl,data-mapping : should be "spwg" or "jeida"
68                       This describes how the color bits are laid out in the
69                       serialized LVDS signal.
70  - fsl,data-width : should be <18> or <24>
72 example:
74 gpr: iomuxc-gpr@53fa8000 {
75         /* ... */
78 ldb: ldb@53fa8008 {
79         #address-cells = <1>;
80         #size-cells = <0>;
81         compatible = "fsl,imx53-ldb";
82         gpr = <&gpr>;
83         clocks = <&clks IMX5_CLK_LDB_DI0_SEL>,
84                  <&clks IMX5_CLK_LDB_DI1_SEL>,
85                  <&clks IMX5_CLK_IPU_DI0_SEL>,
86                  <&clks IMX5_CLK_IPU_DI1_SEL>,
87                  <&clks IMX5_CLK_LDB_DI0_GATE>,
88                  <&clks IMX5_CLK_LDB_DI1_GATE>;
89         clock-names = "di0_pll", "di1_pll",
90                       "di0_sel", "di1_sel",
91                       "di0", "di1";
93         /* Using an of-graph endpoint link to connect the panel */
94         lvds-channel@0 {
95                 #address-cells = <1>;
96                 #size-cells = <0>;
97                 reg = <0>;
99                 port@0 {
100                         reg = <0>;
102                         lvds0_in: endpoint {
103                                 remote-endpoint = <&ipu_di0_lvds0>;
104                         };
105                 };
107                 port@2 {
108                         reg = <2>;
110                         lvds0_out: endpoint {
111                                 remote-endpoint = <&panel_in>;
112                         };
113                 };
114         };
116         /* Using display-timings and fsl,data-mapping/width instead */
117         lvds-channel@1 {
118                 #address-cells = <1>;
119                 #size-cells = <0>;
120                 reg = <1>;
121                 fsl,data-mapping = "spwg";
122                 fsl,data-width = <24>;
124                 display-timings {
125                         /* ... */
126                 };
128                 port@1 {
129                         reg = <1>;
131                         lvds1_in: endpoint {
132                                 remote-endpoint = <&ipu_di1_lvds1>;
133                         };
134                 };
135         };
138 panel: lvds-panel {
139         /* ... */
141         port {
142                 panel_in: endpoint {
143                         remote-endpoint = <&lvds0_out>;
144                 };
145         };