diff options
Diffstat (limited to 'Documentation/devicetree/bindings/display/msm/dsi.txt')
-rw-r--r-- | Documentation/devicetree/bindings/display/msm/dsi.txt | 117 |
1 files changed, 77 insertions, 40 deletions
diff --git a/Documentation/devicetree/bindings/display/msm/dsi.txt b/Documentation/devicetree/bindings/display/msm/dsi.txt index f5948c48b9a2..6b1cab17f52d 100644 --- a/Documentation/devicetree/bindings/display/msm/dsi.txt +++ b/Documentation/devicetree/bindings/display/msm/dsi.txt | |||
@@ -11,8 +11,7 @@ Required properties: | |||
11 | be 0 or 1, since we have 2 DSI controllers at most for now. | 11 | be 0 or 1, since we have 2 DSI controllers at most for now. |
12 | - interrupts: The interrupt signal from the DSI block. | 12 | - interrupts: The interrupt signal from the DSI block. |
13 | - power-domains: Should be <&mmcc MDSS_GDSC>. | 13 | - power-domains: Should be <&mmcc MDSS_GDSC>. |
14 | - clocks: device clocks | 14 | - clocks: Phandles to device clocks. |
15 | See Documentation/devicetree/bindings/clocks/clock-bindings.txt for details. | ||
16 | - clock-names: the following clocks are required: | 15 | - clock-names: the following clocks are required: |
17 | * "mdp_core_clk" | 16 | * "mdp_core_clk" |
18 | * "iface_clk" | 17 | * "iface_clk" |
@@ -23,16 +22,21 @@ Required properties: | |||
23 | * "core_clk" | 22 | * "core_clk" |
24 | For DSIv2, we need an additional clock: | 23 | For DSIv2, we need an additional clock: |
25 | * "src_clk" | 24 | * "src_clk" |
25 | - assigned-clocks: Parents of "byte_clk" and "pixel_clk" for the given platform. | ||
26 | - assigned-clock-parents: The Byte clock and Pixel clock PLL outputs provided | ||
27 | by a DSI PHY block. See [1] for details on clock bindings. | ||
26 | - vdd-supply: phandle to vdd regulator device node | 28 | - vdd-supply: phandle to vdd regulator device node |
27 | - vddio-supply: phandle to vdd-io regulator device node | 29 | - vddio-supply: phandle to vdd-io regulator device node |
28 | - vdda-supply: phandle to vdda regulator device node | 30 | - vdda-supply: phandle to vdda regulator device node |
29 | - qcom,dsi-phy: phandle to DSI PHY device node | 31 | - phys: phandle to DSI PHY device node |
32 | - phy-names: the name of the corresponding PHY device | ||
30 | - syscon-sfpb: A phandle to mmss_sfpb syscon node (only for DSIv2) | 33 | - syscon-sfpb: A phandle to mmss_sfpb syscon node (only for DSIv2) |
34 | - ports: Contains 2 DSI controller ports as child nodes. Each port contains | ||
35 | an endpoint subnode as defined in [2] and [3]. | ||
31 | 36 | ||
32 | Optional properties: | 37 | Optional properties: |
33 | - panel@0: Node of panel connected to this DSI controller. | 38 | - panel@0: Node of panel connected to this DSI controller. |
34 | See files in Documentation/devicetree/bindings/display/panel/ for each supported | 39 | See files in [4] for each supported panel. |
35 | panel. | ||
36 | - qcom,dual-dsi-mode: Boolean value indicating if the DSI controller is | 40 | - qcom,dual-dsi-mode: Boolean value indicating if the DSI controller is |
37 | driving a panel which needs 2 DSI links. | 41 | driving a panel which needs 2 DSI links. |
38 | - qcom,master-dsi: Boolean value indicating if the DSI controller is driving | 42 | - qcom,master-dsi: Boolean value indicating if the DSI controller is driving |
@@ -44,34 +48,38 @@ Optional properties: | |||
44 | - pinctrl-names: the pin control state names; should contain "default" | 48 | - pinctrl-names: the pin control state names; should contain "default" |
45 | - pinctrl-0: the default pinctrl state (active) | 49 | - pinctrl-0: the default pinctrl state (active) |
46 | - pinctrl-n: the "sleep" pinctrl state | 50 | - pinctrl-n: the "sleep" pinctrl state |
47 | - port: DSI controller output port, containing one endpoint subnode. | 51 | - ports: contains DSI controller input and output ports as children, each |
52 | containing one endpoint subnode. | ||
48 | 53 | ||
49 | DSI Endpoint properties: | 54 | DSI Endpoint properties: |
50 | - remote-endpoint: set to phandle of the connected panel's endpoint. | 55 | - remote-endpoint: For port@0, set to phandle of the connected panel/bridge's |
51 | See Documentation/devicetree/bindings/graph.txt for device graph info. | 56 | input endpoint. For port@1, set to the MDP interface output. See [2] for |
52 | - qcom,data-lane-map: this describes how the logical DSI lanes are mapped | 57 | device graph info. |
53 | to the physical lanes on the given platform. The value contained in | 58 | |
54 | index n describes what logical data lane is mapped to the physical data | 59 | - data-lanes: this describes how the physical DSI data lanes are mapped |
55 | lane n (DATAn, where n lies between 0 and 3). | 60 | to the logical lanes on the given platform. The value contained in |
61 | index n describes what physical lane is mapped to the logical lane n | ||
62 | (DATAn, where n lies between 0 and 3). The clock lane position is fixed | ||
63 | and can't be changed. Hence, they aren't a part of the DT bindings. See | ||
64 | [3] for more info on the data-lanes property. | ||
56 | 65 | ||
57 | For example: | 66 | For example: |
58 | 67 | ||
59 | qcom,data-lane-map = <3 0 1 2>; | 68 | data-lanes = <3 0 1 2>; |
60 | 69 | ||
61 | The above mapping describes that the logical data lane DATA3 is mapped to | 70 | The above mapping describes that the logical data lane DATA0 is mapped to |
62 | the physical data lane DATA0, logical DATA0 to physical DATA1, logic DATA1 | 71 | the physical data lane DATA3, logical DATA1 to physical DATA0, logic DATA2 |
63 | to phys DATA2 and logic DATA2 to phys DATA3. | 72 | to phys DATA1 and logic DATA3 to phys DATA2. |
64 | 73 | ||
65 | There are only a limited number of physical to logical mappings possible: | 74 | There are only a limited number of physical to logical mappings possible: |
66 | 75 | <0 1 2 3> | |
67 | "0123": Logic 0->Phys 0; Logic 1->Phys 1; Logic 2->Phys 2; Logic 3->Phys 3; | 76 | <1 2 3 0> |
68 | "3012": Logic 3->Phys 0; Logic 0->Phys 1; Logic 1->Phys 2; Logic 2->Phys 3; | 77 | <2 3 0 1> |
69 | "2301": Logic 2->Phys 0; Logic 3->Phys 1; Logic 0->Phys 2; Logic 1->Phys 3; | 78 | <3 0 1 2> |
70 | "1230": Logic 1->Phys 0; Logic 2->Phys 1; Logic 3->Phys 2; Logic 0->Phys 3; | 79 | <0 3 2 1> |
71 | "0321": Logic 0->Phys 0; Logic 3->Phys 1; Logic 2->Phys 2; Logic 1->Phys 3; | 80 | <1 0 3 2> |
72 | "1032": Logic 1->Phys 0; Logic 0->Phys 1; Logic 3->Phys 2; Logic 2->Phys 3; | 81 | <2 1 0 3> |
73 | "2103": Logic 2->Phys 0; Logic 1->Phys 1; Logic 0->Phys 2; Logic 3->Phys 3; | 82 | <3 2 1 0> |
74 | "3210": Logic 3->Phys 0; Logic 2->Phys 1; Logic 1->Phys 2; Logic 0->Phys 3; | ||
75 | 83 | ||
76 | DSI PHY: | 84 | DSI PHY: |
77 | Required properties: | 85 | Required properties: |
@@ -86,11 +94,12 @@ Required properties: | |||
86 | * "dsi_pll" | 94 | * "dsi_pll" |
87 | * "dsi_phy" | 95 | * "dsi_phy" |
88 | * "dsi_phy_regulator" | 96 | * "dsi_phy_regulator" |
97 | - clock-cells: Must be 1. The DSI PHY block acts as a clock provider, creating | ||
98 | 2 clocks: A byte clock (index 0), and a pixel clock (index 1). | ||
89 | - qcom,dsi-phy-index: The ID of DSI PHY hardware instance. This should | 99 | - qcom,dsi-phy-index: The ID of DSI PHY hardware instance. This should |
90 | be 0 or 1, since we have 2 DSI PHYs at most for now. | 100 | be 0 or 1, since we have 2 DSI PHYs at most for now. |
91 | - power-domains: Should be <&mmcc MDSS_GDSC>. | 101 | - power-domains: Should be <&mmcc MDSS_GDSC>. |
92 | - clocks: device clocks | 102 | - clocks: Phandles to device clocks. See [1] for details on clock bindings. |
93 | See Documentation/devicetree/bindings/clocks/clock-bindings.txt for details. | ||
94 | - clock-names: the following clocks are required: | 103 | - clock-names: the following clocks are required: |
95 | * "iface_clk" | 104 | * "iface_clk" |
96 | - vddio-supply: phandle to vdd-io regulator device node | 105 | - vddio-supply: phandle to vdd-io regulator device node |
@@ -99,11 +108,16 @@ Optional properties: | |||
99 | - qcom,dsi-phy-regulator-ldo-mode: Boolean value indicating if the LDO mode PHY | 108 | - qcom,dsi-phy-regulator-ldo-mode: Boolean value indicating if the LDO mode PHY |
100 | regulator is wanted. | 109 | regulator is wanted. |
101 | 110 | ||
111 | [1] Documentation/devicetree/bindings/clocks/clock-bindings.txt | ||
112 | [2] Documentation/devicetree/bindings/graph.txt | ||
113 | [3] Documentation/devicetree/bindings/media/video-interfaces.txt | ||
114 | [4] Documentation/devicetree/bindings/display/panel/ | ||
115 | |||
102 | Example: | 116 | Example: |
103 | mdss_dsi0: qcom,mdss_dsi@fd922800 { | 117 | dsi0: dsi@fd922800 { |
104 | compatible = "qcom,mdss-dsi-ctrl"; | 118 | compatible = "qcom,mdss-dsi-ctrl"; |
105 | qcom,dsi-host-index = <0>; | 119 | qcom,dsi-host-index = <0>; |
106 | interrupt-parent = <&mdss_mdp>; | 120 | interrupt-parent = <&mdp>; |
107 | interrupts = <4 0>; | 121 | interrupts = <4 0>; |
108 | reg-names = "dsi_ctrl"; | 122 | reg-names = "dsi_ctrl"; |
109 | reg = <0xfd922800 0x200>; | 123 | reg = <0xfd922800 0x200>; |
@@ -124,19 +138,48 @@ Example: | |||
124 | <&mmcc MDSS_AHB_CLK>, | 138 | <&mmcc MDSS_AHB_CLK>, |
125 | <&mmcc MDSS_MDP_CLK>, | 139 | <&mmcc MDSS_MDP_CLK>, |
126 | <&mmcc MDSS_PCLK0_CLK>; | 140 | <&mmcc MDSS_PCLK0_CLK>; |
141 | |||
142 | assigned-clocks = | ||
143 | <&mmcc BYTE0_CLK_SRC>, | ||
144 | <&mmcc PCLK0_CLK_SRC>; | ||
145 | assigned-clock-parents = | ||
146 | <&dsi_phy0 0>, | ||
147 | <&dsi_phy0 1>; | ||
148 | |||
127 | vdda-supply = <&pma8084_l2>; | 149 | vdda-supply = <&pma8084_l2>; |
128 | vdd-supply = <&pma8084_l22>; | 150 | vdd-supply = <&pma8084_l22>; |
129 | vddio-supply = <&pma8084_l12>; | 151 | vddio-supply = <&pma8084_l12>; |
130 | 152 | ||
131 | qcom,dsi-phy = <&mdss_dsi_phy0>; | 153 | phys = <&dsi_phy0>; |
154 | phy-names ="dsi-phy"; | ||
132 | 155 | ||
133 | qcom,dual-dsi-mode; | 156 | qcom,dual-dsi-mode; |
134 | qcom,master-dsi; | 157 | qcom,master-dsi; |
135 | qcom,sync-dual-dsi; | 158 | qcom,sync-dual-dsi; |
136 | 159 | ||
137 | pinctrl-names = "default", "sleep"; | 160 | pinctrl-names = "default", "sleep"; |
138 | pinctrl-0 = <&mdss_dsi_active>; | 161 | pinctrl-0 = <&dsi_active>; |
139 | pinctrl-1 = <&mdss_dsi_suspend>; | 162 | pinctrl-1 = <&dsi_suspend>; |
163 | |||
164 | ports { | ||
165 | #address-cells = <1>; | ||
166 | #size-cells = <0>; | ||
167 | |||
168 | port@0 { | ||
169 | reg = <0>; | ||
170 | dsi0_in: endpoint { | ||
171 | remote-endpoint = <&mdp_intf1_out>; | ||
172 | }; | ||
173 | }; | ||
174 | |||
175 | port@1 { | ||
176 | reg = <1>; | ||
177 | dsi0_out: endpoint { | ||
178 | remote-endpoint = <&panel_in>; | ||
179 | data-lanes = <0 1 2 3>; | ||
180 | }; | ||
181 | }; | ||
182 | }; | ||
140 | 183 | ||
141 | panel: panel@0 { | 184 | panel: panel@0 { |
142 | compatible = "sharp,lq101r1sx01"; | 185 | compatible = "sharp,lq101r1sx01"; |
@@ -152,16 +195,9 @@ Example: | |||
152 | }; | 195 | }; |
153 | }; | 196 | }; |
154 | }; | 197 | }; |
155 | |||
156 | port { | ||
157 | dsi0_out: endpoint { | ||
158 | remote-endpoint = <&panel_in>; | ||
159 | lanes = <0 1 2 3>; | ||
160 | }; | ||
161 | }; | ||
162 | }; | 198 | }; |
163 | 199 | ||
164 | mdss_dsi_phy0: qcom,mdss_dsi_phy@fd922a00 { | 200 | dsi_phy0: dsi-phy@fd922a00 { |
165 | compatible = "qcom,dsi-phy-28nm-hpm"; | 201 | compatible = "qcom,dsi-phy-28nm-hpm"; |
166 | qcom,dsi-phy-index = <0>; | 202 | qcom,dsi-phy-index = <0>; |
167 | reg-names = | 203 | reg-names = |
@@ -173,6 +209,7 @@ Example: | |||
173 | <0xfd922d80 0x7b>; | 209 | <0xfd922d80 0x7b>; |
174 | clock-names = "iface_clk"; | 210 | clock-names = "iface_clk"; |
175 | clocks = <&mmcc MDSS_AHB_CLK>; | 211 | clocks = <&mmcc MDSS_AHB_CLK>; |
212 | #clock-cells = <1>; | ||
176 | vddio-supply = <&pma8084_l12>; | 213 | vddio-supply = <&pma8084_l12>; |
177 | 214 | ||
178 | qcom,dsi-phy-regulator-ldo-mode; | 215 | qcom,dsi-phy-regulator-ldo-mode; |