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:
Definition: must be one of:"qcom,smsm"
qcom,ipc-N:
Usage: required
Value type:
Definition: three entries specifying the outgoing ipc bit used forsignaling 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:
Definition: identifier of the local processor in the list of hosts, orin other words specifier of the column in the subscription matrix representing the local processor defaults to host 0
#address-cells:
Usage: required
Value type:
Definition: must be 1#size-cells:
Usage: required
Value type:
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:
Definition: specifies the offset, in words, of the first bit for thisentry
#qcom,smem-state-cells:
Usage: required for local entry
Value type:
Definition: must be 1 - denotes bit numberinterrupt-controller:
Usage: required for remote entries
Value type:
Definition: marks the entry as a interrupt-controller and the state bitsto belong to a remote processor
#interrupt-cells:
Usage: required for remote entries
Value type:
Definition: must be 2 - denotes bit number and IRQ flagsinterrupts:
Usage: required for remote entries
Value type:
Definition: one entry specifying remote IRQ used by the remote processorto 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>;
};
};