123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- 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
- - qcom,ipc:
- Usage: required
- 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>;
- };
- };
|