Documentation / devicetree / bindings / misc / qcom,fastrpc.yaml


Based on kernel version 6.8. Page generated on 2024-03-11 21:26 EST.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/misc/qcom,fastrpc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm FastRPC Driver

maintainers:
  - Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

description: |
  The FastRPC implements an IPC (Inter-Processor Communication)
  mechanism that allows for clients to transparently make remote method
  invocations across DSP and APPS boundaries. This enables developers
  to offload tasks to the DSP and free up the application processor for
  other tasks.

properties:
  compatible:
    const: qcom,fastrpc

  label:
    enum:
      - adsp
      - mdsp
      - sdsp
      - cdsp

  memory-region:
    maxItems: 1
    description:
      Phandle to a node describing memory to be used for remote heap CMA.

  qcom,glink-channels:
    description:
      A list of channels tied to this function, used for matching
      the function to a set of virtual channels.
    $ref: /schemas/types.yaml#/definitions/string-array
    items:
      - const: fastrpcglink-apps-dsp

  qcom,non-secure-domain:
    description:
      Used to mark the current domain as non-secure.
    type: boolean

  qcom,smd-channels:
    description:
      Channel name used for the RPM communication
    $ref: /schemas/types.yaml#/definitions/string-array
    items:
      - const: fastrpcsmd-apps-dsp

  qcom,vmids:
    description:
      Virtual machine IDs for remote processor.
    $ref: /schemas/types.yaml#/definitions/uint32-array
 
  "#address-cells":
    const: 1
 
  "#size-cells":
    const: 0

patternProperties:
  "(compute-)?cb@[0-9]*$":
    type: object

    description: >
      Each subnode of the Fastrpc represents compute context banks available on the dsp.

    properties:
      compatible:
        const: qcom,fastrpc-compute-cb

      reg:
        maxItems: 1

      iommus:
        minItems: 1
        maxItems: 3

      qcom,nsessions:
        $ref: /schemas/types.yaml#/definitions/uint32
        default: 1
        description: >
          A value indicating how many sessions can share this context bank.

    required:
      - compatible
      - reg

    additionalProperties: false

required:
  - compatible
  - label
  - "#address-cells"
  - "#size-cells"

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>
    #include <dt-bindings/mailbox/qcom-ipcc.h>
 
    glink-edge {
        interrupts-extended = <&ipcc IPCC_CLIENT_LPASS
                                     IPCC_MPROC_SIGNAL_GLINK_QMP
                                     IRQ_TYPE_EDGE_RISING>;
        mboxes = <&ipcc IPCC_CLIENT_LPASS
                        IPCC_MPROC_SIGNAL_GLINK_QMP>;
        label = "lpass";
        qcom,remote-pid = <2>;
 
        fastrpc {
            compatible = "qcom,fastrpc";
            qcom,glink-channels = "fastrpcglink-apps-dsp";
            label = "sdsp";
            qcom,non-secure-domain;
            #address-cells = <1>;
            #size-cells = <0>;
 
            compute-cb@1 {
                compatible = "qcom,fastrpc-compute-cb";
                reg = <1>;
                iommus = <&apps_smmu 0x0541 0x0>;
            };
 
            compute-cb@2 {
                compatible = "qcom,fastrpc-compute-cb";
                reg = <2>;
                iommus = <&apps_smmu 0x0542 0x0>;
            };
 
            compute-cb@3 {
                compatible = "qcom,fastrpc-compute-cb";
                reg = <3>;
                iommus = <&apps_smmu 0x0543 0x0>;
            };
        };
    };