Merge tag 'linux-kselftest-kunit-fixes-5.11-rc3' of git://git.kernel.org/pub/scm...
[linux/fpc-iii.git] / Documentation / devicetree / bindings / soc / qcom / qcom,smsm.txt
blob2993b5a97dd648c1da9c560bc431aa5b99ea6615
1 Qualcomm Shared Memory State Machine
3 The Shared Memory State Machine facilitates broadcasting of single bit state
4 information between the processors in a Qualcomm SoC. Each processor is
5 assigned 32 bits of state that can be modified. A processor can through a
6 matrix of bitmaps signal subscription of notifications upon changes to a
7 certain bit owned by a certain remote processor.
9 - compatible:
10         Usage: required
11         Value type: <string>
12         Definition: must be one of:
13                     "qcom,smsm"
15 - qcom,ipc-N:
16         Usage: required
17         Value type: <prop-encoded-array>
18         Definition: three entries specifying the outgoing ipc bit used for
19                     signaling the N:th remote processor
20                     - phandle to a syscon node representing the apcs registers
21                     - u32 representing offset to the register within the syscon
22                     - u32 representing the ipc bit within the register
24 - qcom,local-host:
25         Usage: optional
26         Value type: <u32>
27         Definition: identifier of the local processor in the list of hosts, or
28                     in other words specifier of the column in the subscription
29                     matrix representing the local processor
30                     defaults to host 0
32 - #address-cells:
33         Usage: required
34         Value type: <u32>
35         Definition: must be 1
37 - #size-cells:
38         Usage: required
39         Value type: <u32>
40         Definition: must be 0
42 = SUBNODES
43 Each processor's state bits are described by a subnode of the smsm device node.
44 Nodes can either be flagged as an interrupt-controller to denote a remote
45 processor's state bits or the local processors bits.  The node names are not
46 important.
48 - reg:
49         Usage: required
50         Value type: <u32>
51         Definition: specifies the offset, in words, of the first bit for this
52                     entry
54 - #qcom,smem-state-cells:
55         Usage: required for local entry
56         Value type: <u32>
57         Definition: must be 1 - denotes bit number
59 - interrupt-controller:
60         Usage: required for remote entries
61         Value type: <empty>
62         Definition: marks the entry as a interrupt-controller and the state bits
63                     to belong to a remote processor
65 - #interrupt-cells:
66         Usage: required for remote entries
67         Value type: <u32>
68         Definition: must be 2 - denotes bit number and IRQ flags
70 - interrupts:
71         Usage: required for remote entries
72         Value type: <prop-encoded-array>
73         Definition: one entry specifying remote IRQ used by the remote processor
74                     to signal changes of its state bits
77 = EXAMPLE
78 The following example shows the SMEM setup for controlling properties of the
79 wireless processor, defined from the 8974 apps processor's point-of-view. It
80 encompasses one outbound entry and the outgoing interrupt for the wireless
81 processor.
83 smsm {
84         compatible = "qcom,smsm";
86         #address-cells = <1>;
87         #size-cells = <0>;
89         qcom,ipc-3 = <&apcs 8 19>;
91         apps_smsm: apps@0 {
92                 reg = <0>;
94                 #qcom,smem-state-cells = <1>;
95         };
97         wcnss_smsm: wcnss@7 {
98                 reg = <7>;
99                 interrupts = <0 144 1>;
101                 interrupt-controller;
102                 #interrupt-cells = <2>;
103         };