1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/display/bridge/toshiba,tc358775.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Toshiba TC358775 DSI to LVDS bridge
8
9maintainers:
10  - Vinay Simha BN <simhavcs@gmail.com>
11
12description: |
13  This binding supports DSI to LVDS bridges TC358765 and TC358775
14
15  MIPI DSI-RX Data 4-lane, CLK 1-lane with data rates up to 800 Mbps/lane.
16  Video frame size:
17  Up to 1600x1200 24-bit/pixel resolution for single-link LVDS display panel
18  limited by 135 MHz LVDS speed
19  Up to WUXGA (1920x1200 24-bit pixels) resolution for dual-link LVDS display
20  panel, limited by 270 MHz LVDS speed.
21
22properties:
23  compatible:
24    enum:
25      - toshiba,tc358765
26      - toshiba,tc358775
27
28  reg:
29    maxItems: 1
30    description: i2c address of the bridge, 0x0f
31
32  vdd-supply:
33    description: 1.2V LVDS Power Supply
34
35  vddio-supply:
36    description: 1.8V IO Power Supply
37
38  stby-gpios:
39    maxItems: 1
40    description: Standby pin, Low active
41
42  reset-gpios:
43    maxItems: 1
44    description: Hardware reset, Low active
45
46  ports:
47    $ref: /schemas/graph.yaml#/properties/ports
48
49    properties:
50      port@0:
51        $ref: /schemas/graph.yaml#/$defs/port-base
52        unevaluatedProperties: false
53        description: |
54          DSI Input. The remote endpoint phandle should be a
55          reference to a valid mipi_dsi_host device node.
56
57        properties:
58          endpoint:
59            $ref: /schemas/media/video-interfaces.yaml#
60            unevaluatedProperties: false
61
62            properties:
63              data-lanes:
64                description: array of physical DSI data lane indexes.
65                minItems: 1
66                items:
67                  - const: 1
68                  - const: 2
69                  - const: 3
70                  - const: 4
71
72      port@1:
73        $ref: /schemas/graph.yaml#/properties/port
74        description: |
75          Video port for LVDS output (panel or connector).
76
77      port@2:
78        $ref: /schemas/graph.yaml#/properties/port
79        description: |
80          Video port for Dual link LVDS output (panel or connector).
81
82    required:
83      - port@0
84      - port@1
85
86required:
87  - compatible
88  - reg
89  - vdd-supply
90  - vddio-supply
91  - reset-gpios
92  - ports
93
94allOf:
95  - if:
96      properties:
97        compatible:
98          contains:
99            const: toshiba,tc358765
100    then:
101      properties:
102        stby-gpios: false
103
104additionalProperties: false
105
106examples:
107  - |
108    #include <dt-bindings/gpio/gpio.h>
109
110    /* For single-link LVDS display panel */
111
112    i2c@78b8000 {
113        /* On High speed expansion */
114        label = "HS-I2C2";
115        reg = <0x078b8000 0x500>;
116        clock-frequency = <400000>; /* fastmode operation */
117        #address-cells = <1>;
118        #size-cells = <0>;
119
120        tc_bridge: bridge@f {
121            compatible = "toshiba,tc358775";
122            reg = <0x0f>;
123
124            vdd-supply = <&pm8916_l2>;
125            vddio-supply = <&pm8916_l6>;
126
127            stby-gpios = <&msmgpio 99 GPIO_ACTIVE_LOW>;
128            reset-gpios = <&msmgpio 72 GPIO_ACTIVE_LOW>;
129
130            ports {
131                #address-cells = <1>;
132                #size-cells = <0>;
133
134                port@0 {
135                    reg = <0>;
136                    d2l_in_test: endpoint {
137                        remote-endpoint = <&dsi0_out>;
138                        data-lanes = <1 2 3 4>;
139                    };
140                };
141
142                port@1 {
143                    reg = <1>;
144                    lvds_out: endpoint {
145                        remote-endpoint = <&panel_in>;
146                    };
147                };
148            };
149        };
150    };
151
152    dsi@1a98000 {
153        reg = <0x1a98000 0x25c>;
154        reg-names = "dsi_ctrl";
155
156        ports {
157            #address-cells = <1>;
158            #size-cells = <0>;
159            port@1 {
160                reg = <1>;
161                dsi0_out: endpoint {
162                    remote-endpoint = <&d2l_in_test>;
163                };
164             };
165         };
166     };
167
168  - |
169    /* For dual-link LVDS display panel */
170
171    i2c@78b8000 {
172        /* On High speed expansion */
173        label = "HS-I2C2";
174        reg = <0x078b8000 0x500>;
175        clock-frequency = <400000>; /* fastmode operation */
176        #address-cells = <1>;
177        #size-cells = <0>;
178
179        tc_bridge_dual: bridge@f {
180            compatible = "toshiba,tc358775";
181            reg = <0x0f>;
182
183            vdd-supply = <&pm8916_l2>;
184            vddio-supply = <&pm8916_l6>;
185
186            stby-gpios = <&msmgpio 99 GPIO_ACTIVE_LOW>;
187            reset-gpios = <&msmgpio 72 GPIO_ACTIVE_LOW>;
188
189            ports {
190                #address-cells = <1>;
191                #size-cells = <0>;
192
193                port@0 {
194                    reg = <0>;
195                    d2l_in_dual: endpoint {
196                        remote-endpoint = <&dsi0_out_dual>;
197                        data-lanes = <1 2 3 4>;
198                    };
199                };
200
201                port@1 {
202                    reg = <1>;
203                    lvds0_out: endpoint {
204                        remote-endpoint = <&panel_in0>;
205                    };
206                };
207
208                port@2 {
209                    reg = <2>;
210                    lvds1_out: endpoint {
211                        remote-endpoint = <&panel_in1>;
212                    };
213                };
214            };
215        };
216    };
217
218    dsi@1a98000 {
219        reg = <0x1a98000 0x25c>;
220        reg-names = "dsi_ctrl";
221
222        ports {
223            #address-cells = <1>;
224            #size-cells = <0>;
225            port@1 {
226                reg = <1>;
227                dsi0_out_dual: endpoint {
228                    remote-endpoint = <&d2l_in_dual>;
229                };
230             };
231         };
232     };
233...
234