105 lines
2.8 KiB
Plaintext
105 lines
2.8 KiB
Plaintext
Qualcomm Shared Memory State Machine
|
|
|
|
The Shared Memory State Machine facilitates broadcasting of single bit state
|
|
information between the processors in a Qualcomm SoC. Each processor is
|
|
assigned 32 bits of state that can be modified. A processor can through a
|
|
matrix of bitmaps signal subscription of notifications upon changes to a
|
|
certain bit owned by a certain remote processor.
|
|
|
|
- compatible:
|
|
Usage: required
|
|
Value type: <string>
|
|
Definition: must be one of:
|
|
"qcom,smsm"
|
|
|
|
- qcom,ipc-N:
|
|
Usage: required
|
|
Value type: <prop-encoded-array>
|
|
Definition: three entries specifying the outgoing ipc bit used for
|
|
signaling the N:th remote processor
|
|
- 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,local-host:
|
|
Usage: optional
|
|
Value type: <u32>
|
|
Definition: identifier of the local processor in the list of hosts, or
|
|
in other words specifier of the column in the subscription
|
|
matrix representing the local processor
|
|
defaults to host 0
|
|
|
|
- #address-cells:
|
|
Usage: required
|
|
Value type: <u32>
|
|
Definition: must be 1
|
|
|
|
- #size-cells:
|
|
Usage: required
|
|
Value type: <u32>
|
|
Definition: must be 0
|
|
|
|
= SUBNODES
|
|
Each processor's state bits are described by a subnode of the smsm device node.
|
|
Nodes can either be flagged as an interrupt-controller to denote a remote
|
|
processor's state bits or the local processors bits. The node names are not
|
|
important.
|
|
|
|
- reg:
|
|
Usage: required
|
|
Value type: <u32>
|
|
Definition: specifies the offset, in words, of the first bit for this
|
|
entry
|
|
|
|
- #qcom,smem-state-cells:
|
|
Usage: required for local entry
|
|
Value type: <u32>
|
|
Definition: must be 1 - denotes bit number
|
|
|
|
- interrupt-controller:
|
|
Usage: required for remote entries
|
|
Value type: <empty>
|
|
Definition: marks the entry as a interrupt-controller and the state bits
|
|
to belong to a remote processor
|
|
|
|
- #interrupt-cells:
|
|
Usage: required for remote entries
|
|
Value type: <u32>
|
|
Definition: must be 2 - denotes bit number and IRQ flags
|
|
|
|
- interrupts:
|
|
Usage: required for remote entries
|
|
Value type: <prop-encoded-array>
|
|
Definition: one entry specifying remote IRQ used by the remote processor
|
|
to signal changes of its state bits
|
|
|
|
|
|
= EXAMPLE
|
|
The following example shows the SMEM setup for controlling properties of the
|
|
wireless processor, defined from the 8974 apps processor's point-of-view. It
|
|
encompasses one outbound entry and the outgoing interrupt for the wireless
|
|
processor.
|
|
|
|
smsm {
|
|
compatible = "qcom,smsm";
|
|
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
qcom,ipc-3 = <&apcs 8 19>;
|
|
|
|
apps_smsm: apps@0 {
|
|
reg = <0>;
|
|
|
|
#qcom,smem-state-cells = <1>;
|
|
};
|
|
|
|
wcnss_smsm: wcnss@7 {
|
|
reg = <7>;
|
|
interrupts = <0 144 1>;
|
|
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
};
|
|
};
|