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