321 lines · yaml
1# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause2%YAML 1.23---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 controller8 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-cci18 - qcom,msm8974-cci19 - qcom,msm8996-cci20 21 - items:22 - enum:23 - qcom,msm8916-cci24 - const: qcom,msm8226-cci # CCI v125 26 - items:27 - enum:28 - qcom,sc7280-cci29 - qcom,sc8280xp-cci30 - qcom,sdm845-cci31 - qcom,sm6350-cci32 - qcom,sm8250-cci33 - qcom,sm8450-cci34 - qcom,sm8550-cci35 - qcom,sm8650-cci36 - const: qcom,msm8996-cci # CCI v237 38 "#address-cells":39 const: 140 41 "#size-cells":42 const: 043 44 clocks:45 minItems: 346 maxItems: 647 48 clock-names:49 minItems: 350 maxItems: 651 52 interrupts:53 maxItems: 154 55 power-domains:56 maxItems: 157 58 reg:59 maxItems: 160 61patternProperties:62 "^i2c-bus@[01]$":63 $ref: /schemas/i2c/i2c-controller.yaml#64 unevaluatedProperties: false65 66 properties:67 reg:68 maxItems: 169 70 clock-frequency:71 default: 10000072 73required:74 - compatible75 - clock-names76 - clocks77 - interrupts78 - reg79 80allOf:81 - if:82 properties:83 compatible:84 contains:85 enum:86 - qcom,msm8996-cci87 then:88 required:89 - power-domains90 91 - if:92 properties:93 compatible:94 contains:95 enum:96 - qcom,msm8226-cci97 - qcom,msm8916-cci98 then:99 properties:100 i2c-bus@1: false101 102 - if:103 properties:104 compatible:105 oneOf:106 - contains:107 enum:108 - qcom,msm8974-cci109 110 - const: qcom,msm8226-cci111 then:112 properties:113 clocks:114 maxItems: 3115 clock-names:116 items:117 - const: camss_top_ahb118 - const: cci_ahb119 - const: cci120 121 - if:122 properties:123 compatible:124 oneOf:125 - contains:126 enum:127 - qcom,msm8916-cci128 129 - const: qcom,msm8996-cci130 then:131 properties:132 clocks:133 minItems: 4134 maxItems: 4135 clock-names:136 items:137 - const: camss_top_ahb138 - const: cci_ahb139 - const: cci140 - const: camss_ahb141 142 - if:143 properties:144 compatible:145 contains:146 enum:147 - qcom,sdm845-cci148 - qcom,sm6350-cci149 then:150 properties:151 clocks:152 minItems: 6153 clock-names:154 items:155 - const: camnoc_axi156 - const: soc_ahb157 - const: slow_ahb_src158 - const: cpas_ahb159 - const: cci160 - const: cci_src161 162 - if:163 properties:164 compatible:165 contains:166 enum:167 - qcom,sc7280-cci168 - qcom,sm8250-cci169 - qcom,sm8450-cci170 then:171 properties:172 clocks:173 minItems: 5174 maxItems: 5175 clock-names:176 items:177 - const: camnoc_axi178 - const: slow_ahb_src179 - const: cpas_ahb180 - const: cci181 - const: cci_src182 183 - if:184 properties:185 compatible:186 contains:187 enum:188 - qcom,sc8280xp-cci189 then:190 properties:191 clocks:192 minItems: 4193 maxItems: 4194 clock-names:195 items:196 - const: camnoc_axi197 - const: slow_ahb_src198 - const: cpas_ahb199 - const: cci200 201 - if:202 properties:203 compatible:204 contains:205 enum:206 - qcom,sm8550-cci207 - qcom,sm8650-cci208 then:209 properties:210 clocks:211 minItems: 3212 maxItems: 3213 clock-names:214 items:215 - const: camnoc_axi216 - const: cpas_ahb217 - const: cci218 219additionalProperties: false220 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