Qualcomm Technologies, Inc. FastRPC Driver

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.

- compatible:
	Usage: required
	Value type: <stringlist>
	Definition: must be "qcom,fastrpc"

- label
	Usage: required
	Value type: <string>
	Definition: should specify the dsp domain name this fastrpc
	corresponds to. must be one of this: "adsp", "mdsp", "sdsp", "cdsp"

- qcom,non-secure-domain:
	Usage: required
	Value type: <boolean>
	Definition: Property to specify that dsp domain is non-secure.

- qcom,vmids:
	Usage: optional
	Value type: <u32 array>
	Definition: Virtual machine IDs for remote processor.

- #address-cells
	Usage: required
	Value type: <u32>
	Definition: Must be 1

- #size-cells
	Usage: required
	Value type: <u32>
	Definition: Must be 0

= COMPUTE BANKS
Each subnode of the Fastrpc represents compute context banks available
on the dsp.
- All Compute context banks MUST contain the following properties:

- compatible:
	Usage: required
	Value type: <stringlist>
	Definition: must be "qcom,fastrpc-compute-cb"

- reg
	Usage: required
	Value type: <u32>
	Definition: Context Bank ID.

- qcom,nsessions:
	Usage: Optional
	Value type: <u32>
	Defination: A value indicating how many sessions can share this
		    context bank. Defaults to 1 when this property
		    is not specified.

Example:

adsp-pil {
	compatible = "qcom,msm8996-adsp-pil";
	...
	smd-edge {
		label = "lpass";
		fastrpc {
			compatible = "qcom,fastrpc";
			qcom,smd-channels = "fastrpcsmd-apps-dsp";
			label = "adsp";
			#address-cells = <1>;
			#size-cells = <0>;

			cb@1 {
				compatible = "qcom,fastrpc-compute-cb";
				reg = <1>;
			};

			cb@2 {
				compatible = "qcom,fastrpc-compute-cb";
				reg = <2>;
			};
			...
		};
	};
};
