xref: /openbmc/linux/Documentation/devicetree/bindings/i2c/qcom,i2c-cci.yaml (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
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:
280a0b80a4SKrzysztof Kozlowski              - qcom,sdm845-cci
29f531ecf7SLuca Weiss              - qcom,sm6350-cci
300a0b80a4SKrzysztof Kozlowski              - qcom,sm8250-cci
310a0b80a4SKrzysztof Kozlowski              - qcom,sm8450-cci
32bbdbad3bSKonrad Dybcio          - const: qcom,msm8996-cci # CCI v2
330a0b80a4SKrzysztof Kozlowski
340a0b80a4SKrzysztof Kozlowski  "#address-cells":
350a0b80a4SKrzysztof Kozlowski    const: 1
360a0b80a4SKrzysztof Kozlowski
370a0b80a4SKrzysztof Kozlowski  "#size-cells":
380a0b80a4SKrzysztof Kozlowski    const: 0
390a0b80a4SKrzysztof Kozlowski
400a0b80a4SKrzysztof Kozlowski  clocks:
418673b6d9SMatti Lehtimäki    minItems: 3
420a0b80a4SKrzysztof Kozlowski    maxItems: 6
430a0b80a4SKrzysztof Kozlowski
440a0b80a4SKrzysztof Kozlowski  clock-names:
458673b6d9SMatti Lehtimäki    minItems: 3
460a0b80a4SKrzysztof Kozlowski    maxItems: 6
470a0b80a4SKrzysztof Kozlowski
480a0b80a4SKrzysztof Kozlowski  interrupts:
490a0b80a4SKrzysztof Kozlowski    maxItems: 1
500a0b80a4SKrzysztof Kozlowski
510a0b80a4SKrzysztof Kozlowski  power-domains:
520a0b80a4SKrzysztof Kozlowski    maxItems: 1
530a0b80a4SKrzysztof Kozlowski
540a0b80a4SKrzysztof Kozlowski  reg:
550a0b80a4SKrzysztof Kozlowski    maxItems: 1
560a0b80a4SKrzysztof Kozlowski
570a0b80a4SKrzysztof KozlowskipatternProperties:
580a0b80a4SKrzysztof Kozlowski  "^i2c-bus@[01]$":
590a0b80a4SKrzysztof Kozlowski    $ref: /schemas/i2c/i2c-controller.yaml#
600a0b80a4SKrzysztof Kozlowski    unevaluatedProperties: false
610a0b80a4SKrzysztof Kozlowski
620a0b80a4SKrzysztof Kozlowski    properties:
630a0b80a4SKrzysztof Kozlowski      reg:
640a0b80a4SKrzysztof Kozlowski        maxItems: 1
650a0b80a4SKrzysztof Kozlowski
660a0b80a4SKrzysztof Kozlowski      clock-frequency:
670a0b80a4SKrzysztof Kozlowski        default: 100000
680a0b80a4SKrzysztof Kozlowski
690a0b80a4SKrzysztof Kozlowskirequired:
700a0b80a4SKrzysztof Kozlowski  - compatible
710a0b80a4SKrzysztof Kozlowski  - clock-names
720a0b80a4SKrzysztof Kozlowski  - clocks
730a0b80a4SKrzysztof Kozlowski  - interrupts
740a0b80a4SKrzysztof Kozlowski  - reg
750a0b80a4SKrzysztof Kozlowski
760a0b80a4SKrzysztof KozlowskiallOf:
770a0b80a4SKrzysztof Kozlowski  - if:
780a0b80a4SKrzysztof Kozlowski      properties:
790a0b80a4SKrzysztof Kozlowski        compatible:
800a0b80a4SKrzysztof Kozlowski          contains:
810a0b80a4SKrzysztof Kozlowski            enum:
820a0b80a4SKrzysztof Kozlowski              - qcom,msm8996-cci
830a0b80a4SKrzysztof Kozlowski    then:
840a0b80a4SKrzysztof Kozlowski      required:
850a0b80a4SKrzysztof Kozlowski        - power-domains
860a0b80a4SKrzysztof Kozlowski
870a0b80a4SKrzysztof Kozlowski  - if:
880a0b80a4SKrzysztof Kozlowski      properties:
890a0b80a4SKrzysztof Kozlowski        compatible:
900a0b80a4SKrzysztof Kozlowski          contains:
910a0b80a4SKrzysztof Kozlowski            enum:
928673b6d9SMatti Lehtimäki              - qcom,msm8226-cci
930a0b80a4SKrzysztof Kozlowski              - qcom,msm8916-cci
940a0b80a4SKrzysztof Kozlowski    then:
950a0b80a4SKrzysztof Kozlowski      properties:
960a0b80a4SKrzysztof Kozlowski        i2c-bus@1: false
970a0b80a4SKrzysztof Kozlowski
980a0b80a4SKrzysztof Kozlowski  - if:
990a0b80a4SKrzysztof Kozlowski      properties:
1000a0b80a4SKrzysztof Kozlowski        compatible:
101bbdbad3bSKonrad Dybcio          oneOf:
102bbdbad3bSKonrad Dybcio            - contains:
1030a0b80a4SKrzysztof Kozlowski                enum:
1049ad16f96SMatti Lehtimäki                  - qcom,msm8974-cci
105bbdbad3bSKonrad Dybcio
106bbdbad3bSKonrad Dybcio            - const: qcom,msm8226-cci
1078673b6d9SMatti Lehtimäki    then:
1088673b6d9SMatti Lehtimäki      properties:
1098673b6d9SMatti Lehtimäki        clocks:
1108673b6d9SMatti Lehtimäki          maxItems: 3
1118673b6d9SMatti Lehtimäki        clock-names:
1128673b6d9SMatti Lehtimäki          items:
1138673b6d9SMatti Lehtimäki            - const: camss_top_ahb
1148673b6d9SMatti Lehtimäki            - const: cci_ahb
1158673b6d9SMatti Lehtimäki            - const: cci
1168673b6d9SMatti Lehtimäki
1178673b6d9SMatti Lehtimäki  - if:
1188673b6d9SMatti Lehtimäki      properties:
1198673b6d9SMatti Lehtimäki        compatible:
120bbdbad3bSKonrad Dybcio          oneOf:
121bbdbad3bSKonrad Dybcio            - contains:
1228673b6d9SMatti Lehtimäki                enum:
1230a0b80a4SKrzysztof Kozlowski                  - qcom,msm8916-cci
124bbdbad3bSKonrad Dybcio
125bbdbad3bSKonrad Dybcio            - const: qcom,msm8996-cci
1260a0b80a4SKrzysztof Kozlowski    then:
1270a0b80a4SKrzysztof Kozlowski      properties:
1280a0b80a4SKrzysztof Kozlowski        clocks:
1290a0b80a4SKrzysztof Kozlowski          maxItems: 4
1300a0b80a4SKrzysztof Kozlowski        clock-names:
1310a0b80a4SKrzysztof Kozlowski          items:
1320a0b80a4SKrzysztof Kozlowski            - const: camss_top_ahb
1330a0b80a4SKrzysztof Kozlowski            - const: cci_ahb
1340a0b80a4SKrzysztof Kozlowski            - const: cci
1350a0b80a4SKrzysztof Kozlowski            - const: camss_ahb
1360a0b80a4SKrzysztof Kozlowski
1370a0b80a4SKrzysztof Kozlowski  - if:
1380a0b80a4SKrzysztof Kozlowski      properties:
1390a0b80a4SKrzysztof Kozlowski        compatible:
1400a0b80a4SKrzysztof Kozlowski          contains:
1410a0b80a4SKrzysztof Kozlowski            enum:
1420a0b80a4SKrzysztof Kozlowski              - qcom,sdm845-cci
143f531ecf7SLuca Weiss              - qcom,sm6350-cci
1440a0b80a4SKrzysztof Kozlowski    then:
1450a0b80a4SKrzysztof Kozlowski      properties:
1460a0b80a4SKrzysztof Kozlowski        clocks:
1470a0b80a4SKrzysztof Kozlowski          minItems: 6
1480a0b80a4SKrzysztof Kozlowski        clock-names:
1490a0b80a4SKrzysztof Kozlowski          items:
1500a0b80a4SKrzysztof Kozlowski            - const: camnoc_axi
1510a0b80a4SKrzysztof Kozlowski            - const: soc_ahb
1520a0b80a4SKrzysztof Kozlowski            - const: slow_ahb_src
1530a0b80a4SKrzysztof Kozlowski            - const: cpas_ahb
1540a0b80a4SKrzysztof Kozlowski            - const: cci
1550a0b80a4SKrzysztof Kozlowski            - const: cci_src
1560a0b80a4SKrzysztof Kozlowski
1570a0b80a4SKrzysztof Kozlowski  - if:
1580a0b80a4SKrzysztof Kozlowski      properties:
1590a0b80a4SKrzysztof Kozlowski        compatible:
1600a0b80a4SKrzysztof Kozlowski          contains:
1610a0b80a4SKrzysztof Kozlowski            enum:
1620a0b80a4SKrzysztof Kozlowski              - qcom,sm8250-cci
163e46a1c55SKrzysztof Kozlowski              - qcom,sm8450-cci
1640a0b80a4SKrzysztof Kozlowski    then:
1650a0b80a4SKrzysztof Kozlowski      properties:
1660a0b80a4SKrzysztof Kozlowski        clocks:
1670a0b80a4SKrzysztof Kozlowski          minItems: 5
1680a0b80a4SKrzysztof Kozlowski          maxItems: 5
1690a0b80a4SKrzysztof Kozlowski        clock-names:
1700a0b80a4SKrzysztof Kozlowski          items:
1710a0b80a4SKrzysztof Kozlowski            - const: camnoc_axi
1720a0b80a4SKrzysztof Kozlowski            - const: slow_ahb_src
1730a0b80a4SKrzysztof Kozlowski            - const: cpas_ahb
1740a0b80a4SKrzysztof Kozlowski            - const: cci
1750a0b80a4SKrzysztof Kozlowski            - const: cci_src
1760a0b80a4SKrzysztof Kozlowski
1770a0b80a4SKrzysztof KozlowskiadditionalProperties: false
1780a0b80a4SKrzysztof Kozlowski
1790a0b80a4SKrzysztof Kozlowskiexamples:
1800a0b80a4SKrzysztof Kozlowski  - |
1810a0b80a4SKrzysztof Kozlowski    #include <dt-bindings/clock/qcom,camcc-sdm845.h>
1820a0b80a4SKrzysztof Kozlowski    #include <dt-bindings/gpio/gpio.h>
1830a0b80a4SKrzysztof Kozlowski    #include <dt-bindings/interrupt-controller/arm-gic.h>
1840a0b80a4SKrzysztof Kozlowski
1850a0b80a4SKrzysztof Kozlowski    cci@ac4a000 {
1860a0b80a4SKrzysztof Kozlowski        reg = <0x0ac4a000 0x4000>;
187bbdbad3bSKonrad Dybcio        compatible = "qcom,sdm845-cci", "qcom,msm8996-cci";
1880a0b80a4SKrzysztof Kozlowski        #address-cells = <1>;
1890a0b80a4SKrzysztof Kozlowski        #size-cells = <0>;
1900a0b80a4SKrzysztof Kozlowski
1910a0b80a4SKrzysztof Kozlowski        interrupts = <GIC_SPI 460 IRQ_TYPE_EDGE_RISING>;
1920a0b80a4SKrzysztof Kozlowski        power-domains = <&clock_camcc TITAN_TOP_GDSC>;
1930a0b80a4SKrzysztof Kozlowski
1940a0b80a4SKrzysztof Kozlowski        clocks = <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
1950a0b80a4SKrzysztof Kozlowski                 <&clock_camcc CAM_CC_SOC_AHB_CLK>,
1960a0b80a4SKrzysztof Kozlowski                 <&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
1970a0b80a4SKrzysztof Kozlowski                 <&clock_camcc CAM_CC_CPAS_AHB_CLK>,
1980a0b80a4SKrzysztof Kozlowski                 <&clock_camcc CAM_CC_CCI_CLK>,
1990a0b80a4SKrzysztof Kozlowski                 <&clock_camcc CAM_CC_CCI_CLK_SRC>;
2000a0b80a4SKrzysztof Kozlowski        clock-names = "camnoc_axi",
2010a0b80a4SKrzysztof Kozlowski                      "soc_ahb",
2020a0b80a4SKrzysztof Kozlowski                      "slow_ahb_src",
2030a0b80a4SKrzysztof Kozlowski                      "cpas_ahb",
2040a0b80a4SKrzysztof Kozlowski                      "cci",
2050a0b80a4SKrzysztof Kozlowski                      "cci_src";
2060a0b80a4SKrzysztof Kozlowski
2070a0b80a4SKrzysztof Kozlowski        assigned-clocks = <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
2080a0b80a4SKrzysztof Kozlowski                          <&clock_camcc CAM_CC_CCI_CLK>;
2090a0b80a4SKrzysztof Kozlowski        assigned-clock-rates = <80000000>,
2100a0b80a4SKrzysztof Kozlowski                               <37500000>;
2110a0b80a4SKrzysztof Kozlowski
2120a0b80a4SKrzysztof Kozlowski        pinctrl-names = "default", "sleep";
2130a0b80a4SKrzysztof Kozlowski        pinctrl-0 = <&cci0_default &cci1_default>;
2140a0b80a4SKrzysztof Kozlowski        pinctrl-1 = <&cci0_sleep &cci1_sleep>;
2150a0b80a4SKrzysztof Kozlowski
2160a0b80a4SKrzysztof Kozlowski        i2c-bus@0 {
2170a0b80a4SKrzysztof Kozlowski            reg = <0>;
2180a0b80a4SKrzysztof Kozlowski            clock-frequency = <1000000>;
2190a0b80a4SKrzysztof Kozlowski            #address-cells = <1>;
2200a0b80a4SKrzysztof Kozlowski            #size-cells = <0>;
2210a0b80a4SKrzysztof Kozlowski
2220a0b80a4SKrzysztof Kozlowski            camera@10 {
2230a0b80a4SKrzysztof Kozlowski                compatible = "ovti,ov8856";
2240a0b80a4SKrzysztof Kozlowski                reg = <0x10>;
2250a0b80a4SKrzysztof Kozlowski
2260a0b80a4SKrzysztof Kozlowski                reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>;
2270a0b80a4SKrzysztof Kozlowski                pinctrl-names = "default";
2280a0b80a4SKrzysztof Kozlowski                pinctrl-0 = <&cam0_default>;
2290a0b80a4SKrzysztof Kozlowski
2300a0b80a4SKrzysztof Kozlowski                clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
2310a0b80a4SKrzysztof Kozlowski                clock-names = "xvclk";
2320a0b80a4SKrzysztof Kozlowski                clock-frequency = <19200000>;
2330a0b80a4SKrzysztof Kozlowski
2340a0b80a4SKrzysztof Kozlowski                dovdd-supply = <&vreg_lvs1a_1p8>;
2350a0b80a4SKrzysztof Kozlowski                avdd-supply = <&cam0_avdd_2v8>;
2360a0b80a4SKrzysztof Kozlowski                dvdd-supply = <&cam0_dvdd_1v2>;
2370a0b80a4SKrzysztof Kozlowski
2380a0b80a4SKrzysztof Kozlowski                port {
2390a0b80a4SKrzysztof Kozlowski                    ov8856_ep: endpoint {
2400a0b80a4SKrzysztof Kozlowski                        link-frequencies = /bits/ 64 <360000000 180000000>;
2410a0b80a4SKrzysztof Kozlowski                        data-lanes = <1 2 3 4>;
2420a0b80a4SKrzysztof Kozlowski                        remote-endpoint = <&csiphy0_ep>;
2430a0b80a4SKrzysztof Kozlowski                    };
2440a0b80a4SKrzysztof Kozlowski                };
2450a0b80a4SKrzysztof Kozlowski            };
2460a0b80a4SKrzysztof Kozlowski        };
2470a0b80a4SKrzysztof Kozlowski
2480a0b80a4SKrzysztof Kozlowski        cci_i2c1: i2c-bus@1 {
2490a0b80a4SKrzysztof Kozlowski            reg = <1>;
2500a0b80a4SKrzysztof Kozlowski            clock-frequency = <1000000>;
2510a0b80a4SKrzysztof Kozlowski            #address-cells = <1>;
2520a0b80a4SKrzysztof Kozlowski            #size-cells = <0>;
2530a0b80a4SKrzysztof Kozlowski
2540a0b80a4SKrzysztof Kozlowski            camera@60 {
2550a0b80a4SKrzysztof Kozlowski                compatible = "ovti,ov7251";
2560a0b80a4SKrzysztof Kozlowski                reg = <0x60>;
2570a0b80a4SKrzysztof Kozlowski
2580a0b80a4SKrzysztof Kozlowski                enable-gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>;
2590a0b80a4SKrzysztof Kozlowski                pinctrl-names = "default";
2600a0b80a4SKrzysztof Kozlowski                pinctrl-0 = <&cam3_default>;
2610a0b80a4SKrzysztof Kozlowski
2620a0b80a4SKrzysztof Kozlowski                clocks = <&clock_camcc CAM_CC_MCLK3_CLK>;
2630a0b80a4SKrzysztof Kozlowski                clock-names = "xclk";
2640a0b80a4SKrzysztof Kozlowski                clock-frequency = <24000000>;
2650a0b80a4SKrzysztof Kozlowski
2660a0b80a4SKrzysztof Kozlowski                vdddo-supply = <&vreg_lvs1a_1p8>;
2670a0b80a4SKrzysztof Kozlowski                vdda-supply = <&cam3_avdd_2v8>;
2680a0b80a4SKrzysztof Kozlowski
2690a0b80a4SKrzysztof Kozlowski                port {
2700a0b80a4SKrzysztof Kozlowski                    ov7251_ep: endpoint {
2710a0b80a4SKrzysztof Kozlowski                        data-lanes = <0 1>;
272*274e4809SRob Herring                        link-frequencies = /bits/ 64 <240000000 319200000>;
2730a0b80a4SKrzysztof Kozlowski                        remote-endpoint = <&csiphy3_ep>;
2740a0b80a4SKrzysztof Kozlowski                    };
2750a0b80a4SKrzysztof Kozlowski                };
2760a0b80a4SKrzysztof Kozlowski            };
2770a0b80a4SKrzysztof Kozlowski        };
2780a0b80a4SKrzysztof Kozlowski    };
279