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