Qualcomm Shared Memory Point 2 Point binding

The Shared Memory Point to Point (SMP2P) protocol facilitates communication of
a single 32-bit value between two processors.  Each value has a single writer
(the local side) and a single reader (the remote side).  Values are uniquely
identified in the system by the directed edge (local processor ID to remote
processor ID) and a string identifier.

- compatible:
	Usage: required
	Value type: <string>
	Definition: must be one of:
		    "qcom,smp2p"

- interrupts:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: one entry specifying the smp2p notification interrupt

- mboxes:
	Usage: required
	Value type: <prop-encoded-array>
	Definition: reference to the associated doorbell in APCS, as described
		    in mailbox/mailbox.txt

- qcom,ipc:
	Usage: required, unless mboxes is specified
	Value type: <prop-encoded-array>
	Definition: three entries specifying the outgoing ipc bit used for
		    signaling the remote end of the smp2p edge:
		    - phandle to a syscon node representing the apcs registers
		    - u32 representing offset to the register within the syscon
		    - u32 representing the ipc bit within the register

- qcom,smem:
	Usage: required
	Value type: <u32 array>
	Definition: two identifiers of the inbound and outbound smem items used
		    for this edge

- qcom,local-pid:
	Usage: required
	Value type: <u32>
	Definition: specifies the identfier of the local endpoint of this edge

- qcom,remote-pid:
	Usage: required
	Value type: <u32>
	Definition: specifies the identfier of the remote endpoint of this edge

= SUBNODES
Each SMP2P pair contain a set of inbound and outbound entries, these are
described in subnodes of the smp2p device node. The node names are not
important.

- qcom,entry-name:
	Usage: required
	Value type: <string>
	Definition: specifies the name of this entry, for inbound entries this
		    will be used to match against the remotely allocated entry
		    and for outbound entries this name is used for allocating
		    entries

- interrupt-controller:
	Usage: required for incoming entries
	Value type: <empty>
	Definition: marks the entry as inbound; the node should be specified
		    as a two cell interrupt-controller as defined in
		    "../interrupt-controller/interrupts.txt"
		    If not specified this node will denote the outgoing entry

- #interrupt-cells:
	Usage: required for incoming entries
	Value type: <u32>
	Definition: must be 2 - denoting the bit in the entry and IRQ flags

- #qcom,smem-state-cells:
	Usage: required for outgoing entries
	Value type: <u32>
	Definition: must be 1 - denoting the bit in the entry

= EXAMPLE
The following example shows the SMP2P setup with the wireless processor,
defined from the 8974 apps processor's point-of-view. It encompasses one
inbound and one outbound entry:

wcnss-smp2p {
	compatible = "qcom,smp2p";
	qcom,smem = <431>, <451>;

	interrupts = <0 143 1>;

	qcom,ipc = <&apcs 8 18>;

	qcom,local-pid = <0>;
	qcom,remote-pid = <4>;

	wcnss_smp2p_out: master-kernel {
		qcom,entry-name = "master-kernel";

		#qcom,smem-state-cells = <1>;
	};

	wcnss_smp2p_in: slave-kernel {
		qcom,entry-name = "slave-kernel";

		interrupt-controller;
		#interrupt-cells = <2>;
	};
};
