xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/soc/qcom/qcom,geni-se.yaml (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*4882a593Smuzhiyun%YAML 1.2
3*4882a593Smuzhiyun---
4*4882a593Smuzhiyun$id: "http://devicetree.org/schemas/soc/qcom/qcom,geni-se.yaml#"
5*4882a593Smuzhiyun$schema: "http://devicetree.org/meta-schemas/core.yaml#"
6*4882a593Smuzhiyun
7*4882a593Smuzhiyuntitle: GENI Serial Engine QUP Wrapper Controller
8*4882a593Smuzhiyun
9*4882a593Smuzhiyunmaintainers:
10*4882a593Smuzhiyun  - Mukesh Savaliya <msavaliy@codeaurora.org>
11*4882a593Smuzhiyun  - Akash Asthana <akashast@codeaurora.org>
12*4882a593Smuzhiyun
13*4882a593Smuzhiyundescription: |
14*4882a593Smuzhiyun Generic Interface (GENI) based Qualcomm Universal Peripheral (QUP) wrapper
15*4882a593Smuzhiyun is a programmable module for supporting a wide range of serial interfaces
16*4882a593Smuzhiyun like UART, SPI, I2C, I3C, etc. A single QUP module can provide upto 8 Serial
17*4882a593Smuzhiyun Interfaces, using its internal Serial Engines. The GENI Serial Engine QUP
18*4882a593Smuzhiyun Wrapper controller is modeled as a node with zero or more child nodes each
19*4882a593Smuzhiyun representing a serial engine.
20*4882a593Smuzhiyun
21*4882a593Smuzhiyunproperties:
22*4882a593Smuzhiyun  compatible:
23*4882a593Smuzhiyun    enum:
24*4882a593Smuzhiyun      - qcom,geni-se-qup
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun  reg:
27*4882a593Smuzhiyun    description: QUP wrapper common register address and length.
28*4882a593Smuzhiyun    maxItems: 1
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun  clock-names:
31*4882a593Smuzhiyun    items:
32*4882a593Smuzhiyun      - const: m-ahb
33*4882a593Smuzhiyun      - const: s-ahb
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun  clocks:
36*4882a593Smuzhiyun    items:
37*4882a593Smuzhiyun      - description: Master AHB Clock
38*4882a593Smuzhiyun      - description: Slave AHB Clock
39*4882a593Smuzhiyun
40*4882a593Smuzhiyun  "#address-cells":
41*4882a593Smuzhiyun    const: 2
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun  "#size-cells":
44*4882a593Smuzhiyun    const: 2
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun  ranges: true
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun  interconnects:
49*4882a593Smuzhiyun    maxItems: 1
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun  interconnect-names:
52*4882a593Smuzhiyun    const: qup-core
53*4882a593Smuzhiyun
54*4882a593Smuzhiyunrequired:
55*4882a593Smuzhiyun  - compatible
56*4882a593Smuzhiyun  - reg
57*4882a593Smuzhiyun  - clock-names
58*4882a593Smuzhiyun  - clocks
59*4882a593Smuzhiyun  - "#address-cells"
60*4882a593Smuzhiyun  - "#size-cells"
61*4882a593Smuzhiyun  - ranges
62*4882a593Smuzhiyun
63*4882a593SmuzhiyunpatternProperties:
64*4882a593Smuzhiyun  "^.*@[0-9a-f]+$":
65*4882a593Smuzhiyun    type: object
66*4882a593Smuzhiyun    description: Common properties for GENI Serial Engine based I2C, SPI and
67*4882a593Smuzhiyun                 UART controller.
68*4882a593Smuzhiyun
69*4882a593Smuzhiyun    properties:
70*4882a593Smuzhiyun      reg:
71*4882a593Smuzhiyun        description: GENI Serial Engine register address and length.
72*4882a593Smuzhiyun        maxItems: 1
73*4882a593Smuzhiyun
74*4882a593Smuzhiyun      clock-names:
75*4882a593Smuzhiyun        const: se
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun      clocks:
78*4882a593Smuzhiyun        description: Serial engine core clock needed by the device.
79*4882a593Smuzhiyun        maxItems: 1
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun      interconnects:
82*4882a593Smuzhiyun        minItems: 2
83*4882a593Smuzhiyun        maxItems: 3
84*4882a593Smuzhiyun
85*4882a593Smuzhiyun      interconnect-names:
86*4882a593Smuzhiyun        minItems: 2
87*4882a593Smuzhiyun        items:
88*4882a593Smuzhiyun          - const: qup-core
89*4882a593Smuzhiyun          - const: qup-config
90*4882a593Smuzhiyun          - const: qup-memory
91*4882a593Smuzhiyun
92*4882a593Smuzhiyun    required:
93*4882a593Smuzhiyun      - reg
94*4882a593Smuzhiyun      - clock-names
95*4882a593Smuzhiyun      - clocks
96*4882a593Smuzhiyun
97*4882a593Smuzhiyun  "spi@[0-9a-f]+$":
98*4882a593Smuzhiyun    type: object
99*4882a593Smuzhiyun    description: GENI serial engine based SPI controller. SPI in master mode
100*4882a593Smuzhiyun                 supports up to 50MHz, up to four chip selects, programmable
101*4882a593Smuzhiyun                 data path from 4 bits to 32 bits and numerous protocol
102*4882a593Smuzhiyun                 variants.
103*4882a593Smuzhiyun    $ref: /spi/spi-controller.yaml#
104*4882a593Smuzhiyun
105*4882a593Smuzhiyun    properties:
106*4882a593Smuzhiyun      compatible:
107*4882a593Smuzhiyun        enum:
108*4882a593Smuzhiyun          - qcom,geni-spi
109*4882a593Smuzhiyun
110*4882a593Smuzhiyun      interrupts:
111*4882a593Smuzhiyun        maxItems: 1
112*4882a593Smuzhiyun
113*4882a593Smuzhiyun      "#address-cells":
114*4882a593Smuzhiyun        const: 1
115*4882a593Smuzhiyun
116*4882a593Smuzhiyun      "#size-cells":
117*4882a593Smuzhiyun        const: 0
118*4882a593Smuzhiyun
119*4882a593Smuzhiyun    required:
120*4882a593Smuzhiyun      - compatible
121*4882a593Smuzhiyun      - interrupts
122*4882a593Smuzhiyun      - "#address-cells"
123*4882a593Smuzhiyun      - "#size-cells"
124*4882a593Smuzhiyun
125*4882a593Smuzhiyun  "i2c@[0-9a-f]+$":
126*4882a593Smuzhiyun    type: object
127*4882a593Smuzhiyun    description: GENI serial engine based I2C controller.
128*4882a593Smuzhiyun    $ref: /schemas/i2c/i2c-controller.yaml#
129*4882a593Smuzhiyun
130*4882a593Smuzhiyun    properties:
131*4882a593Smuzhiyun      compatible:
132*4882a593Smuzhiyun        enum:
133*4882a593Smuzhiyun          - qcom,geni-i2c
134*4882a593Smuzhiyun
135*4882a593Smuzhiyun      interrupts:
136*4882a593Smuzhiyun        maxItems: 1
137*4882a593Smuzhiyun
138*4882a593Smuzhiyun      "#address-cells":
139*4882a593Smuzhiyun        const: 1
140*4882a593Smuzhiyun
141*4882a593Smuzhiyun      "#size-cells":
142*4882a593Smuzhiyun        const: 0
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun      clock-frequency:
145*4882a593Smuzhiyun        description: Desired I2C bus clock frequency in Hz.
146*4882a593Smuzhiyun        default: 100000
147*4882a593Smuzhiyun
148*4882a593Smuzhiyun    required:
149*4882a593Smuzhiyun      - compatible
150*4882a593Smuzhiyun      - interrupts
151*4882a593Smuzhiyun      - "#address-cells"
152*4882a593Smuzhiyun      - "#size-cells"
153*4882a593Smuzhiyun
154*4882a593Smuzhiyun  "serial@[0-9a-f]+$":
155*4882a593Smuzhiyun    type: object
156*4882a593Smuzhiyun    description: GENI Serial Engine based UART Controller.
157*4882a593Smuzhiyun    $ref: /schemas/serial.yaml#
158*4882a593Smuzhiyun
159*4882a593Smuzhiyun    properties:
160*4882a593Smuzhiyun      compatible:
161*4882a593Smuzhiyun        enum:
162*4882a593Smuzhiyun          - qcom,geni-uart
163*4882a593Smuzhiyun          - qcom,geni-debug-uart
164*4882a593Smuzhiyun
165*4882a593Smuzhiyun      interrupts:
166*4882a593Smuzhiyun        minItems: 1
167*4882a593Smuzhiyun        maxItems: 2
168*4882a593Smuzhiyun        items:
169*4882a593Smuzhiyun          - description: UART core irq
170*4882a593Smuzhiyun          - description: Wakeup irq (RX GPIO)
171*4882a593Smuzhiyun
172*4882a593Smuzhiyun    required:
173*4882a593Smuzhiyun      - compatible
174*4882a593Smuzhiyun      - interrupts
175*4882a593Smuzhiyun
176*4882a593SmuzhiyunadditionalProperties: false
177*4882a593Smuzhiyun
178*4882a593Smuzhiyunexamples:
179*4882a593Smuzhiyun  - |
180*4882a593Smuzhiyun    #include <dt-bindings/clock/qcom,gcc-sdm845.h>
181*4882a593Smuzhiyun    #include <dt-bindings/interrupt-controller/arm-gic.h>
182*4882a593Smuzhiyun
183*4882a593Smuzhiyun    soc {
184*4882a593Smuzhiyun        #address-cells = <2>;
185*4882a593Smuzhiyun        #size-cells = <2>;
186*4882a593Smuzhiyun
187*4882a593Smuzhiyun        geniqup@8c0000 {
188*4882a593Smuzhiyun            compatible = "qcom,geni-se-qup";
189*4882a593Smuzhiyun            reg = <0 0x008c0000 0 0x6000>;
190*4882a593Smuzhiyun            clock-names = "m-ahb", "s-ahb";
191*4882a593Smuzhiyun            clocks = <&gcc GCC_QUPV3_WRAP_0_M_AHB_CLK>,
192*4882a593Smuzhiyun                <&gcc GCC_QUPV3_WRAP_0_S_AHB_CLK>;
193*4882a593Smuzhiyun            #address-cells = <2>;
194*4882a593Smuzhiyun            #size-cells = <2>;
195*4882a593Smuzhiyun            ranges;
196*4882a593Smuzhiyun
197*4882a593Smuzhiyun            i2c0: i2c@a94000 {
198*4882a593Smuzhiyun                compatible = "qcom,geni-i2c";
199*4882a593Smuzhiyun                reg = <0 0xa94000 0 0x4000>;
200*4882a593Smuzhiyun                interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
201*4882a593Smuzhiyun                clock-names = "se";
202*4882a593Smuzhiyun                clocks = <&gcc GCC_QUPV3_WRAP0_S5_CLK>;
203*4882a593Smuzhiyun                pinctrl-names = "default", "sleep";
204*4882a593Smuzhiyun                pinctrl-0 = <&qup_1_i2c_5_active>;
205*4882a593Smuzhiyun                pinctrl-1 = <&qup_1_i2c_5_sleep>;
206*4882a593Smuzhiyun                #address-cells = <1>;
207*4882a593Smuzhiyun                #size-cells = <0>;
208*4882a593Smuzhiyun            };
209*4882a593Smuzhiyun
210*4882a593Smuzhiyun            uart0: serial@a88000 {
211*4882a593Smuzhiyun                compatible = "qcom,geni-uart";
212*4882a593Smuzhiyun                reg = <0 0xa88000 0 0x7000>;
213*4882a593Smuzhiyun                interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
214*4882a593Smuzhiyun                clock-names = "se";
215*4882a593Smuzhiyun                clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
216*4882a593Smuzhiyun                pinctrl-names = "default", "sleep";
217*4882a593Smuzhiyun                pinctrl-0 = <&qup_1_uart_3_active>;
218*4882a593Smuzhiyun                pinctrl-1 = <&qup_1_uart_3_sleep>;
219*4882a593Smuzhiyun            };
220*4882a593Smuzhiyun        };
221*4882a593Smuzhiyun    };
222*4882a593Smuzhiyun
223*4882a593Smuzhiyun...
224