162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/i2c/qcom,i2c-cci.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Qualcomm Camera Control Interface (CCI) I2C controller 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Loic Poulain <loic.poulain@linaro.org> 1162306a36Sopenharmony_ci - Robert Foss <robert.foss@linaro.org> 1262306a36Sopenharmony_ci 1362306a36Sopenharmony_ciproperties: 1462306a36Sopenharmony_ci compatible: 1562306a36Sopenharmony_ci oneOf: 1662306a36Sopenharmony_ci - enum: 1762306a36Sopenharmony_ci - qcom,msm8226-cci 1862306a36Sopenharmony_ci - qcom,msm8974-cci 1962306a36Sopenharmony_ci - qcom,msm8996-cci 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci - items: 2262306a36Sopenharmony_ci - enum: 2362306a36Sopenharmony_ci - qcom,msm8916-cci 2462306a36Sopenharmony_ci - const: qcom,msm8226-cci # CCI v1 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci - items: 2762306a36Sopenharmony_ci - enum: 2862306a36Sopenharmony_ci - qcom,sdm845-cci 2962306a36Sopenharmony_ci - qcom,sm6350-cci 3062306a36Sopenharmony_ci - qcom,sm8250-cci 3162306a36Sopenharmony_ci - qcom,sm8450-cci 3262306a36Sopenharmony_ci - const: qcom,msm8996-cci # CCI v2 3362306a36Sopenharmony_ci 3462306a36Sopenharmony_ci "#address-cells": 3562306a36Sopenharmony_ci const: 1 3662306a36Sopenharmony_ci 3762306a36Sopenharmony_ci "#size-cells": 3862306a36Sopenharmony_ci const: 0 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ci clocks: 4162306a36Sopenharmony_ci minItems: 3 4262306a36Sopenharmony_ci maxItems: 6 4362306a36Sopenharmony_ci 4462306a36Sopenharmony_ci clock-names: 4562306a36Sopenharmony_ci minItems: 3 4662306a36Sopenharmony_ci maxItems: 6 4762306a36Sopenharmony_ci 4862306a36Sopenharmony_ci interrupts: 4962306a36Sopenharmony_ci maxItems: 1 5062306a36Sopenharmony_ci 5162306a36Sopenharmony_ci power-domains: 5262306a36Sopenharmony_ci maxItems: 1 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci reg: 5562306a36Sopenharmony_ci maxItems: 1 5662306a36Sopenharmony_ci 5762306a36Sopenharmony_cipatternProperties: 5862306a36Sopenharmony_ci "^i2c-bus@[01]$": 5962306a36Sopenharmony_ci $ref: /schemas/i2c/i2c-controller.yaml# 6062306a36Sopenharmony_ci unevaluatedProperties: false 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci properties: 6362306a36Sopenharmony_ci reg: 6462306a36Sopenharmony_ci maxItems: 1 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci clock-frequency: 6762306a36Sopenharmony_ci default: 100000 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_cirequired: 7062306a36Sopenharmony_ci - compatible 7162306a36Sopenharmony_ci - clock-names 7262306a36Sopenharmony_ci - clocks 7362306a36Sopenharmony_ci - interrupts 7462306a36Sopenharmony_ci - reg 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ciallOf: 7762306a36Sopenharmony_ci - if: 7862306a36Sopenharmony_ci properties: 7962306a36Sopenharmony_ci compatible: 8062306a36Sopenharmony_ci contains: 8162306a36Sopenharmony_ci enum: 8262306a36Sopenharmony_ci - qcom,msm8996-cci 8362306a36Sopenharmony_ci then: 8462306a36Sopenharmony_ci required: 8562306a36Sopenharmony_ci - power-domains 8662306a36Sopenharmony_ci 8762306a36Sopenharmony_ci - if: 8862306a36Sopenharmony_ci properties: 8962306a36Sopenharmony_ci compatible: 9062306a36Sopenharmony_ci contains: 9162306a36Sopenharmony_ci enum: 9262306a36Sopenharmony_ci - qcom,msm8226-cci 9362306a36Sopenharmony_ci - qcom,msm8916-cci 9462306a36Sopenharmony_ci then: 9562306a36Sopenharmony_ci properties: 9662306a36Sopenharmony_ci i2c-bus@1: false 9762306a36Sopenharmony_ci 9862306a36Sopenharmony_ci - if: 9962306a36Sopenharmony_ci properties: 10062306a36Sopenharmony_ci compatible: 10162306a36Sopenharmony_ci oneOf: 10262306a36Sopenharmony_ci - contains: 10362306a36Sopenharmony_ci enum: 10462306a36Sopenharmony_ci - qcom,msm8974-cci 10562306a36Sopenharmony_ci 10662306a36Sopenharmony_ci - const: qcom,msm8226-cci 10762306a36Sopenharmony_ci then: 10862306a36Sopenharmony_ci properties: 10962306a36Sopenharmony_ci clocks: 11062306a36Sopenharmony_ci maxItems: 3 11162306a36Sopenharmony_ci clock-names: 11262306a36Sopenharmony_ci items: 11362306a36Sopenharmony_ci - const: camss_top_ahb 11462306a36Sopenharmony_ci - const: cci_ahb 11562306a36Sopenharmony_ci - const: cci 11662306a36Sopenharmony_ci 11762306a36Sopenharmony_ci - if: 11862306a36Sopenharmony_ci properties: 11962306a36Sopenharmony_ci compatible: 12062306a36Sopenharmony_ci oneOf: 12162306a36Sopenharmony_ci - contains: 12262306a36Sopenharmony_ci enum: 12362306a36Sopenharmony_ci - qcom,msm8916-cci 12462306a36Sopenharmony_ci 12562306a36Sopenharmony_ci - const: qcom,msm8996-cci 12662306a36Sopenharmony_ci then: 12762306a36Sopenharmony_ci properties: 12862306a36Sopenharmony_ci clocks: 12962306a36Sopenharmony_ci maxItems: 4 13062306a36Sopenharmony_ci clock-names: 13162306a36Sopenharmony_ci items: 13262306a36Sopenharmony_ci - const: camss_top_ahb 13362306a36Sopenharmony_ci - const: cci_ahb 13462306a36Sopenharmony_ci - const: cci 13562306a36Sopenharmony_ci - const: camss_ahb 13662306a36Sopenharmony_ci 13762306a36Sopenharmony_ci - if: 13862306a36Sopenharmony_ci properties: 13962306a36Sopenharmony_ci compatible: 14062306a36Sopenharmony_ci contains: 14162306a36Sopenharmony_ci enum: 14262306a36Sopenharmony_ci - qcom,sdm845-cci 14362306a36Sopenharmony_ci - qcom,sm6350-cci 14462306a36Sopenharmony_ci then: 14562306a36Sopenharmony_ci properties: 14662306a36Sopenharmony_ci clocks: 14762306a36Sopenharmony_ci minItems: 6 14862306a36Sopenharmony_ci clock-names: 14962306a36Sopenharmony_ci items: 15062306a36Sopenharmony_ci - const: camnoc_axi 15162306a36Sopenharmony_ci - const: soc_ahb 15262306a36Sopenharmony_ci - const: slow_ahb_src 15362306a36Sopenharmony_ci - const: cpas_ahb 15462306a36Sopenharmony_ci - const: cci 15562306a36Sopenharmony_ci - const: cci_src 15662306a36Sopenharmony_ci 15762306a36Sopenharmony_ci - if: 15862306a36Sopenharmony_ci properties: 15962306a36Sopenharmony_ci compatible: 16062306a36Sopenharmony_ci contains: 16162306a36Sopenharmony_ci enum: 16262306a36Sopenharmony_ci - qcom,sm8250-cci 16362306a36Sopenharmony_ci - qcom,sm8450-cci 16462306a36Sopenharmony_ci then: 16562306a36Sopenharmony_ci properties: 16662306a36Sopenharmony_ci clocks: 16762306a36Sopenharmony_ci minItems: 5 16862306a36Sopenharmony_ci maxItems: 5 16962306a36Sopenharmony_ci clock-names: 17062306a36Sopenharmony_ci items: 17162306a36Sopenharmony_ci - const: camnoc_axi 17262306a36Sopenharmony_ci - const: slow_ahb_src 17362306a36Sopenharmony_ci - const: cpas_ahb 17462306a36Sopenharmony_ci - const: cci 17562306a36Sopenharmony_ci - const: cci_src 17662306a36Sopenharmony_ci 17762306a36Sopenharmony_ciadditionalProperties: false 17862306a36Sopenharmony_ci 17962306a36Sopenharmony_ciexamples: 18062306a36Sopenharmony_ci - | 18162306a36Sopenharmony_ci #include <dt-bindings/clock/qcom,camcc-sdm845.h> 18262306a36Sopenharmony_ci #include <dt-bindings/gpio/gpio.h> 18362306a36Sopenharmony_ci #include <dt-bindings/interrupt-controller/arm-gic.h> 18462306a36Sopenharmony_ci 18562306a36Sopenharmony_ci cci@ac4a000 { 18662306a36Sopenharmony_ci reg = <0x0ac4a000 0x4000>; 18762306a36Sopenharmony_ci compatible = "qcom,sdm845-cci", "qcom,msm8996-cci"; 18862306a36Sopenharmony_ci #address-cells = <1>; 18962306a36Sopenharmony_ci #size-cells = <0>; 19062306a36Sopenharmony_ci 19162306a36Sopenharmony_ci interrupts = <GIC_SPI 460 IRQ_TYPE_EDGE_RISING>; 19262306a36Sopenharmony_ci power-domains = <&clock_camcc TITAN_TOP_GDSC>; 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_ci clocks = <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>, 19562306a36Sopenharmony_ci <&clock_camcc CAM_CC_SOC_AHB_CLK>, 19662306a36Sopenharmony_ci <&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>, 19762306a36Sopenharmony_ci <&clock_camcc CAM_CC_CPAS_AHB_CLK>, 19862306a36Sopenharmony_ci <&clock_camcc CAM_CC_CCI_CLK>, 19962306a36Sopenharmony_ci <&clock_camcc CAM_CC_CCI_CLK_SRC>; 20062306a36Sopenharmony_ci clock-names = "camnoc_axi", 20162306a36Sopenharmony_ci "soc_ahb", 20262306a36Sopenharmony_ci "slow_ahb_src", 20362306a36Sopenharmony_ci "cpas_ahb", 20462306a36Sopenharmony_ci "cci", 20562306a36Sopenharmony_ci "cci_src"; 20662306a36Sopenharmony_ci 20762306a36Sopenharmony_ci assigned-clocks = <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>, 20862306a36Sopenharmony_ci <&clock_camcc CAM_CC_CCI_CLK>; 20962306a36Sopenharmony_ci assigned-clock-rates = <80000000>, 21062306a36Sopenharmony_ci <37500000>; 21162306a36Sopenharmony_ci 21262306a36Sopenharmony_ci pinctrl-names = "default", "sleep"; 21362306a36Sopenharmony_ci pinctrl-0 = <&cci0_default &cci1_default>; 21462306a36Sopenharmony_ci pinctrl-1 = <&cci0_sleep &cci1_sleep>; 21562306a36Sopenharmony_ci 21662306a36Sopenharmony_ci i2c-bus@0 { 21762306a36Sopenharmony_ci reg = <0>; 21862306a36Sopenharmony_ci clock-frequency = <1000000>; 21962306a36Sopenharmony_ci #address-cells = <1>; 22062306a36Sopenharmony_ci #size-cells = <0>; 22162306a36Sopenharmony_ci 22262306a36Sopenharmony_ci camera@10 { 22362306a36Sopenharmony_ci compatible = "ovti,ov8856"; 22462306a36Sopenharmony_ci reg = <0x10>; 22562306a36Sopenharmony_ci 22662306a36Sopenharmony_ci reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>; 22762306a36Sopenharmony_ci pinctrl-names = "default"; 22862306a36Sopenharmony_ci pinctrl-0 = <&cam0_default>; 22962306a36Sopenharmony_ci 23062306a36Sopenharmony_ci clocks = <&clock_camcc CAM_CC_MCLK0_CLK>; 23162306a36Sopenharmony_ci clock-names = "xvclk"; 23262306a36Sopenharmony_ci clock-frequency = <19200000>; 23362306a36Sopenharmony_ci 23462306a36Sopenharmony_ci dovdd-supply = <&vreg_lvs1a_1p8>; 23562306a36Sopenharmony_ci avdd-supply = <&cam0_avdd_2v8>; 23662306a36Sopenharmony_ci dvdd-supply = <&cam0_dvdd_1v2>; 23762306a36Sopenharmony_ci 23862306a36Sopenharmony_ci port { 23962306a36Sopenharmony_ci ov8856_ep: endpoint { 24062306a36Sopenharmony_ci link-frequencies = /bits/ 64 <360000000 180000000>; 24162306a36Sopenharmony_ci data-lanes = <1 2 3 4>; 24262306a36Sopenharmony_ci remote-endpoint = <&csiphy0_ep>; 24362306a36Sopenharmony_ci }; 24462306a36Sopenharmony_ci }; 24562306a36Sopenharmony_ci }; 24662306a36Sopenharmony_ci }; 24762306a36Sopenharmony_ci 24862306a36Sopenharmony_ci cci_i2c1: i2c-bus@1 { 24962306a36Sopenharmony_ci reg = <1>; 25062306a36Sopenharmony_ci clock-frequency = <1000000>; 25162306a36Sopenharmony_ci #address-cells = <1>; 25262306a36Sopenharmony_ci #size-cells = <0>; 25362306a36Sopenharmony_ci 25462306a36Sopenharmony_ci camera@60 { 25562306a36Sopenharmony_ci compatible = "ovti,ov7251"; 25662306a36Sopenharmony_ci reg = <0x60>; 25762306a36Sopenharmony_ci 25862306a36Sopenharmony_ci enable-gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>; 25962306a36Sopenharmony_ci pinctrl-names = "default"; 26062306a36Sopenharmony_ci pinctrl-0 = <&cam3_default>; 26162306a36Sopenharmony_ci 26262306a36Sopenharmony_ci clocks = <&clock_camcc CAM_CC_MCLK3_CLK>; 26362306a36Sopenharmony_ci clock-names = "xclk"; 26462306a36Sopenharmony_ci clock-frequency = <24000000>; 26562306a36Sopenharmony_ci 26662306a36Sopenharmony_ci vdddo-supply = <&vreg_lvs1a_1p8>; 26762306a36Sopenharmony_ci vdda-supply = <&cam3_avdd_2v8>; 26862306a36Sopenharmony_ci 26962306a36Sopenharmony_ci port { 27062306a36Sopenharmony_ci ov7251_ep: endpoint { 27162306a36Sopenharmony_ci data-lanes = <0 1>; 27262306a36Sopenharmony_ci link-frequencies = /bits/ 64 <240000000 319200000>; 27362306a36Sopenharmony_ci remote-endpoint = <&csiphy3_ep>; 27462306a36Sopenharmony_ci }; 27562306a36Sopenharmony_ci }; 27662306a36Sopenharmony_ci }; 27762306a36Sopenharmony_ci }; 27862306a36Sopenharmony_ci }; 279