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