Qualcomm Technologies, Inc. FastRPC Driver

The MSM FastRPC driver 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.

Required properties:
- compatible :	Must be one of "qcom,msm-fastrpc-adsp" or
		"qcom,msm-fastrpc-compute"

Optional properties:
- qcom,fastrpc-glink:	Flag to use glink instead of smd for IPC
- qcom,rpc-latency-us:	FastRPC QoS latency vote
- qcom,adsp-remoteheap-vmid:  FastRPC remote heap VMID list
- qcom,fastrpc-adsp-audio-pdr:  Flag to enable ADSP Audio PDR

Optional subnodes:
- qcom,msm_fastrpc_compute_cb :	Child nodes representing the compute context
				banks
Subnode Required properties:
- compatible :		Must be "qcom,msm-fastrpc-compute-cb"
- label:		Label describing the channel this context bank belongs to
- iommus : 		A list of phandle and IOMMU specifier pairs that describe the
			IOMMU master interfaces of the device

Example:
	qcom,msm_fastrpc {
		compatible = "qcom,msm-fastrpc-adsp";
		qcom,fastrpc-glink;
		qcom,rpc-latency-us = <2343>;
		qcom,adsp-remoteheap-vmid = <22 37>;

		qcom,msm_fastrpc_compute_cb_1 {
			compatible = "qcom,msm-fastrpc-compute-cb";
			label = "adsprpc-smd";
			iommus = <&lpass_q6_smmu 8>,
		};
		qcom,msm_fastrpc_compute_cb_2 {
			compatible = "qcom,msm-fastrpc-compute-cb";
			label = "adsprpc-smd";
			iommus = <&lpass_q6_smmu 9>,
		};
	};

Legacy SMMU v1/v2:

Required properties:
- compatible : Must be "qcom,msm-fastrpc-legacy-compute"

Required subnode:
- qcom,msm_fastrpc_compute_cb : Child nodes representing the compute context
                                banks

Required subnode properties:
- compatible : Must be "qcom,msm-fastrpc-legacy-compute-cb"
- label	     : Label describing the channel this context bank belongs to
- iommus     : A list of phandle and IOMMU specifier pairs that describe the
			IOMMU master interfaces of the device
- sids       : A list of SID associated with the context bank

Example:
	qcom,msm_fastrpc {
		compatible = "qcom,msm-fastrpc-legacy-compute";
		qcom,msm_fastrpc_compute_cb {
			compatible = "qcom,msm-fastrpc-legacy-compute-cb";
			label = "adsprpc-smd";
			iommus = <&apps_iommu 0x2408 0x7>;
			sids = <0x8 0x9 0xa 0xb 0xc 0xd 0xe 0xf>;
		};
	};
Remote Heap:

Required properties:
- compatible : Must be "qcom,msm-adsprpc-mem-region"
- memory-region : CMA region which is owned by this device
- restrict-access : Blocking vote for hyp_assign_phys function call

Example:
       qcom,adsprpc-mem {
               compatible = "qcom,msm-adsprpc-mem-region";
               memory-region = <&adsp_mem>;
               restrict-access;
       };
