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