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