1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: "http://devicetree.org/schemas/i2c/qcom,i2c-geni-qcom.yaml#"
5$schema: "http://devicetree.org/meta-schemas/core.yaml#"
6
7title: Qualcomm Geni based QUP I2C Controller
8
9maintainers:
10  - Andy Gross <agross@kernel.org>
11  - Bjorn Andersson <bjorn.andersson@linaro.org>
12
13properties:
14  compatible:
15    enum:
16      - qcom,geni-i2c
17      - qcom,geni-i2c-master-hub
18
19  clocks:
20    minItems: 1
21    maxItems: 2
22
23  clock-names:
24    minItems: 1
25    maxItems: 2
26
27  clock-frequency:
28    default: 100000
29
30  dmas:
31    maxItems: 2
32
33  dma-names:
34    items:
35      - const: tx
36      - const: rx
37
38  interconnects:
39    minItems: 2
40    maxItems: 3
41
42  interconnect-names:
43    minItems: 2
44    maxItems: 3
45
46  interrupts:
47    maxItems: 1
48
49  pinctrl-0: true
50  pinctrl-1: true
51
52  pinctrl-names:
53    minItems: 1
54    items:
55      - const: default
56      - const: sleep
57
58  power-domains:
59    maxItems: 1
60
61  reg:
62    maxItems: 1
63
64  required-opps:
65    maxItems: 1
66
67required:
68  - compatible
69  - interrupts
70  - clocks
71  - clock-names
72  - reg
73
74allOf:
75  - $ref: /schemas/i2c/i2c-controller.yaml#
76  - if:
77      properties:
78        compatible:
79          contains:
80            const: qcom,geni-i2c-master-hub
81    then:
82      properties:
83        clocks:
84          minItems: 2
85
86        clock-names:
87          items:
88            - const: se
89            - const: core
90
91        dmas: false
92        dma-names: false
93
94        interconnects:
95          maxItems: 2
96
97        interconnect-names:
98          items:
99            - const: qup-core
100            - const: qup-config
101    else:
102      properties:
103        clocks:
104          maxItems: 1
105
106        clock-names:
107          const: se
108
109        interconnects:
110          minItems: 3
111
112        interconnect-names:
113          items:
114            - const: qup-core
115            - const: qup-config
116            - const: qup-memory
117
118unevaluatedProperties: false
119
120examples:
121  - |
122    #include <dt-bindings/interrupt-controller/arm-gic.h>
123    #include <dt-bindings/clock/qcom,gcc-sc7180.h>
124    #include <dt-bindings/interconnect/qcom,sc7180.h>
125    #include <dt-bindings/power/qcom-rpmpd.h>
126
127    i2c@88000 {
128        compatible = "qcom,geni-i2c";
129        reg = <0x00880000 0x4000>;
130        clock-names = "se";
131        clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
132        pinctrl-names = "default";
133        pinctrl-0 = <&qup_i2c0_default>;
134        interrupts = <GIC_SPI 601 IRQ_TYPE_LEVEL_HIGH>;
135        #address-cells = <1>;
136        #size-cells = <0>;
137        interconnects = <&qup_virt MASTER_QUP_CORE_0 0 &qup_virt SLAVE_QUP_CORE_0 0>,
138                        <&gem_noc MASTER_APPSS_PROC 0 &config_noc SLAVE_QUP_0 0>,
139                        <&aggre1_noc MASTER_QUP_0 0 &mc_virt SLAVE_EBI1 0>;
140        interconnect-names = "qup-core", "qup-config", "qup-memory";
141        power-domains = <&rpmhpd SC7180_CX>;
142        required-opps = <&rpmhpd_opp_low_svs>;
143    };
144...
145