Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dt-bindings: mipi-dsi: Add dual-channel DSI related info

Add binding info for peripherals that support dual-channel DSI. Add
corresponding optional bindings for DSI host controllers that may
be configured in this mode. Add an example of an I2C controlled
device operating in dual-channel DSI mode.

Reviewed-by: Rob Herring <robh@kernel.org>
Reviewed-by: Philippe Cornu <philippe.cornu@st.com>
Reviewed-by: Sean Paul <seanpaul@chromium.org>
Reviewed-by: Heiko Stuebner <heiko@sntech.de>
Signed-off-by: Archit Taneja <architt@codeaurora.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20180709090751.10221-3-architt@codeaurora.org

+80
+80
Documentation/devicetree/bindings/display/mipi-dsi-bus.txt
··· 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 + 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. 38 + 32 39 DSI peripheral 33 40 ============== 34 41 ··· 69 62 path). Connections between such peripherals and a DSI host can be represented 70 63 using the graph bindings [1], [2]. 71 64 65 + Peripherals that support dual channel DSI 66 + ----------------------------------------- 67 + 68 + Peripherals with higher bandwidth requirements can be connected to 2 DSI 69 + busses. Each DSI bus/channel drives some portion of the pixel data (generally 70 + left/right half of each line of the display, or even/odd lines of the display). 71 + The graph bindings should be used to represent the multiple DSI busses that are 72 + connected to this peripheral. Each DSI host's output endpoint can be linked to 73 + an input endpoint of the DSI peripheral. 74 + 72 75 [1] Documentation/devicetree/bindings/graph.txt 73 76 [2] Documentation/devicetree/bindings/media/video-interfaces.txt 74 77 ··· 88 71 with different virtual channel configurations. 89 72 - (4) is an example of a peripheral on a I2C control bus connected to a 90 73 DSI host using of-graph bindings. 74 + - (5) is an example of 2 DSI hosts driving a dual-channel DSI peripheral, 75 + which uses I2C as its primary control bus. 91 76 92 77 1) 93 78 dsi-host { ··· 168 149 port { 169 150 host_mipi_out: endpoint { 170 151 remote-endpoint = <&bridge_mipi_in>; 152 + }; 153 + }; 154 + }; 155 + }; 156 + 157 + 5) 158 + i2c-host { 159 + dsi-bridge@35 { 160 + compatible = "..."; 161 + reg = <0x35>; 162 + 163 + ports { 164 + #address-cells = <1>; 165 + #size-cells = <0>; 166 + 167 + port@0 { 168 + reg = <0>; 169 + dsi0_in: endpoint { 170 + remote-endpoint = <&dsi0_out>; 171 + }; 172 + }; 173 + 174 + port@1 { 175 + reg = <1>; 176 + dsi1_in: endpoint { 177 + remote-endpoint = <&dsi1_out>; 178 + }; 179 + }; 180 + }; 181 + }; 182 + }; 183 + 184 + dsi0-host { 185 + ... 186 + 187 + /* 188 + * this DSI instance drives the clock for both the host 189 + * controllers 190 + */ 191 + clock-master; 192 + 193 + ports { 194 + ... 195 + 196 + port { 197 + dsi0_out: endpoint { 198 + remote-endpoint = <&dsi0_in>; 199 + }; 200 + }; 201 + }; 202 + }; 203 + 204 + dsi1-host { 205 + ... 206 + 207 + ports { 208 + ... 209 + 210 + port { 211 + dsi1_out: endpoint { 212 + remote-endpoint = <&dsi1_in>; 171 213 }; 172 214 }; 173 215 };