Back to home page

OSCL-LXR

 
 

    


0001 # SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/i2c/qcom,i2c-cci.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006 
0007 title: Qualcomm Camera Control Interface (CCI) I2C controller
0008 
0009 maintainers:
0010   - Loic Poulain <loic.poulain@linaro.org>
0011   - Robert Foss <robert.foss@linaro.org>
0012 
0013 properties:
0014   compatible:
0015     enum:
0016       - qcom,msm8916-cci
0017       - qcom,msm8974-cci
0018       - qcom,msm8996-cci
0019       - qcom,sdm845-cci
0020       - qcom,sm8250-cci
0021       - qcom,sm8450-cci
0022 
0023   "#address-cells":
0024     const: 1
0025 
0026   "#size-cells":
0027     const: 0
0028 
0029   clocks:
0030     minItems: 4
0031     maxItems: 6
0032 
0033   clock-names:
0034     minItems: 4
0035     maxItems: 6
0036 
0037   interrupts:
0038     maxItems: 1
0039 
0040   power-domains:
0041     maxItems: 1
0042 
0043   reg:
0044     maxItems: 1
0045 
0046 patternProperties:
0047   "^i2c-bus@[01]$":
0048     $ref: /schemas/i2c/i2c-controller.yaml#
0049     unevaluatedProperties: false
0050 
0051     properties:
0052       reg:
0053         maxItems: 1
0054 
0055       clock-frequency:
0056         default: 100000
0057 
0058 required:
0059   - compatible
0060   - clock-names
0061   - clocks
0062   - interrupts
0063   - reg
0064 
0065 allOf:
0066   - if:
0067       properties:
0068         compatible:
0069           contains:
0070             enum:
0071               - qcom,msm8996-cci
0072     then:
0073       required:
0074         - power-domains
0075 
0076   - if:
0077       properties:
0078         compatible:
0079           contains:
0080             enum:
0081               - qcom,msm8916-cci
0082     then:
0083       properties:
0084         i2c-bus@1: false
0085 
0086   - if:
0087       properties:
0088         compatible:
0089           contains:
0090             enum:
0091               - qcom,msm8916-cci
0092               - qcom,msm8996-cci
0093     then:
0094       properties:
0095         clocks:
0096           maxItems: 4
0097         clock-names:
0098           items:
0099             - const: camss_top_ahb
0100             - const: cci_ahb
0101             - const: cci
0102             - const: camss_ahb
0103 
0104   - if:
0105       properties:
0106         compatible:
0107           contains:
0108             enum:
0109               - qcom,sdm845-cci
0110     then:
0111       properties:
0112         clocks:
0113           minItems: 6
0114         clock-names:
0115           items:
0116             - const: camnoc_axi
0117             - const: soc_ahb
0118             - const: slow_ahb_src
0119             - const: cpas_ahb
0120             - const: cci
0121             - const: cci_src
0122 
0123   - if:
0124       properties:
0125         compatible:
0126           contains:
0127             enum:
0128               - qcom,sm8250-cci
0129     then:
0130       properties:
0131         clocks:
0132           minItems: 5
0133           maxItems: 5
0134         clock-names:
0135           items:
0136             - const: camnoc_axi
0137             - const: slow_ahb_src
0138             - const: cpas_ahb
0139             - const: cci
0140             - const: cci_src
0141 
0142 additionalProperties: false
0143 
0144 examples:
0145   - |
0146     #include <dt-bindings/clock/qcom,camcc-sdm845.h>
0147     #include <dt-bindings/gpio/gpio.h>
0148     #include <dt-bindings/interrupt-controller/arm-gic.h>
0149 
0150     cci@ac4a000 {
0151         reg = <0x0ac4a000 0x4000>;
0152         compatible = "qcom,sdm845-cci";
0153         #address-cells = <1>;
0154         #size-cells = <0>;
0155 
0156         interrupts = <GIC_SPI 460 IRQ_TYPE_EDGE_RISING>;
0157         power-domains = <&clock_camcc TITAN_TOP_GDSC>;
0158 
0159         clocks = <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
0160                  <&clock_camcc CAM_CC_SOC_AHB_CLK>,
0161                  <&clock_camcc CAM_CC_SLOW_AHB_CLK_SRC>,
0162                  <&clock_camcc CAM_CC_CPAS_AHB_CLK>,
0163                  <&clock_camcc CAM_CC_CCI_CLK>,
0164                  <&clock_camcc CAM_CC_CCI_CLK_SRC>;
0165         clock-names = "camnoc_axi",
0166                       "soc_ahb",
0167                       "slow_ahb_src",
0168                       "cpas_ahb",
0169                       "cci",
0170                       "cci_src";
0171 
0172         assigned-clocks = <&clock_camcc CAM_CC_CAMNOC_AXI_CLK>,
0173                           <&clock_camcc CAM_CC_CCI_CLK>;
0174         assigned-clock-rates = <80000000>,
0175                                <37500000>;
0176 
0177         pinctrl-names = "default", "sleep";
0178         pinctrl-0 = <&cci0_default &cci1_default>;
0179         pinctrl-1 = <&cci0_sleep &cci1_sleep>;
0180 
0181         i2c-bus@0 {
0182             reg = <0>;
0183             clock-frequency = <1000000>;
0184             #address-cells = <1>;
0185             #size-cells = <0>;
0186 
0187             camera@10 {
0188                 compatible = "ovti,ov8856";
0189                 reg = <0x10>;
0190 
0191                 reset-gpios = <&tlmm 9 GPIO_ACTIVE_LOW>;
0192                 pinctrl-names = "default";
0193                 pinctrl-0 = <&cam0_default>;
0194 
0195                 clocks = <&clock_camcc CAM_CC_MCLK0_CLK>;
0196                 clock-names = "xvclk";
0197                 clock-frequency = <19200000>;
0198 
0199                 dovdd-supply = <&vreg_lvs1a_1p8>;
0200                 avdd-supply = <&cam0_avdd_2v8>;
0201                 dvdd-supply = <&cam0_dvdd_1v2>;
0202 
0203                 port {
0204                     ov8856_ep: endpoint {
0205                         link-frequencies = /bits/ 64 <360000000 180000000>;
0206                         data-lanes = <1 2 3 4>;
0207                         remote-endpoint = <&csiphy0_ep>;
0208                     };
0209                 };
0210             };
0211         };
0212 
0213         cci_i2c1: i2c-bus@1 {
0214             reg = <1>;
0215             clock-frequency = <1000000>;
0216             #address-cells = <1>;
0217             #size-cells = <0>;
0218 
0219             camera@60 {
0220                 compatible = "ovti,ov7251";
0221                 reg = <0x60>;
0222 
0223                 enable-gpios = <&tlmm 21 GPIO_ACTIVE_HIGH>;
0224                 pinctrl-names = "default";
0225                 pinctrl-0 = <&cam3_default>;
0226 
0227                 clocks = <&clock_camcc CAM_CC_MCLK3_CLK>;
0228                 clock-names = "xclk";
0229                 clock-frequency = <24000000>;
0230 
0231                 vdddo-supply = <&vreg_lvs1a_1p8>;
0232                 vdda-supply = <&cam3_avdd_2v8>;
0233 
0234                 port {
0235                     ov7251_ep: endpoint {
0236                         data-lanes = <0 1>;
0237                         remote-endpoint = <&csiphy3_ep>;
0238                     };
0239                 };
0240             };
0241         };
0242     };