forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.2 KiB
110 lines
3.2 KiB
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 identifier of the local endpoint of this edge |
|
|
|
- qcom,remote-pid: |
|
Usage: required |
|
Value type: <u32> |
|
Definition: specifies the identifier 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>; |
|
}; |
|
};
|
|
|