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