Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/i2c/qcom,i2c-cci.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm Camera Control Interface (CCI) I2C controller
8
9maintainers:
10 - Loic Poulain <loic.poulain@linaro.org>
11 - Robert Foss <robert.foss@linaro.org>
12
13properties:
14 compatible:
15 oneOf:
16 - enum:
17 - qcom,msm8226-cci
18 - qcom,msm8974-cci
19 - qcom,msm8996-cci
20
21 - items:
22 - enum:
23 - qcom,msm8916-cci
24 - const: qcom,msm8226-cci # CCI v1
25
26 - items:
27 - enum:
28 - qcom,sc7280-cci
29 - qcom,sc8280xp-cci
30 - qcom,sdm670-cci
31 - qcom,sdm845-cci
32 - qcom,sm6350-cci
33 - qcom,sm8250-cci
34 - qcom,sm8450-cci
35 - qcom,sm8550-cci
36 - qcom,sm8650-cci
37 - qcom,x1e80100-cci
38 - const: qcom,msm8996-cci # CCI v2
39
40 "#address-cells":
41 const: 1
42
43 "#size-cells":
44 const: 0
45
46 clocks:
47 minItems: 3
48 maxItems: 6
49
50 clock-names:
51 minItems: 3
52 maxItems: 6
53
54 interrupts:
55 maxItems: 1
56
57 power-domains:
58 maxItems: 1
59
60 reg:
61 maxItems: 1
62
63patternProperties:
64 "^i2c-bus@[01]$":
65 $ref: /schemas/i2c/i2c-controller.yaml#
66 unevaluatedProperties: false
67
68 properties:
69 reg:
70 maxItems: 1
71
72 clock-frequency:
73 default: 100000
74
75required:
76 - compatible
77 - clock-names
78 - clocks
79 - interrupts
80 - reg
81
82allOf:
83 - if:
84 properties:
85 compatible:
86 contains:
87 enum:
88 - qcom,msm8996-cci
89 then:
90 required:
91 - power-domains
92
93 - if:
94 properties:
95 compatible:
96 contains:
97 enum:
98 - qcom,msm8226-cci
99 - qcom,msm8916-cci
100 then:
101 properties:
102 i2c-bus@1: false
103
104 - if:
105 properties:
106 compatible:
107 oneOf:
108 - contains:
109 enum:
110 - qcom,msm8974-cci
111
112 - const: qcom,msm8226-cci
113 then:
114 properties:
115 clocks:
116 maxItems: 3
117 clock-names:
118 items:
119 - const: camss_top_ahb
120 - const: cci_ahb
121 - const: cci
122
123 - if:
124 properties:
125 compatible:
126 oneOf:
127 - contains:
128 enum:
129 - qcom,msm8916-cci
130
131 - const: qcom,msm8996-cci
132 then:
133 properties:
134 clocks:
135 minItems: 4
136 maxItems: 4
137 clock-names:
138 items:
139 - const: camss_top_ahb
140 - const: cci_ahb
141 - const: cci
142 - const: camss_ahb
143
144 - if:
145 properties:
146 compatible:
147 contains:
148 enum:
149 - qcom,sdm670-cci
150 then:
151 properties:
152 clocks:
153 minItems: 4
154 maxItems: 4
155 clock-names:
156 items:
157 - const: camnoc_axi
158 - const: soc_ahb
159 - const: cpas_ahb
160 - const: cci
161
162 - if:
163 properties:
164 compatible:
165 contains:
166 enum:
167 - qcom,sdm845-cci
168 - qcom,sm6350-cci
169 then:
170 properties:
171 clocks:
172 minItems: 6
173 clock-names:
174 items:
175 - const: camnoc_axi
176 - const: soc_ahb
177 - const: slow_ahb_src
178 - const: cpas_ahb
179 - const: cci
180 - const: cci_src
181
182 - if:
183 properties:
184 compatible:
185 contains:
186 enum:
187 - qcom,sc7280-cci
188 - qcom,sm8250-cci
189 - qcom,sm8450-cci
190 then:
191 properties:
192 clocks:
193 minItems: 5
194 maxItems: 5
195 clock-names:
196 items:
197 - const: camnoc_axi
198 - const: slow_ahb_src
199 - const: cpas_ahb
200 - const: cci
201 - const: cci_src
202
203 - if:
204 properties:
205 compatible:
206 contains:
207 enum:
208 - qcom,sc8280xp-cci
209 then:
210 properties:
211 clocks:
212 minItems: 4
213 maxItems: 4
214 clock-names:
215 items:
216 - const: camnoc_axi
217 - const: slow_ahb_src
218 - const: cpas_ahb
219 - const: cci
220
221 - if:
222 properties:
223 compatible:
224 contains:
225 enum:
226 - qcom,sm8550-cci
227 - qcom,sm8650-cci
228 - qcom,x1e80100-cci
229 then:
230 properties:
231 clocks:
232 minItems: 3
233 maxItems: 3
234 clock-names:
235 items:
236 - const: camnoc_axi
237 - const: cpas_ahb
238 - const: cci
239
240additionalProperties: false
241
242examples:
243 - |
244 #include <dt-bindings/clock/qcom,camcc-sdm845.h>
245 #include <dt-bindings/gpio/gpio.h>
246 #include <dt-bindings/interrupt-controller/arm-gic.h>
247
248 cci@ac4a000 {
249 reg = <0x0ac4a000 0x4000>;
250 compatible = "qcom,sdm845-cci", "qcom,msm8996-cci";
251 #address-cells = <1>;
252 #size-cells = <0>;
253
254 interrupts = <GIC_SPI 460 IRQ_TYPE_EDGE_RISING>;
255 power-domains = <&clock_camcc TITAN_TOP_GDSC>;
256
257 clocks = <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
258 <&clock_camcc CAM_CC_SOC_AHB_CLK>,
259 <&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
260 <&clock_camcc CAM_CC_CPAS_AHB_CLK>,
261 <&clock_camcc CAM_CC_CCI_CLK>,
262 <&clock_camcc CAM_CC_CCI_CLK_SRC>;
263 clock-names = "camnoc_axi",
264 "soc_ahb",
265 "slow_ahb_src",
266 "cpas_ahb",
267 "cci",
268 "cci_src";
269
270 assigned-clocks = <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
271 <&clock_camcc CAM_CC_CCI_CLK>;
272 assigned-clock-rates = <80000000>,
273 <37500000>;
274
275 pinctrl-names = "default", "sleep";
276 pinctrl-0 = <&cci0_default &cci1_default>;
277 pinctrl-1 = <&cci0_sleep &cci1_sleep>;
278
279 i2c-bus@0 {
280 reg = <0>;
281 clock-frequency = <1000000>;
282 #address-cells = <1>;
283 #size-cells = <0>;
284
285 camera@10 {
286 compatible = "ovti,ov8856";
287 reg = <0x10>;
288
289 reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>;
290 pinctrl-names = "default";
291 pinctrl-0 = <&cam0_default>;
292
293 clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
294 clock-names = "xvclk";
295 clock-frequency = <19200000>;
296
297 dovdd-supply = <&vreg_lvs1a_1p8>;
298 avdd-supply = <&cam0_avdd_2v8>;
299 dvdd-supply = <&cam0_dvdd_1v2>;
300
301 port {
302 ov8856_ep: endpoint {
303 link-frequencies = /bits/ 64 <360000000 180000000>;
304 data-lanes = <1 2 3 4>;
305 remote-endpoint = <&csiphy0_ep>;
306 };
307 };
308 };
309 };
310
311 cci_i2c1: i2c-bus@1 {
312 reg = <1>;
313 clock-frequency = <1000000>;
314 #address-cells = <1>;
315 #size-cells = <0>;
316
317 camera@60 {
318 compatible = "ovti,ov7251";
319 reg = <0x60>;
320
321 enable-gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>;
322 pinctrl-names = "default";
323 pinctrl-0 = <&cam3_default>;
324
325 clocks = <&clock_camcc CAM_CC_MCLK3_CLK>;
326 clock-names = "xclk";
327 clock-frequency = <24000000>;
328
329 vdddo-supply = <&vreg_lvs1a_1p8>;
330 vdda-supply = <&cam3_avdd_2v8>;
331
332 port {
333 ov7251_ep: endpoint {
334 data-lanes = <0>;
335 link-frequencies = /bits/ 64 <240000000 319200000>;
336 remote-endpoint = <&csiphy3_ep>;
337 };
338 };
339 };
340 };
341 };