xref: /linux/Documentation/devicetree/bindings/misc/qcom,fastrpc.yaml (revision 7255fcc80d4b525cc10cfaaf7f485830d4ed2000)
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    const: qcom,fastrpc
22
23  label:
24    enum:
25      - adsp
26      - mdsp
27      - sdsp
28      - cdsp
29
30  memory-region:
31    maxItems: 1
32    description:
33      Phandle to a node describing memory to be used for remote heap CMA.
34
35  qcom,glink-channels:
36    description:
37      A list of channels tied to this function, used for matching
38      the function to a set of virtual channels.
39    $ref: /schemas/types.yaml#/definitions/string-array
40    items:
41      - const: fastrpcglink-apps-dsp
42
43  qcom,non-secure-domain:
44    description:
45      Used to mark the current domain as non-secure.
46    type: boolean
47
48  qcom,smd-channels:
49    description:
50      Channel name used for the RPM communication
51    $ref: /schemas/types.yaml#/definitions/string-array
52    items:
53      - const: fastrpcsmd-apps-dsp
54
55  qcom,vmids:
56    description:
57      Virtual machine IDs for remote processor.
58    $ref: /schemas/types.yaml#/definitions/uint32-array
59
60  "#address-cells":
61    const: 1
62
63  "#size-cells":
64    const: 0
65
66patternProperties:
67  "(compute-)?cb@[0-9]*$":
68    type: object
69
70    description: >
71      Each subnode of the Fastrpc represents compute context banks available on the dsp.
72
73    properties:
74      compatible:
75        const: qcom,fastrpc-compute-cb
76
77      reg:
78        maxItems: 1
79
80      dma-coherent: true
81
82      iommus:
83        minItems: 1
84        maxItems: 3
85
86      qcom,nsessions:
87        $ref: /schemas/types.yaml#/definitions/uint32
88        default: 1
89        description: >
90          A value indicating how many sessions can share this context bank.
91
92    required:
93      - compatible
94      - reg
95
96    additionalProperties: false
97
98required:
99  - compatible
100  - label
101  - "#address-cells"
102  - "#size-cells"
103
104additionalProperties: false
105
106examples:
107  - |
108    #include <dt-bindings/interrupt-controller/arm-gic.h>
109    #include <dt-bindings/mailbox/qcom-ipcc.h>
110
111    glink-edge {
112        interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
113                                     IPCC_MPROC_SIGNAL_GLINK_QMP
114                                     IRQ_TYPE_EDGE_RISING>;
115        mboxes = <&ipcc IPCC_CLIENT_LPASS
116                        IPCC_MPROC_SIGNAL_GLINK_QMP>;
117        label = "lpass";
118        qcom,remote-pid = <2>;
119
120        fastrpc {
121            compatible = "qcom,fastrpc";
122            qcom,glink-channels = "fastrpcglink-apps-dsp";
123            label = "sdsp";
124            qcom,non-secure-domain;
125            #address-cells = <1>;
126            #size-cells = <0>;
127
128            compute-cb@1 {
129                compatible = "qcom,fastrpc-compute-cb";
130                reg = <1>;
131                iommus = <&apps_smmu 0x0541 0x0>;
132            };
133
134            compute-cb@2 {
135                compatible = "qcom,fastrpc-compute-cb";
136                reg = <2>;
137                iommus = <&apps_smmu 0x0542 0x0>;
138            };
139
140            compute-cb@3 {
141                compatible = "qcom,fastrpc-compute-cb";
142                reg = <3>;
143                iommus = <&apps_smmu 0x0543 0x0>;
144            };
145        };
146    };
147