.. | .. |
---|
16 | 16 | host. Experience shows that this is true for the large majority of setups. |
---|
17 | 17 | |
---|
18 | 18 | DSI host |
---|
19 | | --------- |
---|
| 19 | +======== |
---|
20 | 20 | |
---|
21 | 21 | In addition to the standard properties and those defined by the parent bus of |
---|
22 | 22 | a DSI host, the following properties apply to a node representing a DSI host. |
---|
.. | .. |
---|
29 | 29 | - #size-cells: Should be 0. There are cases where it makes sense to use a |
---|
30 | 30 | different value here. See below. |
---|
31 | 31 | |
---|
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. |
---|
34 | 38 | |
---|
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. |
---|
38 | 50 | |
---|
39 | 51 | Required properties: |
---|
40 | 52 | - reg: The virtual channel number of a DSI peripheral. Must be in the range |
---|
.. | .. |
---|
49 | 61 | property is the number of the first virtual channel and the second cell is |
---|
50 | 62 | the number of consecutive virtual channels. |
---|
51 | 63 | |
---|
52 | | -Example |
---|
53 | | -------- |
---|
| 64 | +Peripherals with a different control bus |
---|
| 65 | +---------------------------------------- |
---|
54 | 66 | |
---|
| 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) |
---|
55 | 95 | dsi-host { |
---|
56 | 96 | ... |
---|
57 | 97 | |
---|
.. | .. |
---|
67 | 107 | ... |
---|
68 | 108 | }; |
---|
69 | 109 | |
---|
| 110 | +2) |
---|
70 | 111 | dsi-host { |
---|
71 | 112 | ... |
---|
72 | 113 | |
---|
.. | .. |
---|
82 | 123 | ... |
---|
83 | 124 | }; |
---|
84 | 125 | |
---|
| 126 | +3) |
---|
85 | 127 | dsi-host { |
---|
86 | 128 | ... |
---|
87 | 129 | |
---|
.. | .. |
---|
96 | 138 | |
---|
97 | 139 | ... |
---|
98 | 140 | }; |
---|
| 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 | + }; |
---|