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:
Definition: must be one of:"qcom,smp2p"interrupts:
Usage: required
Value type:
Definition: one entry specifying the smp2p notification interruptmboxes:
Usage: required
Value type:
Definition: reference to the associated doorbell in APCS, as describedin mailbox/mailbox.txtqcom,ipc:
Usage: required, unless mboxes is specified
Value type:
Definition: three entries specifying the outgoing ipc bit used forsignaling 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 registerqcom,smem:
Usage: required
Value type:
Definition: two identifiers of the inbound and outbound smem items usedfor this edgeqcom,local-pid:
Usage: required
Value type:
Definition: specifies the identfier of the local endpoint of this edgeqcom,remote-pid:
Usage: required
Value type:
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:
Definition: specifies the name of this entry, for inbound entries thiswill be used to match against the remotely allocated entry and for outbound entries this name is used for allocating entriesinterrupt-controller:
Usage: required for incoming entries
Value type:
Definition: marks the entry as inbound; the node should be specifiedas 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:
Definition: must be 2 - denoting the bit in the entry and IRQ flags#qcom,smem-state-cells:
Usage: required for outgoing entries
Value type:
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>;
};
};