hc
2023-12-08 01573e231f18eb2d99162747186f59511f56b64d
kernel/Documentation/devicetree/bindings/display/mipi-dsi-bus.txt
....@@ -16,7 +16,7 @@
1616 host. Experience shows that this is true for the large majority of setups.
1717
1818 DSI host
19
---------
19
+========
2020
2121 In addition to the standard properties and those defined by the parent bus of
2222 a DSI host, the following properties apply to a node representing a DSI host.
....@@ -29,12 +29,24 @@
2929 - #size-cells: Should be 0. There are cases where it makes sense to use a
3030 different value here. See below.
3131
32
-DSI peripheral
33
---------------
32
+Optional properties:
33
+- clock-master: boolean. Should be enabled if the host is being used in
34
+ conjunction with another DSI host to drive the same peripheral. Hardware
35
+ supporting such a configuration generally requires the data on both the busses
36
+ to be driven by the same clock. Only the DSI host instance controlling this
37
+ clock should contain this property.
3438
35
-Peripherals are represented as child nodes of the DSI host's node. Properties
36
-described here apply to all DSI peripherals, but individual bindings may want
37
-to define additional, device-specific properties.
39
+DSI peripheral
40
+==============
41
+
42
+Peripherals with DSI as control bus, or no control bus
43
+------------------------------------------------------
44
+
45
+Peripherals with the DSI bus as the primary control bus, or peripherals with
46
+no control bus but use the DSI bus to transmit pixel data are represented
47
+as child nodes of the DSI host's node. Properties described here apply to all
48
+DSI peripherals, but individual bindings may want to define additional,
49
+device-specific properties.
3850
3951 Required properties:
4052 - reg: The virtual channel number of a DSI peripheral. Must be in the range
....@@ -49,9 +61,37 @@
4961 property is the number of the first virtual channel and the second cell is
5062 the number of consecutive virtual channels.
5163
52
-Example
53
--------
64
+Peripherals with a different control bus
65
+----------------------------------------
5466
67
+There are peripherals that have I2C/SPI (or some other non-DSI bus) as the
68
+primary control bus, but are also connected to a DSI bus (mostly for the data
69
+path). Connections between such peripherals and a DSI host can be represented
70
+using the graph bindings [1], [2].
71
+
72
+Peripherals that support dual channel DSI
73
+-----------------------------------------
74
+
75
+Peripherals with higher bandwidth requirements can be connected to 2 DSI
76
+busses. Each DSI bus/channel drives some portion of the pixel data (generally
77
+left/right half of each line of the display, or even/odd lines of the display).
78
+The graph bindings should be used to represent the multiple DSI busses that are
79
+connected to this peripheral. Each DSI host's output endpoint can be linked to
80
+an input endpoint of the DSI peripheral.
81
+
82
+[1] Documentation/devicetree/bindings/graph.txt
83
+[2] Documentation/devicetree/bindings/media/video-interfaces.txt
84
+
85
+Examples
86
+========
87
+- (1), (2) and (3) are examples of a DSI host and peripheral on the DSI bus
88
+ with different virtual channel configurations.
89
+- (4) is an example of a peripheral on a I2C control bus connected to a
90
+ DSI host using of-graph bindings.
91
+- (5) is an example of 2 DSI hosts driving a dual-channel DSI peripheral,
92
+ which uses I2C as its primary control bus.
93
+
94
+1)
5595 dsi-host {
5696 ...
5797
....@@ -67,6 +107,7 @@
67107 ...
68108 };
69109
110
+2)
70111 dsi-host {
71112 ...
72113
....@@ -82,6 +123,7 @@
82123 ...
83124 };
84125
126
+3)
85127 dsi-host {
86128 ...
87129
....@@ -96,3 +138,98 @@
96138
97139 ...
98140 };
141
+
142
+4)
143
+ i2c-host {
144
+ ...
145
+
146
+ dsi-bridge@35 {
147
+ compatible = "...";
148
+ reg = <0x35>;
149
+
150
+ ports {
151
+ ...
152
+
153
+ port {
154
+ bridge_mipi_in: endpoint {
155
+ remote-endpoint = <&host_mipi_out>;
156
+ };
157
+ };
158
+ };
159
+ };
160
+ };
161
+
162
+ dsi-host {
163
+ ...
164
+
165
+ ports {
166
+ ...
167
+
168
+ port {
169
+ host_mipi_out: endpoint {
170
+ remote-endpoint = <&bridge_mipi_in>;
171
+ };
172
+ };
173
+ };
174
+ };
175
+
176
+5)
177
+ i2c-host {
178
+ dsi-bridge@35 {
179
+ compatible = "...";
180
+ reg = <0x35>;
181
+
182
+ ports {
183
+ #address-cells = <1>;
184
+ #size-cells = <0>;
185
+
186
+ port@0 {
187
+ reg = <0>;
188
+ dsi0_in: endpoint {
189
+ remote-endpoint = <&dsi0_out>;
190
+ };
191
+ };
192
+
193
+ port@1 {
194
+ reg = <1>;
195
+ dsi1_in: endpoint {
196
+ remote-endpoint = <&dsi1_out>;
197
+ };
198
+ };
199
+ };
200
+ };
201
+ };
202
+
203
+ dsi0-host {
204
+ ...
205
+
206
+ /*
207
+ * this DSI instance drives the clock for both the host
208
+ * controllers
209
+ */
210
+ clock-master;
211
+
212
+ ports {
213
+ ...
214
+
215
+ port {
216
+ dsi0_out: endpoint {
217
+ remote-endpoint = <&dsi0_in>;
218
+ };
219
+ };
220
+ };
221
+ };
222
+
223
+ dsi1-host {
224
+ ...
225
+
226
+ ports {
227
+ ...
228
+
229
+ port {
230
+ dsi1_out: endpoint {
231
+ remote-endpoint = <&dsi1_in>;
232
+ };
233
+ };
234
+ };
235
+ };