xref: /linux/Documentation/devicetree/bindings/display/imx/fsl,imx6q-ldb.yaml (revision bf373e4c786bfe989e637195252698f45b157a68)
1*e808ed95SFrank Li# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*e808ed95SFrank Li%YAML 1.2
3*e808ed95SFrank Li---
4*e808ed95SFrank Li$id: http://devicetree.org/schemas/display/imx/fsl,imx6q-ldb.yaml#
5*e808ed95SFrank Li$schema: http://devicetree.org/meta-schemas/core.yaml#
6*e808ed95SFrank Li
7*e808ed95SFrank Lititle: Freescale LVDS Display Bridge (ldb)
8*e808ed95SFrank Li
9*e808ed95SFrank Lidescription:
10*e808ed95SFrank Li  The LVDS Display Bridge device tree node contains up to two lvds-channel
11*e808ed95SFrank Li  nodes describing each of the two LVDS encoder channels of the bridge.
12*e808ed95SFrank Li
13*e808ed95SFrank Limaintainers:
14*e808ed95SFrank Li  - Frank Li <Frank.Li@nxp.com>
15*e808ed95SFrank Li
16*e808ed95SFrank Liproperties:
17*e808ed95SFrank Li  compatible:
18*e808ed95SFrank Li    oneOf:
19*e808ed95SFrank Li      - enum:
20*e808ed95SFrank Li          - fsl,imx53-ldb
21*e808ed95SFrank Li      - items:
22*e808ed95SFrank Li          - enum:
23*e808ed95SFrank Li              - fsl,imx6q-ldb
24*e808ed95SFrank Li          - const: fsl,imx53-ldb
25*e808ed95SFrank Li
26*e808ed95SFrank Li  reg:
27*e808ed95SFrank Li    maxItems: 1
28*e808ed95SFrank Li
29*e808ed95SFrank Li  '#address-cells':
30*e808ed95SFrank Li    const: 1
31*e808ed95SFrank Li
32*e808ed95SFrank Li  '#size-cells':
33*e808ed95SFrank Li    const: 0
34*e808ed95SFrank Li
35*e808ed95SFrank Li  gpr:
36*e808ed95SFrank Li    $ref: /schemas/types.yaml#/definitions/phandle
37*e808ed95SFrank Li    description:
38*e808ed95SFrank Li      The phandle points to the iomuxc-gpr region containing the LVDS
39*e808ed95SFrank Li      control register.
40*e808ed95SFrank Li
41*e808ed95SFrank Li  clocks:
42*e808ed95SFrank Li    minItems: 6
43*e808ed95SFrank Li    maxItems: 8
44*e808ed95SFrank Li
45*e808ed95SFrank Li  clock-names:
46*e808ed95SFrank Li    oneOf:
47*e808ed95SFrank Li      - items:
48*e808ed95SFrank Li          - const: di0_pll
49*e808ed95SFrank Li          - const: di1_pll
50*e808ed95SFrank Li          - const: di0_sel
51*e808ed95SFrank Li          - const: di1_sel
52*e808ed95SFrank Li          - const: di0
53*e808ed95SFrank Li          - const: di1
54*e808ed95SFrank Li      - items:
55*e808ed95SFrank Li          - const: di0_pll
56*e808ed95SFrank Li          - const: di1_pll
57*e808ed95SFrank Li          - const: di0_sel
58*e808ed95SFrank Li          - const: di1_sel
59*e808ed95SFrank Li          - const: di2_sel
60*e808ed95SFrank Li          - const: di3_sel
61*e808ed95SFrank Li          - const: di0
62*e808ed95SFrank Li          - const: di1
63*e808ed95SFrank Li
64*e808ed95SFrank Li  fsl,dual-channel:
65*e808ed95SFrank Li    $ref: /schemas/types.yaml#/definitions/flag
66*e808ed95SFrank Li    description:
67*e808ed95SFrank Li      if it exists, only LVDS channel 0 should
68*e808ed95SFrank Li      be configured - one input will be distributed on both outputs in dual
69*e808ed95SFrank Li      channel mode
70*e808ed95SFrank Li
71*e808ed95SFrank LipatternProperties:
72*e808ed95SFrank Li  '^lvds-channel@[0-1]$':
73*e808ed95SFrank Li    type: object
74*e808ed95SFrank Li    description:
75*e808ed95SFrank Li      Each LVDS Channel has to contain either an of graph link to a panel device node
76*e808ed95SFrank Li      or a display-timings node that describes the video timings for the connected
77*e808ed95SFrank Li      LVDS display as well as the fsl,data-mapping and fsl,data-width properties.
78*e808ed95SFrank Li
79*e808ed95SFrank Li    properties:
80*e808ed95SFrank Li      reg:
81*e808ed95SFrank Li        maxItems: 1
82*e808ed95SFrank Li
83*e808ed95SFrank Li      '#address-cells':
84*e808ed95SFrank Li        const: 1
85*e808ed95SFrank Li
86*e808ed95SFrank Li      '#size-cells':
87*e808ed95SFrank Li        const: 0
88*e808ed95SFrank Li
89*e808ed95SFrank Li      display-timings:
90*e808ed95SFrank Li        $ref: /schemas/display/panel/display-timings.yaml#
91*e808ed95SFrank Li
92*e808ed95SFrank Li      fsl,data-mapping:
93*e808ed95SFrank Li        enum:
94*e808ed95SFrank Li          - spwg
95*e808ed95SFrank Li          - jeida
96*e808ed95SFrank Li
97*e808ed95SFrank Li      fsl,data-width:
98*e808ed95SFrank Li        $ref: /schemas/types.yaml#/definitions/uint32
99*e808ed95SFrank Li        description: should be <18> or <24>
100*e808ed95SFrank Li        enum:
101*e808ed95SFrank Li          - 18
102*e808ed95SFrank Li          - 24
103*e808ed95SFrank Li
104*e808ed95SFrank Li      fsl,panel:
105*e808ed95SFrank Li        $ref: /schemas/types.yaml#/definitions/phandle
106*e808ed95SFrank Li        description: phandle to lcd panel
107*e808ed95SFrank Li
108*e808ed95SFrank Li    patternProperties:
109*e808ed95SFrank Li      '^port@[0-4]$':
110*e808ed95SFrank Li        $ref: /schemas/graph.yaml#/properties/port
111*e808ed95SFrank Li        description:
112*e808ed95SFrank Li          On i.MX5, the internal two-input-multiplexer is used. Due to hardware
113*e808ed95SFrank Li          limitations, only one input port (port@[0,1]) can be used for each channel
114*e808ed95SFrank Li          (lvds-channel@[0,1], respectively).
115*e808ed95SFrank Li          On i.MX6, there should be four input ports (port@[0-3]) that correspond
116*e808ed95SFrank Li          to the four LVDS multiplexer inputs.
117*e808ed95SFrank Li          A single output port (port@2 on i.MX5, port@4 on i.MX6) must be connected
118*e808ed95SFrank Li          to a panel input port. Optionally, the output port can be left out if
119*e808ed95SFrank Li          display-timings are used instead.
120*e808ed95SFrank Li
121*e808ed95SFrank Li    additionalProperties: false
122*e808ed95SFrank Li
123*e808ed95SFrank Lirequired:
124*e808ed95SFrank Li  - compatible
125*e808ed95SFrank Li  - gpr
126*e808ed95SFrank Li  - clocks
127*e808ed95SFrank Li  - clock-names
128*e808ed95SFrank Li
129*e808ed95SFrank LiadditionalProperties: false
130*e808ed95SFrank Li
131*e808ed95SFrank Liexamples:
132*e808ed95SFrank Li  - |
133*e808ed95SFrank Li    #include <dt-bindings/clock/imx5-clock.h>
134*e808ed95SFrank Li
135*e808ed95SFrank Li    ldb@53fa8008 {
136*e808ed95SFrank Li        compatible = "fsl,imx53-ldb";
137*e808ed95SFrank Li        reg = <0x53fa8008 0x4>;
138*e808ed95SFrank Li        #address-cells = <1>;
139*e808ed95SFrank Li        #size-cells = <0>;
140*e808ed95SFrank Li        gpr = <&gpr>;
141*e808ed95SFrank Li        clocks = <&clks IMX5_CLK_LDB_DI0_SEL>,
142*e808ed95SFrank Li                 <&clks IMX5_CLK_LDB_DI1_SEL>,
143*e808ed95SFrank Li                 <&clks IMX5_CLK_IPU_DI0_SEL>,
144*e808ed95SFrank Li                 <&clks IMX5_CLK_IPU_DI1_SEL>,
145*e808ed95SFrank Li                 <&clks IMX5_CLK_LDB_DI0_GATE>,
146*e808ed95SFrank Li                 <&clks IMX5_CLK_LDB_DI1_GATE>;
147*e808ed95SFrank Li        clock-names = "di0_pll", "di1_pll",
148*e808ed95SFrank Li                      "di0_sel", "di1_sel",
149*e808ed95SFrank Li                      "di0", "di1";
150*e808ed95SFrank Li
151*e808ed95SFrank Li        /* Using an of-graph endpoint link to connect the panel */
152*e808ed95SFrank Li        lvds-channel@0 {
153*e808ed95SFrank Li                reg = <0>;
154*e808ed95SFrank Li                #address-cells = <1>;
155*e808ed95SFrank Li                #size-cells = <0>;
156*e808ed95SFrank Li
157*e808ed95SFrank Li                port@0 {
158*e808ed95SFrank Li                    reg = <0>;
159*e808ed95SFrank Li
160*e808ed95SFrank Li                    endpoint {
161*e808ed95SFrank Li                        remote-endpoint = <&ipu_di0_lvds0>;
162*e808ed95SFrank Li                    };
163*e808ed95SFrank Li                };
164*e808ed95SFrank Li
165*e808ed95SFrank Li                port@2 {
166*e808ed95SFrank Li                    reg = <2>;
167*e808ed95SFrank Li
168*e808ed95SFrank Li                    endpoint {
169*e808ed95SFrank Li                        remote-endpoint = <&panel_in>;
170*e808ed95SFrank Li                    };
171*e808ed95SFrank Li               };
172*e808ed95SFrank Li        };
173*e808ed95SFrank Li
174*e808ed95SFrank Li        /* Using display-timings and fsl,data-mapping/width instead */
175*e808ed95SFrank Li        lvds-channel@1 {
176*e808ed95SFrank Li                reg = <1>;
177*e808ed95SFrank Li                #address-cells = <1>;
178*e808ed95SFrank Li                #size-cells = <0>;
179*e808ed95SFrank Li                fsl,data-mapping = "spwg";
180*e808ed95SFrank Li                fsl,data-width = <24>;
181*e808ed95SFrank Li
182*e808ed95SFrank Li                display-timings {/* ... */
183*e808ed95SFrank Li                };
184*e808ed95SFrank Li
185*e808ed95SFrank Li                port@1 {
186*e808ed95SFrank Li                     reg = <1>;
187*e808ed95SFrank Li
188*e808ed95SFrank Li                     endpoint {
189*e808ed95SFrank Li                         remote-endpoint = <&ipu_di1_lvds1>;
190*e808ed95SFrank Li                     };
191*e808ed95SFrank Li                };
192*e808ed95SFrank Li        };
193*e808ed95SFrank Li    };
194