xref: /freebsd/sys/contrib/device-tree/Bindings/misc/qcom,fastrpc.yaml (revision b2d2a78ad80ec68d4a17f5aef97d21686cb1e29b)
17ef62cebSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
27ef62cebSEmmanuel Vadot%YAML 1.2
37ef62cebSEmmanuel Vadot---
47ef62cebSEmmanuel Vadot$id: http://devicetree.org/schemas/misc/qcom,fastrpc.yaml#
57ef62cebSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
67ef62cebSEmmanuel Vadot
77ef62cebSEmmanuel Vadottitle: Qualcomm FastRPC Driver
87ef62cebSEmmanuel Vadot
97ef62cebSEmmanuel Vadotmaintainers:
107ef62cebSEmmanuel Vadot  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
117ef62cebSEmmanuel Vadot
127ef62cebSEmmanuel Vadotdescription: |
137ef62cebSEmmanuel Vadot  The FastRPC implements an IPC (Inter-Processor Communication)
147ef62cebSEmmanuel Vadot  mechanism that allows for clients to transparently make remote method
157ef62cebSEmmanuel Vadot  invocations across DSP and APPS boundaries. This enables developers
167ef62cebSEmmanuel Vadot  to offload tasks to the DSP and free up the application processor for
177ef62cebSEmmanuel Vadot  other tasks.
187ef62cebSEmmanuel Vadot
197ef62cebSEmmanuel Vadotproperties:
207ef62cebSEmmanuel Vadot  compatible:
217ef62cebSEmmanuel Vadot    const: qcom,fastrpc
227ef62cebSEmmanuel Vadot
237ef62cebSEmmanuel Vadot  label:
247ef62cebSEmmanuel Vadot    enum:
257ef62cebSEmmanuel Vadot      - adsp
267ef62cebSEmmanuel Vadot      - mdsp
277ef62cebSEmmanuel Vadot      - sdsp
287ef62cebSEmmanuel Vadot      - cdsp
29*b2d2a78aSEmmanuel Vadot      - cdsp1
307ef62cebSEmmanuel Vadot
317ef62cebSEmmanuel Vadot  memory-region:
327ef62cebSEmmanuel Vadot    maxItems: 1
337ef62cebSEmmanuel Vadot    description:
347ef62cebSEmmanuel Vadot      Phandle to a node describing memory to be used for remote heap CMA.
357ef62cebSEmmanuel Vadot
367ef62cebSEmmanuel Vadot  qcom,glink-channels:
377ef62cebSEmmanuel Vadot    description:
387ef62cebSEmmanuel Vadot      A list of channels tied to this function, used for matching
397ef62cebSEmmanuel Vadot      the function to a set of virtual channels.
40f126890aSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/string-array
417ef62cebSEmmanuel Vadot    items:
427ef62cebSEmmanuel Vadot      - const: fastrpcglink-apps-dsp
437ef62cebSEmmanuel Vadot
447ef62cebSEmmanuel Vadot  qcom,non-secure-domain:
457ef62cebSEmmanuel Vadot    description:
467ef62cebSEmmanuel Vadot      Used to mark the current domain as non-secure.
477ef62cebSEmmanuel Vadot    type: boolean
487ef62cebSEmmanuel Vadot
497ef62cebSEmmanuel Vadot  qcom,smd-channels:
507ef62cebSEmmanuel Vadot    description:
517ef62cebSEmmanuel Vadot      Channel name used for the RPM communication
52f126890aSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/string-array
537ef62cebSEmmanuel Vadot    items:
547ef62cebSEmmanuel Vadot      - const: fastrpcsmd-apps-dsp
557ef62cebSEmmanuel Vadot
567ef62cebSEmmanuel Vadot  qcom,vmids:
577ef62cebSEmmanuel Vadot    description:
587ef62cebSEmmanuel Vadot      Virtual machine IDs for remote processor.
59f126890aSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32-array
607ef62cebSEmmanuel Vadot
617ef62cebSEmmanuel Vadot  "#address-cells":
627ef62cebSEmmanuel Vadot    const: 1
637ef62cebSEmmanuel Vadot
647ef62cebSEmmanuel Vadot  "#size-cells":
657ef62cebSEmmanuel Vadot    const: 0
667ef62cebSEmmanuel Vadot
677ef62cebSEmmanuel VadotpatternProperties:
687ef62cebSEmmanuel Vadot  "(compute-)?cb@[0-9]*$":
697ef62cebSEmmanuel Vadot    type: object
707ef62cebSEmmanuel Vadot
717ef62cebSEmmanuel Vadot    description: >
727ef62cebSEmmanuel Vadot      Each subnode of the Fastrpc represents compute context banks available on the dsp.
737ef62cebSEmmanuel Vadot
747ef62cebSEmmanuel Vadot    properties:
757ef62cebSEmmanuel Vadot      compatible:
767ef62cebSEmmanuel Vadot        const: qcom,fastrpc-compute-cb
777ef62cebSEmmanuel Vadot
787ef62cebSEmmanuel Vadot      reg:
797ef62cebSEmmanuel Vadot        maxItems: 1
807ef62cebSEmmanuel Vadot
8101950c46SEmmanuel Vadot      dma-coherent: true
8201950c46SEmmanuel Vadot
837ef62cebSEmmanuel Vadot      iommus:
847ef62cebSEmmanuel Vadot        minItems: 1
85*b2d2a78aSEmmanuel Vadot        maxItems: 10
867ef62cebSEmmanuel Vadot
877ef62cebSEmmanuel Vadot      qcom,nsessions:
887ef62cebSEmmanuel Vadot        $ref: /schemas/types.yaml#/definitions/uint32
897ef62cebSEmmanuel Vadot        default: 1
907ef62cebSEmmanuel Vadot        description: >
917ef62cebSEmmanuel Vadot          A value indicating how many sessions can share this context bank.
927ef62cebSEmmanuel Vadot
937ef62cebSEmmanuel Vadot    required:
947ef62cebSEmmanuel Vadot      - compatible
957ef62cebSEmmanuel Vadot      - reg
967ef62cebSEmmanuel Vadot
977ef62cebSEmmanuel Vadot    additionalProperties: false
987ef62cebSEmmanuel Vadot
997ef62cebSEmmanuel Vadotrequired:
1007ef62cebSEmmanuel Vadot  - compatible
1017ef62cebSEmmanuel Vadot  - label
1027ef62cebSEmmanuel Vadot  - "#address-cells"
1037ef62cebSEmmanuel Vadot  - "#size-cells"
1047ef62cebSEmmanuel Vadot
1057ef62cebSEmmanuel VadotadditionalProperties: false
1067ef62cebSEmmanuel Vadot
1077ef62cebSEmmanuel Vadotexamples:
1087ef62cebSEmmanuel Vadot  - |
1097ef62cebSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
1107ef62cebSEmmanuel Vadot    #include <dt-bindings/mailbox/qcom-ipcc.h>
1117ef62cebSEmmanuel Vadot
1127ef62cebSEmmanuel Vadot    glink-edge {
1137ef62cebSEmmanuel Vadot        interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
1147ef62cebSEmmanuel Vadot                                     IPCC_MPROC_SIGNAL_GLINK_QMP
1157ef62cebSEmmanuel Vadot                                     IRQ_TYPE_EDGE_RISING>;
1167ef62cebSEmmanuel Vadot        mboxes = <&ipcc IPCC_CLIENT_LPASS
1177ef62cebSEmmanuel Vadot                        IPCC_MPROC_SIGNAL_GLINK_QMP>;
1187ef62cebSEmmanuel Vadot        label = "lpass";
1197ef62cebSEmmanuel Vadot        qcom,remote-pid = <2>;
1207ef62cebSEmmanuel Vadot
1217ef62cebSEmmanuel Vadot        fastrpc {
1227ef62cebSEmmanuel Vadot            compatible = "qcom,fastrpc";
1237ef62cebSEmmanuel Vadot            qcom,glink-channels = "fastrpcglink-apps-dsp";
1247ef62cebSEmmanuel Vadot            label = "sdsp";
1257ef62cebSEmmanuel Vadot            qcom,non-secure-domain;
1267ef62cebSEmmanuel Vadot            #address-cells = <1>;
1277ef62cebSEmmanuel Vadot            #size-cells = <0>;
1287ef62cebSEmmanuel Vadot
1297ef62cebSEmmanuel Vadot            compute-cb@1 {
1307ef62cebSEmmanuel Vadot                compatible = "qcom,fastrpc-compute-cb";
1317ef62cebSEmmanuel Vadot                reg = <1>;
1327ef62cebSEmmanuel Vadot                iommus = <&apps_smmu 0x0541 0x0>;
1337ef62cebSEmmanuel Vadot            };
1347ef62cebSEmmanuel Vadot
1357ef62cebSEmmanuel Vadot            compute-cb@2 {
1367ef62cebSEmmanuel Vadot                compatible = "qcom,fastrpc-compute-cb";
1377ef62cebSEmmanuel Vadot                reg = <2>;
1387ef62cebSEmmanuel Vadot                iommus = <&apps_smmu 0x0542 0x0>;
1397ef62cebSEmmanuel Vadot            };
1407ef62cebSEmmanuel Vadot
1417ef62cebSEmmanuel Vadot            compute-cb@3 {
1427ef62cebSEmmanuel Vadot                compatible = "qcom,fastrpc-compute-cb";
1437ef62cebSEmmanuel Vadot                reg = <3>;
1447ef62cebSEmmanuel Vadot                iommus = <&apps_smmu 0x0543 0x0>;
1457ef62cebSEmmanuel Vadot            };
1467ef62cebSEmmanuel Vadot        };
1477ef62cebSEmmanuel Vadot    };
148