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