xref: /freebsd/sys/contrib/device-tree/Bindings/misc/qcom,fastrpc.yaml (revision 01950c46b8155250f64374fb72fc11faa44bf099)
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
297ef62cebSEmmanuel Vadot
307ef62cebSEmmanuel Vadot  memory-region:
317ef62cebSEmmanuel Vadot    maxItems: 1
327ef62cebSEmmanuel Vadot    description:
337ef62cebSEmmanuel Vadot      Phandle to a node describing memory to be used for remote heap CMA.
347ef62cebSEmmanuel Vadot
357ef62cebSEmmanuel Vadot  qcom,glink-channels:
367ef62cebSEmmanuel Vadot    description:
377ef62cebSEmmanuel Vadot      A list of channels tied to this function, used for matching
387ef62cebSEmmanuel Vadot      the function to a set of virtual channels.
39f126890aSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/string-array
407ef62cebSEmmanuel Vadot    items:
417ef62cebSEmmanuel Vadot      - const: fastrpcglink-apps-dsp
427ef62cebSEmmanuel Vadot
437ef62cebSEmmanuel Vadot  qcom,non-secure-domain:
447ef62cebSEmmanuel Vadot    description:
457ef62cebSEmmanuel Vadot      Used to mark the current domain as non-secure.
467ef62cebSEmmanuel Vadot    type: boolean
477ef62cebSEmmanuel Vadot
487ef62cebSEmmanuel Vadot  qcom,smd-channels:
497ef62cebSEmmanuel Vadot    description:
507ef62cebSEmmanuel Vadot      Channel name used for the RPM communication
51f126890aSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/string-array
527ef62cebSEmmanuel Vadot    items:
537ef62cebSEmmanuel Vadot      - const: fastrpcsmd-apps-dsp
547ef62cebSEmmanuel Vadot
557ef62cebSEmmanuel Vadot  qcom,vmids:
567ef62cebSEmmanuel Vadot    description:
577ef62cebSEmmanuel Vadot      Virtual machine IDs for remote processor.
58f126890aSEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32-array
597ef62cebSEmmanuel Vadot
607ef62cebSEmmanuel Vadot  "#address-cells":
617ef62cebSEmmanuel Vadot    const: 1
627ef62cebSEmmanuel Vadot
637ef62cebSEmmanuel Vadot  "#size-cells":
647ef62cebSEmmanuel Vadot    const: 0
657ef62cebSEmmanuel Vadot
667ef62cebSEmmanuel VadotpatternProperties:
677ef62cebSEmmanuel Vadot  "(compute-)?cb@[0-9]*$":
687ef62cebSEmmanuel Vadot    type: object
697ef62cebSEmmanuel Vadot
707ef62cebSEmmanuel Vadot    description: >
717ef62cebSEmmanuel Vadot      Each subnode of the Fastrpc represents compute context banks available on the dsp.
727ef62cebSEmmanuel Vadot
737ef62cebSEmmanuel Vadot    properties:
747ef62cebSEmmanuel Vadot      compatible:
757ef62cebSEmmanuel Vadot        const: qcom,fastrpc-compute-cb
767ef62cebSEmmanuel Vadot
777ef62cebSEmmanuel Vadot      reg:
787ef62cebSEmmanuel Vadot        maxItems: 1
797ef62cebSEmmanuel Vadot
80*01950c46SEmmanuel Vadot      dma-coherent: true
81*01950c46SEmmanuel Vadot
827ef62cebSEmmanuel Vadot      iommus:
837ef62cebSEmmanuel Vadot        minItems: 1
848bab661aSEmmanuel Vadot        maxItems: 3
857ef62cebSEmmanuel Vadot
867ef62cebSEmmanuel Vadot      qcom,nsessions:
877ef62cebSEmmanuel Vadot        $ref: /schemas/types.yaml#/definitions/uint32
887ef62cebSEmmanuel Vadot        default: 1
897ef62cebSEmmanuel Vadot        description: >
907ef62cebSEmmanuel Vadot          A value indicating how many sessions can share this context bank.
917ef62cebSEmmanuel Vadot
927ef62cebSEmmanuel Vadot    required:
937ef62cebSEmmanuel Vadot      - compatible
947ef62cebSEmmanuel Vadot      - reg
957ef62cebSEmmanuel Vadot
967ef62cebSEmmanuel Vadot    additionalProperties: false
977ef62cebSEmmanuel Vadot
987ef62cebSEmmanuel Vadotrequired:
997ef62cebSEmmanuel Vadot  - compatible
1007ef62cebSEmmanuel Vadot  - label
1017ef62cebSEmmanuel Vadot  - "#address-cells"
1027ef62cebSEmmanuel Vadot  - "#size-cells"
1037ef62cebSEmmanuel Vadot
1047ef62cebSEmmanuel VadotadditionalProperties: false
1057ef62cebSEmmanuel Vadot
1067ef62cebSEmmanuel Vadotexamples:
1077ef62cebSEmmanuel Vadot  - |
1087ef62cebSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
1097ef62cebSEmmanuel Vadot    #include <dt-bindings/mailbox/qcom-ipcc.h>
1107ef62cebSEmmanuel Vadot
1117ef62cebSEmmanuel Vadot    glink-edge {
1127ef62cebSEmmanuel Vadot        interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
1137ef62cebSEmmanuel Vadot                                     IPCC_MPROC_SIGNAL_GLINK_QMP
1147ef62cebSEmmanuel Vadot                                     IRQ_TYPE_EDGE_RISING>;
1157ef62cebSEmmanuel Vadot        mboxes = <&ipcc IPCC_CLIENT_LPASS
1167ef62cebSEmmanuel Vadot                        IPCC_MPROC_SIGNAL_GLINK_QMP>;
1177ef62cebSEmmanuel Vadot        label = "lpass";
1187ef62cebSEmmanuel Vadot        qcom,remote-pid = <2>;
1197ef62cebSEmmanuel Vadot
1207ef62cebSEmmanuel Vadot        fastrpc {
1217ef62cebSEmmanuel Vadot            compatible = "qcom,fastrpc";
1227ef62cebSEmmanuel Vadot            qcom,glink-channels = "fastrpcglink-apps-dsp";
1237ef62cebSEmmanuel Vadot            label = "sdsp";
1247ef62cebSEmmanuel Vadot            qcom,non-secure-domain;
1257ef62cebSEmmanuel Vadot            #address-cells = <1>;
1267ef62cebSEmmanuel Vadot            #size-cells = <0>;
1277ef62cebSEmmanuel Vadot
1287ef62cebSEmmanuel Vadot            compute-cb@1 {
1297ef62cebSEmmanuel Vadot                compatible = "qcom,fastrpc-compute-cb";
1307ef62cebSEmmanuel Vadot                reg = <1>;
1317ef62cebSEmmanuel Vadot                iommus = <&apps_smmu 0x0541 0x0>;
1327ef62cebSEmmanuel Vadot            };
1337ef62cebSEmmanuel Vadot
1347ef62cebSEmmanuel Vadot            compute-cb@2 {
1357ef62cebSEmmanuel Vadot                compatible = "qcom,fastrpc-compute-cb";
1367ef62cebSEmmanuel Vadot                reg = <2>;
1377ef62cebSEmmanuel Vadot                iommus = <&apps_smmu 0x0542 0x0>;
1387ef62cebSEmmanuel Vadot            };
1397ef62cebSEmmanuel Vadot
1407ef62cebSEmmanuel Vadot            compute-cb@3 {
1417ef62cebSEmmanuel Vadot                compatible = "qcom,fastrpc-compute-cb";
1427ef62cebSEmmanuel Vadot                reg = <3>;
1437ef62cebSEmmanuel Vadot                iommus = <&apps_smmu 0x0543 0x0>;
1447ef62cebSEmmanuel Vadot            };
1457ef62cebSEmmanuel Vadot        };
1467ef62cebSEmmanuel Vadot    };
147