162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/misc/qcom,fastrpc.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Qualcomm FastRPC Driver
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  The FastRPC implements an IPC (Inter-Processor Communication)
1462306a36Sopenharmony_ci  mechanism that allows for clients to transparently make remote method
1562306a36Sopenharmony_ci  invocations across DSP and APPS boundaries. This enables developers
1662306a36Sopenharmony_ci  to offload tasks to the DSP and free up the application processor for
1762306a36Sopenharmony_ci  other tasks.
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ciproperties:
2062306a36Sopenharmony_ci  compatible:
2162306a36Sopenharmony_ci    const: qcom,fastrpc
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci  label:
2462306a36Sopenharmony_ci    enum:
2562306a36Sopenharmony_ci      - adsp
2662306a36Sopenharmony_ci      - mdsp
2762306a36Sopenharmony_ci      - sdsp
2862306a36Sopenharmony_ci      - cdsp
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci  memory-region:
3162306a36Sopenharmony_ci    maxItems: 1
3262306a36Sopenharmony_ci    description:
3362306a36Sopenharmony_ci      Phandle to a node describing memory to be used for remote heap CMA.
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci  qcom,glink-channels:
3662306a36Sopenharmony_ci    description:
3762306a36Sopenharmony_ci      A list of channels tied to this function, used for matching
3862306a36Sopenharmony_ci      the function to a set of virtual channels.
3962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/string-array
4062306a36Sopenharmony_ci    items:
4162306a36Sopenharmony_ci      - const: fastrpcglink-apps-dsp
4262306a36Sopenharmony_ci
4362306a36Sopenharmony_ci  qcom,non-secure-domain:
4462306a36Sopenharmony_ci    description:
4562306a36Sopenharmony_ci      Used to mark the current domain as non-secure.
4662306a36Sopenharmony_ci    type: boolean
4762306a36Sopenharmony_ci
4862306a36Sopenharmony_ci  qcom,smd-channels:
4962306a36Sopenharmony_ci    description:
5062306a36Sopenharmony_ci      Channel name used for the RPM communication
5162306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/string-array
5262306a36Sopenharmony_ci    items:
5362306a36Sopenharmony_ci      - const: fastrpcsmd-apps-dsp
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci  qcom,vmids:
5662306a36Sopenharmony_ci    description:
5762306a36Sopenharmony_ci      Virtual machine IDs for remote processor.
5862306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32-array
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_ci  "#address-cells":
6162306a36Sopenharmony_ci    const: 1
6262306a36Sopenharmony_ci
6362306a36Sopenharmony_ci  "#size-cells":
6462306a36Sopenharmony_ci    const: 0
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_cipatternProperties:
6762306a36Sopenharmony_ci  "(compute-)?cb@[0-9]*$":
6862306a36Sopenharmony_ci    type: object
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci    description: >
7162306a36Sopenharmony_ci      Each subnode of the Fastrpc represents compute context banks available on the dsp.
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ci    properties:
7462306a36Sopenharmony_ci      compatible:
7562306a36Sopenharmony_ci        const: qcom,fastrpc-compute-cb
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci      reg:
7862306a36Sopenharmony_ci        maxItems: 1
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ci      iommus:
8162306a36Sopenharmony_ci        minItems: 1
8262306a36Sopenharmony_ci        maxItems: 3
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci      qcom,nsessions:
8562306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
8662306a36Sopenharmony_ci        default: 1
8762306a36Sopenharmony_ci        description: >
8862306a36Sopenharmony_ci          A value indicating how many sessions can share this context bank.
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci    required:
9162306a36Sopenharmony_ci      - compatible
9262306a36Sopenharmony_ci      - reg
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci    additionalProperties: false
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_cirequired:
9762306a36Sopenharmony_ci  - compatible
9862306a36Sopenharmony_ci  - label
9962306a36Sopenharmony_ci  - "#address-cells"
10062306a36Sopenharmony_ci  - "#size-cells"
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ciadditionalProperties: false
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ciexamples:
10562306a36Sopenharmony_ci  - |
10662306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
10762306a36Sopenharmony_ci    #include <dt-bindings/mailbox/qcom-ipcc.h>
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci    glink-edge {
11062306a36Sopenharmony_ci        interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
11162306a36Sopenharmony_ci                                     IPCC_MPROC_SIGNAL_GLINK_QMP
11262306a36Sopenharmony_ci                                     IRQ_TYPE_EDGE_RISING>;
11362306a36Sopenharmony_ci        mboxes = <&ipcc IPCC_CLIENT_LPASS
11462306a36Sopenharmony_ci                        IPCC_MPROC_SIGNAL_GLINK_QMP>;
11562306a36Sopenharmony_ci        label = "lpass";
11662306a36Sopenharmony_ci        qcom,remote-pid = <2>;
11762306a36Sopenharmony_ci
11862306a36Sopenharmony_ci        fastrpc {
11962306a36Sopenharmony_ci            compatible = "qcom,fastrpc";
12062306a36Sopenharmony_ci            qcom,glink-channels = "fastrpcglink-apps-dsp";
12162306a36Sopenharmony_ci            label = "sdsp";
12262306a36Sopenharmony_ci            qcom,non-secure-domain;
12362306a36Sopenharmony_ci            #address-cells = <1>;
12462306a36Sopenharmony_ci            #size-cells = <0>;
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci            compute-cb@1 {
12762306a36Sopenharmony_ci                compatible = "qcom,fastrpc-compute-cb";
12862306a36Sopenharmony_ci                reg = <1>;
12962306a36Sopenharmony_ci                iommus = <&apps_smmu 0x0541 0x0>;
13062306a36Sopenharmony_ci            };
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci            compute-cb@2 {
13362306a36Sopenharmony_ci                compatible = "qcom,fastrpc-compute-cb";
13462306a36Sopenharmony_ci                reg = <2>;
13562306a36Sopenharmony_ci                iommus = <&apps_smmu 0x0542 0x0>;
13662306a36Sopenharmony_ci            };
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci            compute-cb@3 {
13962306a36Sopenharmony_ci                compatible = "qcom,fastrpc-compute-cb";
14062306a36Sopenharmony_ci                reg = <3>;
14162306a36Sopenharmony_ci                iommus = <&apps_smmu 0x0543 0x0>;
14262306a36Sopenharmony_ci            };
14362306a36Sopenharmony_ci        };
14462306a36Sopenharmony_ci    };
145