162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/soc/qcom/qcom,gsbi.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Qualcomm General Serial Bus Interface (GSBI)
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Andy Gross <agross@kernel.org>
1162306a36Sopenharmony_ci  - Bjorn Andersson <bjorn.andersson@linaro.org>
1262306a36Sopenharmony_ci  - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_cidescription:
1562306a36Sopenharmony_ci  The GSBI controller is modeled as a node with zero or more child nodes, each
1662306a36Sopenharmony_ci  representing a serial sub-node device that is mux'd as part of the GSBI
1762306a36Sopenharmony_ci  configuration settings.  The mode setting will govern the input/output mode
1862306a36Sopenharmony_ci  of the 4 GSBI IOs.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci  A GSBI controller node can contain 0 or more child nodes representing serial
2162306a36Sopenharmony_ci  devices.  These serial devices can be a QCOM UART, I2C controller, spi
2262306a36Sopenharmony_ci  controller, or some combination of aforementioned devices.
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciproperties:
2562306a36Sopenharmony_ci  compatible:
2662306a36Sopenharmony_ci    const: qcom,gsbi-v1.0.0
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci  '#address-cells':
2962306a36Sopenharmony_ci    const: 1
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci  cell-index:
3262306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
3362306a36Sopenharmony_ci    description:
3462306a36Sopenharmony_ci      The GSBI index.
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci  clocks:
3762306a36Sopenharmony_ci    maxItems: 1
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci  clock-names:
4062306a36Sopenharmony_ci    const: iface
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  qcom,crci:
4362306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
4462306a36Sopenharmony_ci    description:
4562306a36Sopenharmony_ci      CRCI MUX value for QUP CRCI ports.  Please reference
4662306a36Sopenharmony_ci      include/dt-bindings/soc/qcom,gsbi.h for valid CRCI mux values.
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci  qcom,mode:
4962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
5062306a36Sopenharmony_ci    description:
5162306a36Sopenharmony_ci      MUX value for configuration of the serial interface.  Please reference
5262306a36Sopenharmony_ci      include/dt-bindings/soc/qcom,gsbi.h for valid mux values.
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci  '#size-cells':
5562306a36Sopenharmony_ci    const: 1
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci  syscon-tcsr:
5862306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/phandle
5962306a36Sopenharmony_ci    description:
6062306a36Sopenharmony_ci      Phandle of TCSR syscon node.Required if child uses dma.
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci  ranges: true
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ci  reg:
6562306a36Sopenharmony_ci    maxItems: 1
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_cipatternProperties:
6862306a36Sopenharmony_ci  "spi@[0-9a-f]+$":
6962306a36Sopenharmony_ci    type: object
7062306a36Sopenharmony_ci    $ref: /schemas/spi/qcom,spi-qup.yaml#
7162306a36Sopenharmony_ci
7262306a36Sopenharmony_ci  "i2c@[0-9a-f]+$":
7362306a36Sopenharmony_ci    type: object
7462306a36Sopenharmony_ci    $ref: /schemas/i2c/qcom,i2c-qup.yaml#
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_ci  "serial@[0-9a-f]+$":
7762306a36Sopenharmony_ci    type: object
7862306a36Sopenharmony_ci    $ref: /schemas/serial/qcom,msm-uartdm.yaml#
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_cirequired:
8162306a36Sopenharmony_ci  - compatible
8262306a36Sopenharmony_ci  - cell-index
8362306a36Sopenharmony_ci  - clocks
8462306a36Sopenharmony_ci  - clock-names
8562306a36Sopenharmony_ci  - qcom,mode
8662306a36Sopenharmony_ci  - reg
8762306a36Sopenharmony_ci
8862306a36Sopenharmony_ciadditionalProperties: false
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ciexamples:
9162306a36Sopenharmony_ci  - |
9262306a36Sopenharmony_ci    #include <dt-bindings/clock/qcom,gcc-msm8960.h>
9362306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
9462306a36Sopenharmony_ci    #include <dt-bindings/soc/qcom,gsbi.h>
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci    gsbi@12440000 {
9762306a36Sopenharmony_ci        compatible = "qcom,gsbi-v1.0.0";
9862306a36Sopenharmony_ci        reg = <0x12440000 0x100>;
9962306a36Sopenharmony_ci        cell-index = <1>;
10062306a36Sopenharmony_ci        clocks = <&gcc GSBI1_H_CLK>;
10162306a36Sopenharmony_ci        clock-names = "iface";
10262306a36Sopenharmony_ci        #address-cells = <1>;
10362306a36Sopenharmony_ci        #size-cells = <1>;
10462306a36Sopenharmony_ci        ranges;
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci        syscon-tcsr = <&tcsr>;
10762306a36Sopenharmony_ci        qcom,mode = <GSBI_PROT_I2C_UART>;
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci        serial@12450000 {
11062306a36Sopenharmony_ci            compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
11162306a36Sopenharmony_ci            reg = <0x12450000 0x100>,
11262306a36Sopenharmony_ci                  <0x12400000 0x03>;
11362306a36Sopenharmony_ci            interrupts = <0 193 IRQ_TYPE_LEVEL_HIGH>;
11462306a36Sopenharmony_ci            clocks = <&gcc GSBI1_UART_CLK>, <&gcc GSBI1_H_CLK>;
11562306a36Sopenharmony_ci            clock-names = "core", "iface";
11662306a36Sopenharmony_ci        };
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci        i2c@12460000 {
11962306a36Sopenharmony_ci            compatible = "qcom,i2c-qup-v1.1.1";
12062306a36Sopenharmony_ci            reg = <0x12460000 0x1000>;
12162306a36Sopenharmony_ci            pinctrl-0 = <&i2c1_pins>;
12262306a36Sopenharmony_ci            pinctrl-1 = <&i2c1_pins_sleep>;
12362306a36Sopenharmony_ci            pinctrl-names = "default", "sleep";
12462306a36Sopenharmony_ci            interrupts = <0 194 IRQ_TYPE_LEVEL_HIGH>;
12562306a36Sopenharmony_ci            clocks = <&gcc GSBI1_QUP_CLK>, <&gcc GSBI1_H_CLK>;
12662306a36Sopenharmony_ci            clock-names = "core", "iface";
12762306a36Sopenharmony_ci            #address-cells = <1>;
12862306a36Sopenharmony_ci            #size-cells = <0>;
12962306a36Sopenharmony_ci
13062306a36Sopenharmony_ci            status = "disabled"; /* UART chosen */
13162306a36Sopenharmony_ci        };
13262306a36Sopenharmony_ci    };
133