blob: 36dad1a9b6e09e23ea50d91391a89ff18ff12ff6 [file] [log] [blame]
Lakshmi Narayana Kalavala85c40352017-05-15 16:19:13 -07001* Qualcomm Technologies, Inc. MSM Camera ICP
2
3The MSM camera ICP devices are implemented multiple device nodes.
4The root icp device node has properties defined to hint the driver
5about the number of A5,IPE and BPS nodes available during the
6probe sequence. Each node has multiple properties defined
7for interrupts, clocks and regulators.
8
9=======================
10Required Node Structure
11=======================
12ICP root interface node takes care of the handling account for number
13of A5, IPE and BPS devices present on the hardware.
14
15- compatible
16 Usage: required
17 Value type: <string>
18 Definition: Should be "qcom,cam-icp".
19
20- compat-hw-name
Lakshmi Narayana Kalavala85c40352017-05-15 16:19:13 -070021 Usage: required
22 Value type: <string>
Suresh Vankadara22697d32017-07-03 12:14:09 -070023 Definition: Should be "qcom,a5" or "qcom,ipe0" or "qcom,ipe1" or "qcom,bps".
Lakshmi Narayana Kalavala85c40352017-05-15 16:19:13 -070024
25- num-a5
26 Usage: required
27 Value type: <u32>
28 Definition: Number of supported A5 processors.
29
30- num-ipe
31 Usage: required
32 Value type: <u32>
33 Definition: Number of supported IPE HW blocks.
34
35- num-bps
36 Usage: required
37 Value type: <u32>
38 Definition: Number of supported BPS HW blocks.
39
40Example:
41 qcom,cam-icp {
42 compatible = "qcom,cam-icp";
43 compat-hw-name = "qcom,a5", "qcom,ipe0", "qcom,ipe1", "qcom,bps";
44 num-a5 = <1>;
45 num-ipe = <2>;
46 num-bps = <1>;
47 status = "ok";
48 };
49
50=======================
51Required Node Structure
52=======================
53A5/IPE/BPS Node's provides interface for Image Control Processor driver
54about the A5 register map, interrupt map, clocks, regulators
55and name of firmware image.
56
57- cell-index
58 Usage: required
59 Value type: <u32>
60 Definition: Node instance number.
61
62- compatible
63 Usage: required
64 Value type: <string>
Suresh Vankadara22697d32017-07-03 12:14:09 -070065 Definition: Should be "qcom,cam-a5" or "qcom,cam-ipe" or "qcom,cam-bps".
Lakshmi Narayana Kalavala85c40352017-05-15 16:19:13 -070066
67- reg-names
68 Usage: optional
69 Value type: <string>
70 Definition: Name of the register resources.
71
72- reg
73 Usage: optional
74 Value type: <u32>
75 Definition: Register values.
76
77- reg-cam-base
78 Usage: optional
79 Value type: <u32>
80 Definition: Register values.
81
82- interrupt-names
83 Usage: optional
84 Value type: <string>
85 Definition: Name of the interrupt.
86
87- interrupts
88 Usage: optional
89 Value type: <u32>
90 Definition: Interrupt associated with CDM HW.
91
92- regulator-names
93 Usage: required
94 Value type: <string>
95 Definition: Name of the regulator resources for CDM HW.
96
97- camss-supply
98 Usage: required
99 Value type: <phandle>
100 Definition: Regulator reference corresponding to the names listed
101 in "regulator-names".
102
103- clock-names
104 Usage: required
105 Value type: <string>
106 Definition: List of clock names required for CDM HW.
107
Suresh Vankadara34494fc2017-08-12 18:18:09 +0530108- src-clock-name
109 Usage: required
110 Value type: <string>
111 Definition: Source clock name.
112
Lakshmi Narayana Kalavala85c40352017-05-15 16:19:13 -0700113- clocks
114 Usage: required
115 Value type: <phandle>
116 Definition: List of clocks used for CDM HW.
117
Pavan Kumar Chilamkurthi7e7607b2017-06-22 20:02:50 -0700118- clock-cntl-level
119 Usage: required
120 Value type: <string>
121 Definition: List of strings corresponds clock-rates levels.
Suresh Vankadara34494fc2017-08-12 18:18:09 +0530122 Supported strings: lowsvs, svs, svs_l1, nominal, turbo.
Pavan Kumar Chilamkurthi7e7607b2017-06-22 20:02:50 -0700123
Lakshmi Narayana Kalavala85c40352017-05-15 16:19:13 -0700124- clock-rates
125 Usage: required
126 Value type: <u32>
127 Definition: List of clocks rates.
128
129- fw_name
130 Usage: optional
131 Value type: <string>
132 Definition: Name of firmware image.
133
134Examples:
Suresh Vankadara22697d32017-07-03 12:14:09 -0700135a5: qcom,a5@ac00000 {
Lakshmi Narayana Kalavala85c40352017-05-15 16:19:13 -0700136 cell-index = <0>;
Suresh Vankadara22697d32017-07-03 12:14:09 -0700137 compatible = "qcom,cam-a5";
Lakshmi Narayana Kalavala85c40352017-05-15 16:19:13 -0700138 reg = <0xac00000 0x6000>,
139 <0xac10000 0x8000>,
140 <0xac18000 0x3000>;
141 reg-names = "a5_qgic", "a5_sierra", "a5_csr";
142 interrupts = <0 463 0>;
143 interrupt-names = "a5";
144 regulator-names = "camss-vdd";
145 camss-vdd-supply = <&titan_top_gdsc>;
146 clock-names = "gcc_cam_ahb_clk",
147 "gcc_cam_axi_clk",
148 "soc_ahb_clk",
149 "cpas_ahb_clk",
150 "camnoc_axi_clk",
151 "icp_apb_clk",
152 "icp_atb_clk",
153 "icp_clk",
154 "icp_clk_src",
155 "icp_cti_clk",
156 "icp_ts_clk";
157 clocks = <&clock_gcc GCC_CAMERA_AHB_CLK>,
158 <&clock_gcc GCC_CAMERA_AXI_CLK>,
159 <&clock_camcc CAM_CC_SOC_AHB_CLK>,
160 <&clock_camcc CAM_CC_CPAS_AHB_CLK>,
161 <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
162 <&clock_camcc CAM_CC_ICP_APB_CLK>,
163 <&clock_camcc CAM_CC_ICP_ATB_CLK>,
164 <&clock_camcc CAM_CC_ICP_CLK>,
165 <&clock_camcc CAM_CC_ICP_CLK_SRC>,
166 <&clock_camcc CAM_CC_ICP_CTI_CLK>,
167 <&clock_camcc CAM_CC_ICP_TS_CLK>;
168
169 clock-rates = <0 0 0 80000000 0 0 0 0 600000000 0 0>;
Pavan Kumar Chilamkurthi7e7607b2017-06-22 20:02:50 -0700170 clock-cntl-level = "turbo";
Lakshmi Narayana Kalavala85c40352017-05-15 16:19:13 -0700171 fw_name = "CAMERA_ICP.elf";
172};
173
174qcom,ipe0 {
175 cell-index = <0>;
Suresh Vankadara22697d32017-07-03 12:14:09 -0700176 compatible = "qcom,cam-ipe";
Lakshmi Narayana Kalavala85c40352017-05-15 16:19:13 -0700177 regulator-names = "ipe0-vdd";
178 ipe0-vdd-supply = <&ipe_0_gdsc>;
179 clock-names = "ipe_0_ahb_clk",
180 "ipe_0_areg_clk",
181 "ipe_0_axi_clk",
182 "ipe_0_clk",
183 "ipe_0_clk_src";
Suresh Vankadara34494fc2017-08-12 18:18:09 +0530184 src-clock-name = "ipe_0_clk_src";
Lakshmi Narayana Kalavala85c40352017-05-15 16:19:13 -0700185 clocks = <&clock_camcc CAM_CC_IPE_0_AHB_CLK>,
186 <&clock_camcc CAM_CC_IPE_0_AREG_CLK>,
187 <&clock_camcc CAM_CC_IPE_0_AXI_CLK>,
188 <&clock_camcc CAM_CC_IPE_0_CLK>,
189 <&clock_camcc CAM_CC_IPE_0_CLK_SRC>;
190
Suresh Vankadara34494fc2017-08-12 18:18:09 +0530191 clock-rates = <0 0 0 0 240000000>,
192 <0 0 0 0 404000000>,
193 <0 0 0 0 480000000>,
194 <0 0 0 0 538000000>,
195 <0 0 0 0 600000000>;
196 clock-cntl-level = "lowsvs", "svs",
197 "svs_l1", "nominal", "turbo";
Lakshmi Narayana Kalavala85c40352017-05-15 16:19:13 -0700198};
199
200qcom,ipe1 {
201 cell-index = <1>;
Suresh Vankadara22697d32017-07-03 12:14:09 -0700202 compatible = "qcom,cam-ipe";
Lakshmi Narayana Kalavala85c40352017-05-15 16:19:13 -0700203 regulator-names = "ipe1-vdd";
204 ipe1-vdd-supply = <&ipe_1_gdsc>;
205 clock-names = "ipe_1_ahb_clk",
206 "ipe_1_areg_clk",
207 "ipe_1_axi_clk",
208 "ipe_1_clk",
209 "ipe_1_clk_src";
Suresh Vankadara34494fc2017-08-12 18:18:09 +0530210 src-clock-name = "ipe_1_clk_src";
Lakshmi Narayana Kalavala85c40352017-05-15 16:19:13 -0700211 clocks = <&clock_camcc CAM_CC_IPE_1_AHB_CLK>,
212 <&clock_camcc CAM_CC_IPE_1_AREG_CLK>,
213 <&clock_camcc CAM_CC_IPE_1_AXI_CLK>,
214 <&clock_camcc CAM_CC_IPE_1_CLK>,
215 <&clock_camcc CAM_CC_IPE_1_CLK_SRC>;
216
Suresh Vankadara34494fc2017-08-12 18:18:09 +0530217 clock-rates = <0 0 0 0 240000000>,
218 <0 0 0 0 404000000>,
219 <0 0 0 0 480000000>,
220 <0 0 0 0 538000000>,
221 <0 0 0 0 600000000>;
222 clock-cntl-level = "lowsvs", "svs",
223 "svs_l1", "nominal", "turbo";
Lakshmi Narayana Kalavala85c40352017-05-15 16:19:13 -0700224};
225
226bps: qcom,bps {
227 cell-index = <0>;
Suresh Vankadara22697d32017-07-03 12:14:09 -0700228 compatible = "qcom,cam-bps";
Lakshmi Narayana Kalavala85c40352017-05-15 16:19:13 -0700229 regulator-names = "bps-vdd";
230 bps-vdd-supply = <&bps_gdsc>;
231 clock-names = "bps_ahb_clk",
232 "bps_areg_clk",
233 "bps_axi_clk",
234 "bps_clk",
235 "bps_clk_src";
Suresh Vankadara34494fc2017-08-12 18:18:09 +0530236 src-clock-name = "bps_clk_src";
Lakshmi Narayana Kalavala85c40352017-05-15 16:19:13 -0700237 clocks = <&clock_camcc CAM_CC_BPS_AHB_CLK>,
238 <&clock_camcc CAM_CC_BPS_AREG_CLK>,
239 <&clock_camcc CAM_CC_BPS_AXI_CLK>,
240 <&clock_camcc CAM_CC_BPS_CLK>,
241 <&clock_camcc CAM_CC_BPS_CLK_SRC>;
242
Suresh Vankadara34494fc2017-08-12 18:18:09 +0530243 clock-rates = <0 0 0 0 200000000>,
244 <0 0 0 0 404000000>,
245 <0 0 0 0 480000000>,
246 <0 0 0 0 600000000>,
247 <0 0 0 0 600000000>;
248 clock-cntl-level = "lowsvs", "svs",
249 "svs_l1", "nominal", "turbo";
Lakshmi Narayana Kalavala85c40352017-05-15 16:19:13 -0700250};
251