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