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