Hi Archit,
Many thanks for this documentation add-on.
I wonder if an extra example of "2 DSI hosts driving a dual-channel DSI peripheral controlled by the mipi bus" could be useful? well, I am not really convinced it is necessary and maybe this extra example could be added later when someone will meet the case... and I should have sent this comment on v1 (sorry for the delay).
Reviewed-by: Philippe Cornu philippe.cornu@st.com
Philippe :-)
On 01/18/2018 05:53 AM, Archit Taneja wrote:
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.
Signed-off-by: Archit Taneja architt@codeaurora.org
v2:
Specify that clock-master is a boolean property.
Drop/add unit-address and #*-cells where applicable.
.../devicetree/bindings/display/mipi-dsi-bus.txt | 80 ++++++++++++++++++++++ 1 file changed, 80 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/mipi-dsi-bus.txt b/Documentation/devicetree/bindings/display/mipi-dsi-bus.txt index 94fb72cb916f..7a3abbedb3fa 100644 --- a/Documentation/devicetree/bindings/display/mipi-dsi-bus.txt +++ b/Documentation/devicetree/bindings/display/mipi-dsi-bus.txt @@ -29,6 +29,13 @@ Required properties:
- #size-cells: Should be 0. There are cases where it makes sense to use a different value here. See below.
+Optional properties: +- clock-master: boolean. Should be enabled if the host is being used in
- conjunction with another DSI host to drive the same peripheral. Hardware
- supporting such a configuration generally requires the data on both the busses
- to be driven by the same clock. Only the DSI host instance controlling this
- clock should contain this property.
DSI peripheral
@@ -62,6 +69,16 @@ primary control bus, but are also connected to a DSI bus (mostly for the data path). Connections between such peripherals and a DSI host can be represented using the graph bindings [1], [2].
+Peripherals that support dual channel DSI +-----------------------------------------
+Peripherals with higher bandwidth requirements can be connected to 2 DSI +busses. Each DSI bus/channel drives some portion of the pixel data (generally +left/right half of each line of the display, or even/odd lines of the display). +The graph bindings should be used to represent the multiple DSI busses that are +connected to this peripheral. Each DSI host's output endpoint can be linked to +an input endpoint of the DSI peripheral.
- [1] Documentation/devicetree/bindings/graph.txt [2] Documentation/devicetree/bindings/media/video-interfaces.txt
@@ -71,6 +88,8 @@ Examples with different virtual channel configurations.
- (4) is an example of a peripheral on a I2C control bus connected with to a DSI host using of-graph bindings.
+- (5) is an example of 2 DSI hosts driving a dual-channel DSI peripheral,
which uses I2C as its primary control bus.
dsi-host {
@@ -153,3 +172,64 @@ Examples }; }; };
+5)
- i2c-host {
dsi-bridge@35 {
compatible = "...";
reg = <0x35>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
dsi0_in: endpoint {
remote-endpoint = <&dsi0_out>;
};
};
port@1 {
reg = <1>;
dsi1_in: endpoint {
remote-endpoint = <&dsi1_out>;
};
};
};
};
- };
- dsi0-host {
...
/*
* this DSI instance drives the clock for both the host
* controllers
*/
clock-master;
ports {
...
port {
dsi0_out: endpoint {
remote-endpoint = <&dsi0_in>;
};
};
};
- };
- dsi1-host {
...
ports {
...
port {
dsi1_out: endpoint {
remote-endpoint = <&dsi1_in>;
};
};
};
- };