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