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