xref: /linux/Documentation/devicetree/bindings/misc/qcom,fastrpc.yaml (revision 3a2c4d55e32ad65efebdb6de44eef3bfa08bb49d)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/misc/qcom,fastrpc.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm FastRPC Driver
8
9maintainers:
10  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
11
12description: |
13  The FastRPC implements an IPC (Inter-Processor Communication)
14  mechanism that allows for clients to transparently make remote method
15  invocations across DSP and APPS boundaries. This enables developers
16  to offload tasks to the DSP and free up the application processor for
17  other tasks.
18
19properties:
20  compatible:
21    oneOf:
22      - enum:
23          - qcom,kaanapali-fastrpc
24          - qcom,fastrpc
25      - items:
26          - enum:
27              - qcom,glymur-fastrpc
28              - qcom,hawi-fastrpc
29              - qcom,maili-fastrpc
30              - qcom,nord-fastrpc
31          - const: qcom,kaanapali-fastrpc
32
33  label:
34    enum:
35      - adsp
36      - mdsp
37      - sdsp
38      - cdsp
39      - cdsp1
40      - cdsp2
41      - cdsp3
42      - gdsp0
43      - gdsp1
44
45  memory-region:
46    maxItems: 1
47    description:
48      Phandle to a node describing memory to be used for remote heap CMA.
49
50  qcom,glink-channels:
51    description:
52      A list of channels tied to this function, used for matching
53      the function to a set of virtual channels.
54    $ref: /schemas/types.yaml#/definitions/string-array
55    items:
56      - const: fastrpcglink-apps-dsp
57
58  qcom,non-secure-domain:
59    description:
60      Used to mark the current domain as non-secure.
61    type: boolean
62
63  qcom,smd-channels:
64    description:
65      Channel name used for the RPM communication
66    $ref: /schemas/types.yaml#/definitions/string-array
67    items:
68      - const: fastrpcsmd-apps-dsp
69
70  qcom,vmids:
71    description:
72      Virtual machine IDs for remote processor.
73    $ref: /schemas/types.yaml#/definitions/uint32-array
74
75  "#address-cells":
76    const: 1
77
78  "#size-cells":
79    const: 0
80
81patternProperties:
82  "(compute-)?cb@[0-9]*$":
83    type: object
84
85    description: >
86      Each subnode of the Fastrpc represents compute context banks available on the dsp.
87
88    properties:
89      compatible:
90        const: qcom,fastrpc-compute-cb
91
92      reg:
93        maxItems: 1
94
95      dma-coherent: true
96
97      iommus:
98        minItems: 1
99        maxItems: 10
100
101      qcom,nsessions:
102        $ref: /schemas/types.yaml#/definitions/uint32
103        default: 1
104        description: >
105          A value indicating how many sessions can share this context bank.
106
107    required:
108      - compatible
109      - reg
110
111    additionalProperties: false
112
113required:
114  - compatible
115  - label
116  - "#address-cells"
117  - "#size-cells"
118
119additionalProperties: false
120
121examples:
122  - |
123    #include <dt-bindings/interrupt-controller/arm-gic.h>
124    #include <dt-bindings/mailbox/qcom-ipcc.h>
125
126    glink-edge {
127        interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
128                                     IPCC_MPROC_SIGNAL_GLINK_QMP
129                                     IRQ_TYPE_EDGE_RISING>;
130        mboxes = <&ipcc IPCC_CLIENT_LPASS
131                        IPCC_MPROC_SIGNAL_GLINK_QMP>;
132        label = "lpass";
133        qcom,remote-pid = <2>;
134
135        fastrpc {
136            compatible = "qcom,fastrpc";
137            qcom,glink-channels = "fastrpcglink-apps-dsp";
138            label = "sdsp";
139            qcom,non-secure-domain;
140            #address-cells = <1>;
141            #size-cells = <0>;
142
143            compute-cb@1 {
144                compatible = "qcom,fastrpc-compute-cb";
145                reg = <1>;
146                iommus = <&apps_smmu 0x0541 0x0>;
147            };
148
149            compute-cb@2 {
150                compatible = "qcom,fastrpc-compute-cb";
151                reg = <2>;
152                iommus = <&apps_smmu 0x0542 0x0>;
153            };
154
155            compute-cb@3 {
156                compatible = "qcom,fastrpc-compute-cb";
157                reg = <3>;
158                iommus = <&apps_smmu 0x0543 0x0>;
159            };
160        };
161    };
162