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