xref: /linux/Documentation/devicetree/bindings/i2c/qcom,i2c-cci.yaml (revision 1260ed77798502de9c98020040d2995008de10cc)
10a0b80a4SKrzysztof Kozlowski# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
20a0b80a4SKrzysztof Kozlowski%YAML 1.2
30a0b80a4SKrzysztof Kozlowski---
40a0b80a4SKrzysztof Kozlowski$id: http://devicetree.org/schemas/i2c/qcom,i2c-cci.yaml#
50a0b80a4SKrzysztof Kozlowski$schema: http://devicetree.org/meta-schemas/core.yaml#
60a0b80a4SKrzysztof Kozlowski
70a0b80a4SKrzysztof Kozlowskititle: Qualcomm Camera Control Interface (CCI) I2C controller
80a0b80a4SKrzysztof Kozlowski
90a0b80a4SKrzysztof Kozlowskimaintainers:
100a0b80a4SKrzysztof Kozlowski  - Loic Poulain <loic.poulain@linaro.org>
110a0b80a4SKrzysztof Kozlowski  - Robert Foss <robert.foss@linaro.org>
120a0b80a4SKrzysztof Kozlowski
130a0b80a4SKrzysztof Kozlowskiproperties:
140a0b80a4SKrzysztof Kozlowski  compatible:
15bbdbad3bSKonrad Dybcio    oneOf:
16bbdbad3bSKonrad Dybcio      - enum:
178673b6d9SMatti Lehtimäki          - qcom,msm8226-cci
180a0b80a4SKrzysztof Kozlowski          - qcom,msm8974-cci
190a0b80a4SKrzysztof Kozlowski          - qcom,msm8996-cci
20bbdbad3bSKonrad Dybcio
21bbdbad3bSKonrad Dybcio      - items:
22bbdbad3bSKonrad Dybcio          - enum:
23bbdbad3bSKonrad Dybcio              - qcom,msm8916-cci
24bbdbad3bSKonrad Dybcio          - const: qcom,msm8226-cci # CCI v1
25bbdbad3bSKonrad Dybcio
26bbdbad3bSKonrad Dybcio      - items:
27bbdbad3bSKonrad Dybcio          - enum:
280f75d486SLuca Weiss              - qcom,sc7280-cci
29f32a32adSBryan O'Donoghue              - qcom,sc8280xp-cci
3051104453SRichard Acayan              - qcom,sdm670-cci
310a0b80a4SKrzysztof Kozlowski              - qcom,sdm845-cci
32f531ecf7SLuca Weiss              - qcom,sm6350-cci
330a0b80a4SKrzysztof Kozlowski              - qcom,sm8250-cci
340a0b80a4SKrzysztof Kozlowski              - qcom,sm8450-cci
358c4ff24dSVladimir Zapolskiy              - qcom,sm8550-cci
36064e9113SVladimir Zapolskiy              - qcom,sm8650-cci
37*febe1521SBryan O'Donoghue              - qcom,x1e80100-cci
38bbdbad3bSKonrad Dybcio          - const: qcom,msm8996-cci # CCI v2
390a0b80a4SKrzysztof Kozlowski
400a0b80a4SKrzysztof Kozlowski  "#address-cells":
410a0b80a4SKrzysztof Kozlowski    const: 1
420a0b80a4SKrzysztof Kozlowski
430a0b80a4SKrzysztof Kozlowski  "#size-cells":
440a0b80a4SKrzysztof Kozlowski    const: 0
450a0b80a4SKrzysztof Kozlowski
460a0b80a4SKrzysztof Kozlowski  clocks:
478673b6d9SMatti Lehtimäki    minItems: 3
480a0b80a4SKrzysztof Kozlowski    maxItems: 6
490a0b80a4SKrzysztof Kozlowski
500a0b80a4SKrzysztof Kozlowski  clock-names:
518673b6d9SMatti Lehtimäki    minItems: 3
520a0b80a4SKrzysztof Kozlowski    maxItems: 6
530a0b80a4SKrzysztof Kozlowski
540a0b80a4SKrzysztof Kozlowski  interrupts:
550a0b80a4SKrzysztof Kozlowski    maxItems: 1
560a0b80a4SKrzysztof Kozlowski
570a0b80a4SKrzysztof Kozlowski  power-domains:
580a0b80a4SKrzysztof Kozlowski    maxItems: 1
590a0b80a4SKrzysztof Kozlowski
600a0b80a4SKrzysztof Kozlowski  reg:
610a0b80a4SKrzysztof Kozlowski    maxItems: 1
620a0b80a4SKrzysztof Kozlowski
630a0b80a4SKrzysztof KozlowskipatternProperties:
640a0b80a4SKrzysztof Kozlowski  "^i2c-bus@[01]$":
650a0b80a4SKrzysztof Kozlowski    $ref: /schemas/i2c/i2c-controller.yaml#
660a0b80a4SKrzysztof Kozlowski    unevaluatedProperties: false
670a0b80a4SKrzysztof Kozlowski
680a0b80a4SKrzysztof Kozlowski    properties:
690a0b80a4SKrzysztof Kozlowski      reg:
700a0b80a4SKrzysztof Kozlowski        maxItems: 1
710a0b80a4SKrzysztof Kozlowski
720a0b80a4SKrzysztof Kozlowski      clock-frequency:
730a0b80a4SKrzysztof Kozlowski        default: 100000
740a0b80a4SKrzysztof Kozlowski
750a0b80a4SKrzysztof Kozlowskirequired:
760a0b80a4SKrzysztof Kozlowski  - compatible
770a0b80a4SKrzysztof Kozlowski  - clock-names
780a0b80a4SKrzysztof Kozlowski  - clocks
790a0b80a4SKrzysztof Kozlowski  - interrupts
800a0b80a4SKrzysztof Kozlowski  - reg
810a0b80a4SKrzysztof Kozlowski
820a0b80a4SKrzysztof KozlowskiallOf:
830a0b80a4SKrzysztof Kozlowski  - if:
840a0b80a4SKrzysztof Kozlowski      properties:
850a0b80a4SKrzysztof Kozlowski        compatible:
860a0b80a4SKrzysztof Kozlowski          contains:
870a0b80a4SKrzysztof Kozlowski            enum:
880a0b80a4SKrzysztof Kozlowski              - qcom,msm8996-cci
890a0b80a4SKrzysztof Kozlowski    then:
900a0b80a4SKrzysztof Kozlowski      required:
910a0b80a4SKrzysztof Kozlowski        - power-domains
920a0b80a4SKrzysztof Kozlowski
930a0b80a4SKrzysztof Kozlowski  - if:
940a0b80a4SKrzysztof Kozlowski      properties:
950a0b80a4SKrzysztof Kozlowski        compatible:
960a0b80a4SKrzysztof Kozlowski          contains:
970a0b80a4SKrzysztof Kozlowski            enum:
988673b6d9SMatti Lehtimäki              - qcom,msm8226-cci
990a0b80a4SKrzysztof Kozlowski              - qcom,msm8916-cci
1000a0b80a4SKrzysztof Kozlowski    then:
1010a0b80a4SKrzysztof Kozlowski      properties:
1020a0b80a4SKrzysztof Kozlowski        i2c-bus@1: false
1030a0b80a4SKrzysztof Kozlowski
1040a0b80a4SKrzysztof Kozlowski  - if:
1050a0b80a4SKrzysztof Kozlowski      properties:
1060a0b80a4SKrzysztof Kozlowski        compatible:
107bbdbad3bSKonrad Dybcio          oneOf:
108bbdbad3bSKonrad Dybcio            - contains:
1090a0b80a4SKrzysztof Kozlowski                enum:
1109ad16f96SMatti Lehtimäki                  - qcom,msm8974-cci
111bbdbad3bSKonrad Dybcio
112bbdbad3bSKonrad Dybcio            - const: qcom,msm8226-cci
1138673b6d9SMatti Lehtimäki    then:
1148673b6d9SMatti Lehtimäki      properties:
1158673b6d9SMatti Lehtimäki        clocks:
1168673b6d9SMatti Lehtimäki          maxItems: 3
1178673b6d9SMatti Lehtimäki        clock-names:
1188673b6d9SMatti Lehtimäki          items:
1198673b6d9SMatti Lehtimäki            - const: camss_top_ahb
1208673b6d9SMatti Lehtimäki            - const: cci_ahb
1218673b6d9SMatti Lehtimäki            - const: cci
1228673b6d9SMatti Lehtimäki
1238673b6d9SMatti Lehtimäki  - if:
1248673b6d9SMatti Lehtimäki      properties:
1258673b6d9SMatti Lehtimäki        compatible:
126bbdbad3bSKonrad Dybcio          oneOf:
127bbdbad3bSKonrad Dybcio            - contains:
1288673b6d9SMatti Lehtimäki                enum:
1290a0b80a4SKrzysztof Kozlowski                  - qcom,msm8916-cci
130bbdbad3bSKonrad Dybcio
131bbdbad3bSKonrad Dybcio            - const: qcom,msm8996-cci
1320a0b80a4SKrzysztof Kozlowski    then:
1330a0b80a4SKrzysztof Kozlowski      properties:
1340a0b80a4SKrzysztof Kozlowski        clocks:
135c1a5e6ffSKrzysztof Kozlowski          minItems: 4
1360a0b80a4SKrzysztof Kozlowski          maxItems: 4
1370a0b80a4SKrzysztof Kozlowski        clock-names:
1380a0b80a4SKrzysztof Kozlowski          items:
1390a0b80a4SKrzysztof Kozlowski            - const: camss_top_ahb
1400a0b80a4SKrzysztof Kozlowski            - const: cci_ahb
1410a0b80a4SKrzysztof Kozlowski            - const: cci
1420a0b80a4SKrzysztof Kozlowski            - const: camss_ahb
1430a0b80a4SKrzysztof Kozlowski
1440a0b80a4SKrzysztof Kozlowski  - if:
1450a0b80a4SKrzysztof Kozlowski      properties:
1460a0b80a4SKrzysztof Kozlowski        compatible:
1470a0b80a4SKrzysztof Kozlowski          contains:
1480a0b80a4SKrzysztof Kozlowski            enum:
14951104453SRichard Acayan              - qcom,sdm670-cci
15051104453SRichard Acayan    then:
15151104453SRichard Acayan      properties:
15251104453SRichard Acayan        clocks:
15351104453SRichard Acayan          minItems: 4
15451104453SRichard Acayan          maxItems: 4
15551104453SRichard Acayan        clock-names:
15651104453SRichard Acayan          items:
15751104453SRichard Acayan            - const: camnoc_axi
15851104453SRichard Acayan            - const: soc_ahb
15951104453SRichard Acayan            - const: cpas_ahb
16051104453SRichard Acayan            - const: cci
16151104453SRichard Acayan
16251104453SRichard Acayan  - if:
16351104453SRichard Acayan      properties:
16451104453SRichard Acayan        compatible:
16551104453SRichard Acayan          contains:
16651104453SRichard Acayan            enum:
1670a0b80a4SKrzysztof Kozlowski              - qcom,sdm845-cci
168f531ecf7SLuca Weiss              - qcom,sm6350-cci
1690a0b80a4SKrzysztof Kozlowski    then:
1700a0b80a4SKrzysztof Kozlowski      properties:
1710a0b80a4SKrzysztof Kozlowski        clocks:
1720a0b80a4SKrzysztof Kozlowski          minItems: 6
1730a0b80a4SKrzysztof Kozlowski        clock-names:
1740a0b80a4SKrzysztof Kozlowski          items:
1750a0b80a4SKrzysztof Kozlowski            - const: camnoc_axi
1760a0b80a4SKrzysztof Kozlowski            - const: soc_ahb
1770a0b80a4SKrzysztof Kozlowski            - const: slow_ahb_src
1780a0b80a4SKrzysztof Kozlowski            - const: cpas_ahb
1790a0b80a4SKrzysztof Kozlowski            - const: cci
1800a0b80a4SKrzysztof Kozlowski            - const: cci_src
1810a0b80a4SKrzysztof Kozlowski
1820a0b80a4SKrzysztof Kozlowski  - if:
1830a0b80a4SKrzysztof Kozlowski      properties:
1840a0b80a4SKrzysztof Kozlowski        compatible:
1850a0b80a4SKrzysztof Kozlowski          contains:
1860a0b80a4SKrzysztof Kozlowski            enum:
1870f75d486SLuca Weiss              - qcom,sc7280-cci
1880a0b80a4SKrzysztof Kozlowski              - qcom,sm8250-cci
189e46a1c55SKrzysztof Kozlowski              - qcom,sm8450-cci
1900a0b80a4SKrzysztof Kozlowski    then:
1910a0b80a4SKrzysztof Kozlowski      properties:
1920a0b80a4SKrzysztof Kozlowski        clocks:
1930a0b80a4SKrzysztof Kozlowski          minItems: 5
1940a0b80a4SKrzysztof Kozlowski          maxItems: 5
1950a0b80a4SKrzysztof Kozlowski        clock-names:
1960a0b80a4SKrzysztof Kozlowski          items:
1970a0b80a4SKrzysztof Kozlowski            - const: camnoc_axi
1980a0b80a4SKrzysztof Kozlowski            - const: slow_ahb_src
1990a0b80a4SKrzysztof Kozlowski            - const: cpas_ahb
2000a0b80a4SKrzysztof Kozlowski            - const: cci
2010a0b80a4SKrzysztof Kozlowski            - const: cci_src
2020a0b80a4SKrzysztof Kozlowski
203f32a32adSBryan O'Donoghue  - if:
204f32a32adSBryan O'Donoghue      properties:
205f32a32adSBryan O'Donoghue        compatible:
206f32a32adSBryan O'Donoghue          contains:
207f32a32adSBryan O'Donoghue            enum:
208f32a32adSBryan O'Donoghue              - qcom,sc8280xp-cci
209f32a32adSBryan O'Donoghue    then:
210f32a32adSBryan O'Donoghue      properties:
211f32a32adSBryan O'Donoghue        clocks:
212f32a32adSBryan O'Donoghue          minItems: 4
213f32a32adSBryan O'Donoghue          maxItems: 4
214f32a32adSBryan O'Donoghue        clock-names:
215f32a32adSBryan O'Donoghue          items:
216f32a32adSBryan O'Donoghue            - const: camnoc_axi
217f32a32adSBryan O'Donoghue            - const: slow_ahb_src
218f32a32adSBryan O'Donoghue            - const: cpas_ahb
219f32a32adSBryan O'Donoghue            - const: cci
220f32a32adSBryan O'Donoghue
2218c4ff24dSVladimir Zapolskiy  - if:
2228c4ff24dSVladimir Zapolskiy      properties:
2238c4ff24dSVladimir Zapolskiy        compatible:
2248c4ff24dSVladimir Zapolskiy          contains:
2258c4ff24dSVladimir Zapolskiy            enum:
2268c4ff24dSVladimir Zapolskiy              - qcom,sm8550-cci
227064e9113SVladimir Zapolskiy              - qcom,sm8650-cci
228*febe1521SBryan O'Donoghue              - qcom,x1e80100-cci
2298c4ff24dSVladimir Zapolskiy    then:
2308c4ff24dSVladimir Zapolskiy      properties:
2318c4ff24dSVladimir Zapolskiy        clocks:
2328c4ff24dSVladimir Zapolskiy          minItems: 3
2338c4ff24dSVladimir Zapolskiy          maxItems: 3
2348c4ff24dSVladimir Zapolskiy        clock-names:
2358c4ff24dSVladimir Zapolskiy          items:
2368c4ff24dSVladimir Zapolskiy            - const: camnoc_axi
2378c4ff24dSVladimir Zapolskiy            - const: cpas_ahb
2388c4ff24dSVladimir Zapolskiy            - const: cci
2398c4ff24dSVladimir Zapolskiy
2400a0b80a4SKrzysztof KozlowskiadditionalProperties: false
2410a0b80a4SKrzysztof Kozlowski
2420a0b80a4SKrzysztof Kozlowskiexamples:
2430a0b80a4SKrzysztof Kozlowski  - |
2440a0b80a4SKrzysztof Kozlowski    #include <dt-bindings/clock/qcom,camcc-sdm845.h>
2450a0b80a4SKrzysztof Kozlowski    #include <dt-bindings/gpio/gpio.h>
2460a0b80a4SKrzysztof Kozlowski    #include <dt-bindings/interrupt-controller/arm-gic.h>
2470a0b80a4SKrzysztof Kozlowski
2480a0b80a4SKrzysztof Kozlowski    cci@ac4a000 {
2490a0b80a4SKrzysztof Kozlowski        reg = <0x0ac4a000 0x4000>;
250bbdbad3bSKonrad Dybcio        compatible = "qcom,sdm845-cci", "qcom,msm8996-cci";
2510a0b80a4SKrzysztof Kozlowski        #address-cells = <1>;
2520a0b80a4SKrzysztof Kozlowski        #size-cells = <0>;
2530a0b80a4SKrzysztof Kozlowski
2540a0b80a4SKrzysztof Kozlowski        interrupts = <GIC_SPI 460 IRQ_TYPE_EDGE_RISING>;
2550a0b80a4SKrzysztof Kozlowski        power-domains = <&clock_camcc TITAN_TOP_GDSC>;
2560a0b80a4SKrzysztof Kozlowski
2570a0b80a4SKrzysztof Kozlowski        clocks = <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
2580a0b80a4SKrzysztof Kozlowski                 <&clock_camcc CAM_CC_SOC_AHB_CLK>,
2590a0b80a4SKrzysztof Kozlowski                 <&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
2600a0b80a4SKrzysztof Kozlowski                 <&clock_camcc CAM_CC_CPAS_AHB_CLK>,
2610a0b80a4SKrzysztof Kozlowski                 <&clock_camcc CAM_CC_CCI_CLK>,
2620a0b80a4SKrzysztof Kozlowski                 <&clock_camcc CAM_CC_CCI_CLK_SRC>;
2630a0b80a4SKrzysztof Kozlowski        clock-names = "camnoc_axi",
2640a0b80a4SKrzysztof Kozlowski                      "soc_ahb",
2650a0b80a4SKrzysztof Kozlowski                      "slow_ahb_src",
2660a0b80a4SKrzysztof Kozlowski                      "cpas_ahb",
2670a0b80a4SKrzysztof Kozlowski                      "cci",
2680a0b80a4SKrzysztof Kozlowski                      "cci_src";
2690a0b80a4SKrzysztof Kozlowski
2700a0b80a4SKrzysztof Kozlowski        assigned-clocks = <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
2710a0b80a4SKrzysztof Kozlowski                          <&clock_camcc CAM_CC_CCI_CLK>;
2720a0b80a4SKrzysztof Kozlowski        assigned-clock-rates = <80000000>,
2730a0b80a4SKrzysztof Kozlowski                               <37500000>;
2740a0b80a4SKrzysztof Kozlowski
2750a0b80a4SKrzysztof Kozlowski        pinctrl-names = "default", "sleep";
2760a0b80a4SKrzysztof Kozlowski        pinctrl-0 = <&cci0_default &cci1_default>;
2770a0b80a4SKrzysztof Kozlowski        pinctrl-1 = <&cci0_sleep &cci1_sleep>;
2780a0b80a4SKrzysztof Kozlowski
2790a0b80a4SKrzysztof Kozlowski        i2c-bus@0 {
2800a0b80a4SKrzysztof Kozlowski            reg = <0>;
2810a0b80a4SKrzysztof Kozlowski            clock-frequency = <1000000>;
2820a0b80a4SKrzysztof Kozlowski            #address-cells = <1>;
2830a0b80a4SKrzysztof Kozlowski            #size-cells = <0>;
2840a0b80a4SKrzysztof Kozlowski
2850a0b80a4SKrzysztof Kozlowski            camera@10 {
2860a0b80a4SKrzysztof Kozlowski                compatible = "ovti,ov8856";
2870a0b80a4SKrzysztof Kozlowski                reg = <0x10>;
2880a0b80a4SKrzysztof Kozlowski
2890a0b80a4SKrzysztof Kozlowski                reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>;
2900a0b80a4SKrzysztof Kozlowski                pinctrl-names = "default";
2910a0b80a4SKrzysztof Kozlowski                pinctrl-0 = <&cam0_default>;
2920a0b80a4SKrzysztof Kozlowski
2930a0b80a4SKrzysztof Kozlowski                clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
2940a0b80a4SKrzysztof Kozlowski                clock-names = "xvclk";
2950a0b80a4SKrzysztof Kozlowski                clock-frequency = <19200000>;
2960a0b80a4SKrzysztof Kozlowski
2970a0b80a4SKrzysztof Kozlowski                dovdd-supply = <&vreg_lvs1a_1p8>;
2980a0b80a4SKrzysztof Kozlowski                avdd-supply = <&cam0_avdd_2v8>;
2990a0b80a4SKrzysztof Kozlowski                dvdd-supply = <&cam0_dvdd_1v2>;
3000a0b80a4SKrzysztof Kozlowski
3010a0b80a4SKrzysztof Kozlowski                port {
3020a0b80a4SKrzysztof Kozlowski                    ov8856_ep: endpoint {
3030a0b80a4SKrzysztof Kozlowski                        link-frequencies = /bits/ 64 <360000000 180000000>;
3040a0b80a4SKrzysztof Kozlowski                        data-lanes = <1 2 3 4>;
3050a0b80a4SKrzysztof Kozlowski                        remote-endpoint = <&csiphy0_ep>;
3060a0b80a4SKrzysztof Kozlowski                    };
3070a0b80a4SKrzysztof Kozlowski                };
3080a0b80a4SKrzysztof Kozlowski            };
3090a0b80a4SKrzysztof Kozlowski        };
3100a0b80a4SKrzysztof Kozlowski
3110a0b80a4SKrzysztof Kozlowski        cci_i2c1: i2c-bus@1 {
3120a0b80a4SKrzysztof Kozlowski            reg = <1>;
3130a0b80a4SKrzysztof Kozlowski            clock-frequency = <1000000>;
3140a0b80a4SKrzysztof Kozlowski            #address-cells = <1>;
3150a0b80a4SKrzysztof Kozlowski            #size-cells = <0>;
3160a0b80a4SKrzysztof Kozlowski
3170a0b80a4SKrzysztof Kozlowski            camera@60 {
3180a0b80a4SKrzysztof Kozlowski                compatible = "ovti,ov7251";
3190a0b80a4SKrzysztof Kozlowski                reg = <0x60>;
3200a0b80a4SKrzysztof Kozlowski
3210a0b80a4SKrzysztof Kozlowski                enable-gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>;
3220a0b80a4SKrzysztof Kozlowski                pinctrl-names = "default";
3230a0b80a4SKrzysztof Kozlowski                pinctrl-0 = <&cam3_default>;
3240a0b80a4SKrzysztof Kozlowski
3250a0b80a4SKrzysztof Kozlowski                clocks = <&clock_camcc CAM_CC_MCLK3_CLK>;
3260a0b80a4SKrzysztof Kozlowski                clock-names = "xclk";
3270a0b80a4SKrzysztof Kozlowski                clock-frequency = <24000000>;
3280a0b80a4SKrzysztof Kozlowski
3290a0b80a4SKrzysztof Kozlowski                vdddo-supply = <&vreg_lvs1a_1p8>;
3300a0b80a4SKrzysztof Kozlowski                vdda-supply = <&cam3_avdd_2v8>;
3310a0b80a4SKrzysztof Kozlowski
3320a0b80a4SKrzysztof Kozlowski                port {
3330a0b80a4SKrzysztof Kozlowski                    ov7251_ep: endpoint {
334e593a4a2SRob Herring                        data-lanes = <0>;
335274e4809SRob Herring                        link-frequencies = /bits/ 64 <240000000 319200000>;
3360a0b80a4SKrzysztof Kozlowski                        remote-endpoint = <&csiphy3_ep>;
3370a0b80a4SKrzysztof Kozlowski                    };
3380a0b80a4SKrzysztof Kozlowski                };
3390a0b80a4SKrzysztof Kozlowski            };
3400a0b80a4SKrzysztof Kozlowski        };
3410a0b80a4SKrzysztof Kozlowski    };
342