# 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>; }; }; };