18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: "http://devicetree.org/schemas/soc/qcom/qcom,geni-se.yaml#"
58c2ecf20Sopenharmony_ci$schema: "http://devicetree.org/meta-schemas/core.yaml#"
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: GENI Serial Engine QUP Wrapper Controller
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Mukesh Savaliya <msavaliy@codeaurora.org>
118c2ecf20Sopenharmony_ci  - Akash Asthana <akashast@codeaurora.org>
128c2ecf20Sopenharmony_ci
138c2ecf20Sopenharmony_cidescription: |
148c2ecf20Sopenharmony_ci Generic Interface (GENI) based Qualcomm Universal Peripheral (QUP) wrapper
158c2ecf20Sopenharmony_ci is a programmable module for supporting a wide range of serial interfaces
168c2ecf20Sopenharmony_ci like UART, SPI, I2C, I3C, etc. A single QUP module can provide upto 8 Serial
178c2ecf20Sopenharmony_ci Interfaces, using its internal Serial Engines. The GENI Serial Engine QUP
188c2ecf20Sopenharmony_ci Wrapper controller is modeled as a node with zero or more child nodes each
198c2ecf20Sopenharmony_ci representing a serial engine.
208c2ecf20Sopenharmony_ci
218c2ecf20Sopenharmony_ciproperties:
228c2ecf20Sopenharmony_ci  compatible:
238c2ecf20Sopenharmony_ci    enum:
248c2ecf20Sopenharmony_ci      - qcom,geni-se-qup
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci  reg:
278c2ecf20Sopenharmony_ci    description: QUP wrapper common register address and length.
288c2ecf20Sopenharmony_ci    maxItems: 1
298c2ecf20Sopenharmony_ci
308c2ecf20Sopenharmony_ci  clock-names:
318c2ecf20Sopenharmony_ci    items:
328c2ecf20Sopenharmony_ci      - const: m-ahb
338c2ecf20Sopenharmony_ci      - const: s-ahb
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci  clocks:
368c2ecf20Sopenharmony_ci    items:
378c2ecf20Sopenharmony_ci      - description: Master AHB Clock
388c2ecf20Sopenharmony_ci      - description: Slave AHB Clock
398c2ecf20Sopenharmony_ci
408c2ecf20Sopenharmony_ci  "#address-cells":
418c2ecf20Sopenharmony_ci    const: 2
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ci  "#size-cells":
448c2ecf20Sopenharmony_ci    const: 2
458c2ecf20Sopenharmony_ci
468c2ecf20Sopenharmony_ci  ranges: true
478c2ecf20Sopenharmony_ci
488c2ecf20Sopenharmony_ci  interconnects:
498c2ecf20Sopenharmony_ci    maxItems: 1
508c2ecf20Sopenharmony_ci
518c2ecf20Sopenharmony_ci  interconnect-names:
528c2ecf20Sopenharmony_ci    const: qup-core
538c2ecf20Sopenharmony_ci
548c2ecf20Sopenharmony_cirequired:
558c2ecf20Sopenharmony_ci  - compatible
568c2ecf20Sopenharmony_ci  - reg
578c2ecf20Sopenharmony_ci  - clock-names
588c2ecf20Sopenharmony_ci  - clocks
598c2ecf20Sopenharmony_ci  - "#address-cells"
608c2ecf20Sopenharmony_ci  - "#size-cells"
618c2ecf20Sopenharmony_ci  - ranges
628c2ecf20Sopenharmony_ci
638c2ecf20Sopenharmony_cipatternProperties:
648c2ecf20Sopenharmony_ci  "^.*@[0-9a-f]+$":
658c2ecf20Sopenharmony_ci    type: object
668c2ecf20Sopenharmony_ci    description: Common properties for GENI Serial Engine based I2C, SPI and
678c2ecf20Sopenharmony_ci                 UART controller.
688c2ecf20Sopenharmony_ci
698c2ecf20Sopenharmony_ci    properties:
708c2ecf20Sopenharmony_ci      reg:
718c2ecf20Sopenharmony_ci        description: GENI Serial Engine register address and length.
728c2ecf20Sopenharmony_ci        maxItems: 1
738c2ecf20Sopenharmony_ci
748c2ecf20Sopenharmony_ci      clock-names:
758c2ecf20Sopenharmony_ci        const: se
768c2ecf20Sopenharmony_ci
778c2ecf20Sopenharmony_ci      clocks:
788c2ecf20Sopenharmony_ci        description: Serial engine core clock needed by the device.
798c2ecf20Sopenharmony_ci        maxItems: 1
808c2ecf20Sopenharmony_ci
818c2ecf20Sopenharmony_ci      interconnects:
828c2ecf20Sopenharmony_ci        minItems: 2
838c2ecf20Sopenharmony_ci        maxItems: 3
848c2ecf20Sopenharmony_ci
858c2ecf20Sopenharmony_ci      interconnect-names:
868c2ecf20Sopenharmony_ci        minItems: 2
878c2ecf20Sopenharmony_ci        items:
888c2ecf20Sopenharmony_ci          - const: qup-core
898c2ecf20Sopenharmony_ci          - const: qup-config
908c2ecf20Sopenharmony_ci          - const: qup-memory
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_ci    required:
938c2ecf20Sopenharmony_ci      - reg
948c2ecf20Sopenharmony_ci      - clock-names
958c2ecf20Sopenharmony_ci      - clocks
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ci  "spi@[0-9a-f]+$":
988c2ecf20Sopenharmony_ci    type: object
998c2ecf20Sopenharmony_ci    description: GENI serial engine based SPI controller. SPI in master mode
1008c2ecf20Sopenharmony_ci                 supports up to 50MHz, up to four chip selects, programmable
1018c2ecf20Sopenharmony_ci                 data path from 4 bits to 32 bits and numerous protocol
1028c2ecf20Sopenharmony_ci                 variants.
1038c2ecf20Sopenharmony_ci    $ref: /spi/spi-controller.yaml#
1048c2ecf20Sopenharmony_ci
1058c2ecf20Sopenharmony_ci    properties:
1068c2ecf20Sopenharmony_ci      compatible:
1078c2ecf20Sopenharmony_ci        enum:
1088c2ecf20Sopenharmony_ci          - qcom,geni-spi
1098c2ecf20Sopenharmony_ci
1108c2ecf20Sopenharmony_ci      interrupts:
1118c2ecf20Sopenharmony_ci        maxItems: 1
1128c2ecf20Sopenharmony_ci
1138c2ecf20Sopenharmony_ci      "#address-cells":
1148c2ecf20Sopenharmony_ci        const: 1
1158c2ecf20Sopenharmony_ci
1168c2ecf20Sopenharmony_ci      "#size-cells":
1178c2ecf20Sopenharmony_ci        const: 0
1188c2ecf20Sopenharmony_ci
1198c2ecf20Sopenharmony_ci    required:
1208c2ecf20Sopenharmony_ci      - compatible
1218c2ecf20Sopenharmony_ci      - interrupts
1228c2ecf20Sopenharmony_ci      - "#address-cells"
1238c2ecf20Sopenharmony_ci      - "#size-cells"
1248c2ecf20Sopenharmony_ci
1258c2ecf20Sopenharmony_ci  "i2c@[0-9a-f]+$":
1268c2ecf20Sopenharmony_ci    type: object
1278c2ecf20Sopenharmony_ci    description: GENI serial engine based I2C controller.
1288c2ecf20Sopenharmony_ci    $ref: /schemas/i2c/i2c-controller.yaml#
1298c2ecf20Sopenharmony_ci
1308c2ecf20Sopenharmony_ci    properties:
1318c2ecf20Sopenharmony_ci      compatible:
1328c2ecf20Sopenharmony_ci        enum:
1338c2ecf20Sopenharmony_ci          - qcom,geni-i2c
1348c2ecf20Sopenharmony_ci
1358c2ecf20Sopenharmony_ci      interrupts:
1368c2ecf20Sopenharmony_ci        maxItems: 1
1378c2ecf20Sopenharmony_ci
1388c2ecf20Sopenharmony_ci      "#address-cells":
1398c2ecf20Sopenharmony_ci        const: 1
1408c2ecf20Sopenharmony_ci
1418c2ecf20Sopenharmony_ci      "#size-cells":
1428c2ecf20Sopenharmony_ci        const: 0
1438c2ecf20Sopenharmony_ci
1448c2ecf20Sopenharmony_ci      clock-frequency:
1458c2ecf20Sopenharmony_ci        description: Desired I2C bus clock frequency in Hz.
1468c2ecf20Sopenharmony_ci        default: 100000
1478c2ecf20Sopenharmony_ci
1488c2ecf20Sopenharmony_ci    required:
1498c2ecf20Sopenharmony_ci      - compatible
1508c2ecf20Sopenharmony_ci      - interrupts
1518c2ecf20Sopenharmony_ci      - "#address-cells"
1528c2ecf20Sopenharmony_ci      - "#size-cells"
1538c2ecf20Sopenharmony_ci
1548c2ecf20Sopenharmony_ci  "serial@[0-9a-f]+$":
1558c2ecf20Sopenharmony_ci    type: object
1568c2ecf20Sopenharmony_ci    description: GENI Serial Engine based UART Controller.
1578c2ecf20Sopenharmony_ci    $ref: /schemas/serial.yaml#
1588c2ecf20Sopenharmony_ci
1598c2ecf20Sopenharmony_ci    properties:
1608c2ecf20Sopenharmony_ci      compatible:
1618c2ecf20Sopenharmony_ci        enum:
1628c2ecf20Sopenharmony_ci          - qcom,geni-uart
1638c2ecf20Sopenharmony_ci          - qcom,geni-debug-uart
1648c2ecf20Sopenharmony_ci
1658c2ecf20Sopenharmony_ci      interrupts:
1668c2ecf20Sopenharmony_ci        minItems: 1
1678c2ecf20Sopenharmony_ci        maxItems: 2
1688c2ecf20Sopenharmony_ci        items:
1698c2ecf20Sopenharmony_ci          - description: UART core irq
1708c2ecf20Sopenharmony_ci          - description: Wakeup irq (RX GPIO)
1718c2ecf20Sopenharmony_ci
1728c2ecf20Sopenharmony_ci    required:
1738c2ecf20Sopenharmony_ci      - compatible
1748c2ecf20Sopenharmony_ci      - interrupts
1758c2ecf20Sopenharmony_ci
1768c2ecf20Sopenharmony_ciadditionalProperties: false
1778c2ecf20Sopenharmony_ci
1788c2ecf20Sopenharmony_ciexamples:
1798c2ecf20Sopenharmony_ci  - |
1808c2ecf20Sopenharmony_ci    #include <dt-bindings/clock/qcom,gcc-sdm845.h>
1818c2ecf20Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
1828c2ecf20Sopenharmony_ci
1838c2ecf20Sopenharmony_ci    soc {
1848c2ecf20Sopenharmony_ci        #address-cells = <2>;
1858c2ecf20Sopenharmony_ci        #size-cells = <2>;
1868c2ecf20Sopenharmony_ci
1878c2ecf20Sopenharmony_ci        geniqup@8c0000 {
1888c2ecf20Sopenharmony_ci            compatible = "qcom,geni-se-qup";
1898c2ecf20Sopenharmony_ci            reg = <0 0x008c0000 0 0x6000>;
1908c2ecf20Sopenharmony_ci            clock-names = "m-ahb", "s-ahb";
1918c2ecf20Sopenharmony_ci            clocks = <&gcc GCC_QUPV3_WRAP_0_M_AHB_CLK>,
1928c2ecf20Sopenharmony_ci                <&gcc GCC_QUPV3_WRAP_0_S_AHB_CLK>;
1938c2ecf20Sopenharmony_ci            #address-cells = <2>;
1948c2ecf20Sopenharmony_ci            #size-cells = <2>;
1958c2ecf20Sopenharmony_ci            ranges;
1968c2ecf20Sopenharmony_ci
1978c2ecf20Sopenharmony_ci            i2c0: i2c@a94000 {
1988c2ecf20Sopenharmony_ci                compatible = "qcom,geni-i2c";
1998c2ecf20Sopenharmony_ci                reg = <0 0xa94000 0 0x4000>;
2008c2ecf20Sopenharmony_ci                interrupts = <GIC_SPI 358 IRQ_TYPE_LEVEL_HIGH>;
2018c2ecf20Sopenharmony_ci                clock-names = "se";
2028c2ecf20Sopenharmony_ci                clocks = <&gcc GCC_QUPV3_WRAP0_S5_CLK>;
2038c2ecf20Sopenharmony_ci                pinctrl-names = "default", "sleep";
2048c2ecf20Sopenharmony_ci                pinctrl-0 = <&qup_1_i2c_5_active>;
2058c2ecf20Sopenharmony_ci                pinctrl-1 = <&qup_1_i2c_5_sleep>;
2068c2ecf20Sopenharmony_ci                #address-cells = <1>;
2078c2ecf20Sopenharmony_ci                #size-cells = <0>;
2088c2ecf20Sopenharmony_ci            };
2098c2ecf20Sopenharmony_ci
2108c2ecf20Sopenharmony_ci            uart0: serial@a88000 {
2118c2ecf20Sopenharmony_ci                compatible = "qcom,geni-uart";
2128c2ecf20Sopenharmony_ci                reg = <0 0xa88000 0 0x7000>;
2138c2ecf20Sopenharmony_ci                interrupts = <GIC_SPI 355 IRQ_TYPE_LEVEL_HIGH>;
2148c2ecf20Sopenharmony_ci                clock-names = "se";
2158c2ecf20Sopenharmony_ci                clocks = <&gcc GCC_QUPV3_WRAP0_S0_CLK>;
2168c2ecf20Sopenharmony_ci                pinctrl-names = "default", "sleep";
2178c2ecf20Sopenharmony_ci                pinctrl-0 = <&qup_1_uart_3_active>;
2188c2ecf20Sopenharmony_ci                pinctrl-1 = <&qup_1_uart_3_sleep>;
2198c2ecf20Sopenharmony_ci            };
2208c2ecf20Sopenharmony_ci        };
2218c2ecf20Sopenharmony_ci    };
2228c2ecf20Sopenharmony_ci
2238c2ecf20Sopenharmony_ci...
224