blob: 141d666dc3f7b5b7eb47c01f4a7f6cef3fc9745e [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,smp2p.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm Shared Memory Point 2 Point
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 Point to Point (SMP2P) protocol facilitates communication
16 of a single 32-bit value between two processors. Each value has a single
17 writer (the local side) and a single reader (the remote side). Values are
18 uniquely identified in the system by the directed edge (local processor ID to
19 remote processor ID) and a string identifier.
20
21properties:
22 compatible:
23 const: qcom,smp2p
24
25 interrupts:
26 maxItems: 1
27
28 mboxes:
29 maxItems: 1
30 description:
31 Reference to the mailbox representing the outgoing doorbell in APCS for
32 this client.
33
34 qcom,ipc:
35 $ref: /schemas/types.yaml#/definitions/phandle-array
36 items:
37 - items:
38 - description: phandle to a syscon node representing the APCS registers
39 - description: u32 representing offset to the register within the syscon
40 - description: u32 representing the ipc bit within the register
41 description:
42 Three entries specifying the outgoing ipc bit used for signaling the
43 remote end of the smp2p edge.
Tom Rini6b642ac2024-10-01 12:20:28 -060044 deprecated: true
Tom Rini53633a82024-02-29 12:33:36 -050045
46 qcom,local-pid:
47 $ref: /schemas/types.yaml#/definitions/uint32
48 description:
49 The identifier of the local endpoint of this edge.
50
51 qcom,remote-pid:
52 $ref: /schemas/types.yaml#/definitions/uint32
53 description:
54 The identifier of the remote endpoint of this edge.
55
56 qcom,smem:
57 $ref: /schemas/types.yaml#/definitions/uint32-array
58 items:
59 maxItems: 2
60 description:
61 Two identifiers of the inbound and outbound smem items used for this edge.
62
63patternProperties:
64 "^master-kernel|slave-kernel|ipa-ap-to-modem|ipa-modem-to-ap|wlan-ap-to-wpss|wlan-wpss-to-ap$":
65 type: object
66 description:
67 Each SMP2P pair contain a set of inbound and outbound entries, these are
68 described in subnodes of the smp2p device node. The node names are not
69 important.
70
71 properties:
72 interrupt-controller:
73 description:
74 Marks the entry as inbound; the node should be specified as a two
75 cell interrupt-controller. If not specified this node will denote
76 the outgoing entry.
77
78 '#interrupt-cells':
79 const: 2
80
81 qcom,entry-name:
82 $ref: /schemas/types.yaml#/definitions/string
83 description:
84 The name of this entry, for inbound entries this will be used to
85 match against the remotely allocated entry and for outbound entries
86 this name is used for allocating entries.
87
88 '#qcom,smem-state-cells':
89 $ref: /schemas/types.yaml#/definitions/uint32
90 const: 1
91 description:
92 Required for outgoing entries.
93
94 required:
95 - qcom,entry-name
96
97 oneOf:
98 - required:
99 - interrupt-controller
100 - '#interrupt-cells'
101 - required:
102 - '#qcom,smem-state-cells'
103
104 additionalProperties: false
105
106required:
107 - compatible
108 - interrupts
109 - qcom,local-pid
110 - qcom,remote-pid
111 - qcom,smem
112
113oneOf:
114 - required:
115 - mboxes
116 - required:
117 - qcom,ipc
118
119additionalProperties: false
120
121examples:
122 # The following example shows the SMP2P setup with the wireless processor,
123 # defined from the 8974 apps processor's point-of-view. It encompasses one
124 # inbound and one outbound entry.
125 - |
126 #include <dt-bindings/interrupt-controller/arm-gic.h>
127
128 shared-memory {
129 compatible = "qcom,smp2p";
130 qcom,smem = <431>, <451>;
131 interrupts = <GIC_SPI 143 IRQ_TYPE_EDGE_RISING>;
Tom Rini6b642ac2024-10-01 12:20:28 -0600132 mboxes = <&apcs 18>;
Tom Rini53633a82024-02-29 12:33:36 -0500133 qcom,local-pid = <0>;
134 qcom,remote-pid = <4>;
135
136 wcnss_smp2p_out: master-kernel {
137 qcom,entry-name = "master-kernel";
138 #qcom,smem-state-cells = <1>;
139 };
140
141 wcnss_smp2p_in: slave-kernel {
142 qcom,entry-name = "slave-kernel";
143 interrupt-controller;
144 #interrupt-cells = <2>;
145 };
146 };