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