xref: /openbmc/linux/Documentation/devicetree/bindings/soc/qcom/qcom,smp2p.yaml (revision 7ae9fb1b7ecbb5d85d07857943f677fd1a559b18)
1548f8b21SKrzysztof Kozlowski# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2548f8b21SKrzysztof Kozlowski%YAML 1.2
3548f8b21SKrzysztof Kozlowski---
4548f8b21SKrzysztof Kozlowski$id: http://devicetree.org/schemas/soc/qcom/qcom,smp2p.yaml#
5548f8b21SKrzysztof Kozlowski$schema: http://devicetree.org/meta-schemas/core.yaml#
6548f8b21SKrzysztof Kozlowski
7548f8b21SKrzysztof Kozlowskititle: Qualcomm Shared Memory Point 2 Point
8548f8b21SKrzysztof Kozlowski
9548f8b21SKrzysztof Kozlowskimaintainers:
10548f8b21SKrzysztof Kozlowski  - Andy Gross <agross@kernel.org>
11548f8b21SKrzysztof Kozlowski  - Bjorn Andersson <bjorn.andersson@linaro.org>
12548f8b21SKrzysztof Kozlowski  - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
13548f8b21SKrzysztof Kozlowski
14548f8b21SKrzysztof Kozlowskidescription:
15548f8b21SKrzysztof Kozlowski  The Shared Memory Point to Point (SMP2P) protocol facilitates communication
16548f8b21SKrzysztof Kozlowski  of a single 32-bit value between two processors.  Each value has a single
17548f8b21SKrzysztof Kozlowski  writer (the local side) and a single reader (the remote side).  Values are
18548f8b21SKrzysztof Kozlowski  uniquely identified in the system by the directed edge (local processor ID to
19548f8b21SKrzysztof Kozlowski  remote processor ID) and a string identifier.
20548f8b21SKrzysztof Kozlowski
21548f8b21SKrzysztof Kozlowskiproperties:
22548f8b21SKrzysztof Kozlowski  compatible:
23548f8b21SKrzysztof Kozlowski    const: qcom,smp2p
24548f8b21SKrzysztof Kozlowski
25548f8b21SKrzysztof Kozlowski  interrupts:
26548f8b21SKrzysztof Kozlowski    maxItems: 1
27548f8b21SKrzysztof Kozlowski
28548f8b21SKrzysztof Kozlowski  mboxes:
29548f8b21SKrzysztof Kozlowski    maxItems: 1
30548f8b21SKrzysztof Kozlowski    description:
31548f8b21SKrzysztof Kozlowski      Reference to the mailbox representing the outgoing doorbell in APCS for
32548f8b21SKrzysztof Kozlowski      this client.
33548f8b21SKrzysztof Kozlowski
34548f8b21SKrzysztof Kozlowski  qcom,ipc:
35548f8b21SKrzysztof Kozlowski    $ref: /schemas/types.yaml#/definitions/phandle-array
36548f8b21SKrzysztof Kozlowski    items:
37548f8b21SKrzysztof Kozlowski      - items:
38548f8b21SKrzysztof Kozlowski          - description: phandle to a syscon node representing the APCS registers
39548f8b21SKrzysztof Kozlowski          - description: u32 representing offset to the register within the syscon
40548f8b21SKrzysztof Kozlowski          - description: u32 representing the ipc bit within the register
41548f8b21SKrzysztof Kozlowski    description:
42548f8b21SKrzysztof Kozlowski      Three entries specifying the outgoing ipc bit used for signaling the
43548f8b21SKrzysztof Kozlowski      remote end of the smp2p edge.
44548f8b21SKrzysztof Kozlowski
45548f8b21SKrzysztof Kozlowski  qcom,local-pid:
46548f8b21SKrzysztof Kozlowski    $ref: /schemas/types.yaml#/definitions/uint32
47548f8b21SKrzysztof Kozlowski    description:
48548f8b21SKrzysztof Kozlowski      The identifier of the local endpoint of this edge.
49548f8b21SKrzysztof Kozlowski
50548f8b21SKrzysztof Kozlowski  qcom,remote-pid:
51548f8b21SKrzysztof Kozlowski    $ref: /schemas/types.yaml#/definitions/uint32
52548f8b21SKrzysztof Kozlowski    description:
53548f8b21SKrzysztof Kozlowski      The identifier of the remote endpoint of this edge.
54548f8b21SKrzysztof Kozlowski
55548f8b21SKrzysztof Kozlowski  qcom,smem:
56548f8b21SKrzysztof Kozlowski    $ref: /schemas/types.yaml#/definitions/uint32-array
57548f8b21SKrzysztof Kozlowski    items:
58548f8b21SKrzysztof Kozlowski      maxItems: 2
59548f8b21SKrzysztof Kozlowski    description:
60548f8b21SKrzysztof Kozlowski      Two identifiers of the inbound and outbound smem items used for this edge.
61548f8b21SKrzysztof Kozlowski
62548f8b21SKrzysztof KozlowskipatternProperties:
63*c0ca67bbSManikanta Pubbisetty  "^master-kernel|slave-kernel|ipa-ap-to-modem|ipa-modem-to-ap|wlan-ap-to-wpss|wlan-wpss-to-ap$":
64548f8b21SKrzysztof Kozlowski    type: object
65548f8b21SKrzysztof Kozlowski    description:
66548f8b21SKrzysztof Kozlowski      Each SMP2P pair contain a set of inbound and outbound entries, these are
67548f8b21SKrzysztof Kozlowski      described in subnodes of the smp2p device node. The node names are not
68548f8b21SKrzysztof Kozlowski      important.
69548f8b21SKrzysztof Kozlowski
70548f8b21SKrzysztof Kozlowski    properties:
71548f8b21SKrzysztof Kozlowski      interrupt-controller:
72548f8b21SKrzysztof Kozlowski        description:
73548f8b21SKrzysztof Kozlowski          Marks the entry as inbound; the node should be specified as a two
74548f8b21SKrzysztof Kozlowski          cell interrupt-controller.  If not specified this node will denote
75548f8b21SKrzysztof Kozlowski          the outgoing entry.
76548f8b21SKrzysztof Kozlowski
77548f8b21SKrzysztof Kozlowski      '#interrupt-cells':
78548f8b21SKrzysztof Kozlowski        const: 2
79548f8b21SKrzysztof Kozlowski
80548f8b21SKrzysztof Kozlowski      qcom,entry-name:
81548f8b21SKrzysztof Kozlowski        $ref: /schemas/types.yaml#/definitions/string
82548f8b21SKrzysztof Kozlowski        description:
83548f8b21SKrzysztof Kozlowski          The name of this entry, for inbound entries this will be used to
84548f8b21SKrzysztof Kozlowski          match against the remotely allocated entry and for outbound entries
85548f8b21SKrzysztof Kozlowski          this name is used for allocating entries.
86548f8b21SKrzysztof Kozlowski
87548f8b21SKrzysztof Kozlowski      '#qcom,smem-state-cells':
88548f8b21SKrzysztof Kozlowski        $ref: /schemas/types.yaml#/definitions/uint32
89548f8b21SKrzysztof Kozlowski        const: 1
90548f8b21SKrzysztof Kozlowski        description:
91548f8b21SKrzysztof Kozlowski          Required for outgoing entries.
92548f8b21SKrzysztof Kozlowski
93548f8b21SKrzysztof Kozlowski    required:
94548f8b21SKrzysztof Kozlowski      - qcom,entry-name
95548f8b21SKrzysztof Kozlowski
96548f8b21SKrzysztof Kozlowski    oneOf:
97548f8b21SKrzysztof Kozlowski      - required:
98548f8b21SKrzysztof Kozlowski          - interrupt-controller
99548f8b21SKrzysztof Kozlowski          - '#interrupt-cells'
100548f8b21SKrzysztof Kozlowski      - required:
101548f8b21SKrzysztof Kozlowski          - '#qcom,smem-state-cells'
102548f8b21SKrzysztof Kozlowski
103548f8b21SKrzysztof Kozlowski    additionalProperties: false
104548f8b21SKrzysztof Kozlowski
105548f8b21SKrzysztof Kozlowskirequired:
106548f8b21SKrzysztof Kozlowski  - compatible
107548f8b21SKrzysztof Kozlowski  - interrupts
108548f8b21SKrzysztof Kozlowski  - qcom,local-pid
109548f8b21SKrzysztof Kozlowski  - qcom,remote-pid
110548f8b21SKrzysztof Kozlowski  - qcom,smem
111548f8b21SKrzysztof Kozlowski
112548f8b21SKrzysztof KozlowskioneOf:
113548f8b21SKrzysztof Kozlowski  - required:
114548f8b21SKrzysztof Kozlowski      - mboxes
115548f8b21SKrzysztof Kozlowski  - required:
116548f8b21SKrzysztof Kozlowski      - qcom,ipc
117548f8b21SKrzysztof Kozlowski
118548f8b21SKrzysztof KozlowskiadditionalProperties: false
119548f8b21SKrzysztof Kozlowski
120548f8b21SKrzysztof Kozlowskiexamples:
121548f8b21SKrzysztof Kozlowski  # The following example shows the SMP2P setup with the wireless processor,
122548f8b21SKrzysztof Kozlowski  # defined from the 8974 apps processor's point-of-view. It encompasses one
123548f8b21SKrzysztof Kozlowski  # inbound and one outbound entry.
124548f8b21SKrzysztof Kozlowski  - |
125548f8b21SKrzysztof Kozlowski    #include <dt-bindings/interrupt-controller/arm-gic.h>
126548f8b21SKrzysztof Kozlowski
127548f8b21SKrzysztof Kozlowski    shared-memory {
128548f8b21SKrzysztof Kozlowski        compatible = "qcom,smp2p";
129548f8b21SKrzysztof Kozlowski        qcom,smem = <431>, <451>;
130548f8b21SKrzysztof Kozlowski        interrupts = <GIC_SPI 143 IRQ_TYPE_EDGE_RISING>;
131548f8b21SKrzysztof Kozlowski        qcom,ipc = <&apcs 8 18>;
132548f8b21SKrzysztof Kozlowski        qcom,local-pid = <0>;
133548f8b21SKrzysztof Kozlowski        qcom,remote-pid = <4>;
134548f8b21SKrzysztof Kozlowski
135548f8b21SKrzysztof Kozlowski        wcnss_smp2p_out: master-kernel {
136548f8b21SKrzysztof Kozlowski            qcom,entry-name = "master-kernel";
137548f8b21SKrzysztof Kozlowski            #qcom,smem-state-cells = <1>;
138548f8b21SKrzysztof Kozlowski        };
139548f8b21SKrzysztof Kozlowski
140548f8b21SKrzysztof Kozlowski        wcnss_smp2p_in: slave-kernel {
141548f8b21SKrzysztof Kozlowski            qcom,entry-name = "slave-kernel";
142548f8b21SKrzysztof Kozlowski            interrupt-controller;
143548f8b21SKrzysztof Kozlowski            #interrupt-cells = <2>;
144548f8b21SKrzysztof Kozlowski        };
145548f8b21SKrzysztof Kozlowski    };
146