blob: db67cf043256145aae41ae35782d3766d8879234 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/soc/qcom/qcom,smsm.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm Shared Memory State Machine
8
9maintainers:
10 - Andy Gross <agross@kernel.org>
11 - Bjorn Andersson <bjorn.andersson@linaro.org>
12 - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
13
14description:
15 The Shared Memory State Machine facilitates broadcasting of single bit state
16 information between the processors in a Qualcomm SoC. Each processor is
17 assigned 32 bits of state that can be modified. A processor can through a
18 matrix of bitmaps signal subscription of notifications upon changes to a
19 certain bit owned by a certain remote processor.
20
21properties:
22 compatible:
23 const: qcom,smsm
24
25 '#address-cells':
26 const: 1
27
28 qcom,local-host:
29 $ref: /schemas/types.yaml#/definitions/uint32
30 default: 0
31 description:
32 Identifier of the local processor in the list of hosts, or in other words
33 specifier of the column in the subscription matrix representing the local
34 processor.
35
36 '#size-cells':
37 const: 0
38
39patternProperties:
40 "^qcom,ipc-[1-4]$":
41 $ref: /schemas/types.yaml#/definitions/phandle-array
42 items:
43 - items:
44 - description: phandle to a syscon node representing the APCS registers
45 - description: u32 representing offset to the register within the syscon
46 - description: u32 representing the ipc bit within the register
47 description:
48 Three entries specifying the outgoing ipc bit used for signaling the N:th
49 remote processor.
50
51 "@[0-9a-f]$":
52 type: object
53 description:
54 Each processor's state bits are described by a subnode of the SMSM device
55 node. Nodes can either be flagged as an interrupt-controller to denote a
56 remote processor's state bits or the local processors bits. The node
57 names are not important.
58
59 properties:
60 reg:
61 maxItems: 1
62
63 interrupt-controller:
64 description:
65 Marks the entry as a interrupt-controller and the state bits to
66 belong to a remote processor.
67
68 '#interrupt-cells':
69 const: 2
70
71 interrupts:
72 maxItems: 1
73 description:
74 One entry specifying remote IRQ used by the remote processor to
75 signal changes of its state bits.
76
77 '#qcom,smem-state-cells':
78 $ref: /schemas/types.yaml#/definitions/uint32
79 const: 1
80 description:
81 Required for local entry. Denotes bit number.
82
83 required:
84 - reg
85
86 oneOf:
87 - required:
88 - '#qcom,smem-state-cells'
89 - required:
90 - interrupt-controller
91 - '#interrupt-cells'
92 - interrupts
93
94 additionalProperties: false
95
96required:
97 - compatible
98 - '#address-cells'
99 - '#size-cells'
100
101anyOf:
102 - required:
103 - qcom,ipc-1
104 - required:
105 - qcom,ipc-2
106 - required:
107 - qcom,ipc-3
108 - required:
109 - qcom,ipc-4
110
111additionalProperties: false
112
113examples:
114 # The following example shows the SMEM setup for controlling properties of
115 # the wireless processor, defined from the 8974 apps processor's
116 # point-of-view. It encompasses one outbound entry and the outgoing interrupt
117 # for the wireless processor.
118 - |
119 #include <dt-bindings/interrupt-controller/arm-gic.h>
120
121 shared-memory {
122 compatible = "qcom,smsm";
123 #address-cells = <1>;
124 #size-cells = <0>;
125 qcom,ipc-3 = <&apcs 8 19>;
126
127 apps_smsm: apps@0 {
128 reg = <0>;
129 #qcom,smem-state-cells = <1>;
130 };
131
132 wcnss_smsm: wcnss@7 {
133 reg = <7>;
134 interrupts = <GIC_SPI 144 IRQ_TYPE_EDGE_RISING>;
135 interrupt-controller;
136 #interrupt-cells = <2>;
137 };
138 };