xref: /linux/Documentation/devicetree/bindings/mailbox/fsl,mu.yaml (revision 6315d93541f8a5f77c5ef5c4f25233e66d189603)
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/mailbox/fsl,mu.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: NXP i.MX Messaging Unit (MU)
8
9maintainers:
10  - Dong Aisheng <aisheng.dong@nxp.com>
11
12description: |
13  The Messaging Unit module enables two processors within the SoC to
14  communicate and coordinate by passing messages (e.g. data, status
15  and control) through the MU interface. The MU also provides the ability
16  for one processor to signal the other processor using interrupts.
17
18  Because the MU manages the messaging between processors, the MU uses
19  different clocks (from each side of the different peripheral buses).
20  Therefore, the MU must synchronize the accesses from one side to the
21  other. The MU accomplishes synchronization using two sets of matching
22  registers (Processor A-facing, Processor B-facing).
23
24properties:
25  compatible:
26    oneOf:
27      - const: fsl,imx6sx-mu
28      - const: fsl,imx7ulp-mu
29      - const: fsl,imx8ulp-mu
30      - const: fsl,imx8-mu-scu
31      - const: fsl,imx8-mu-seco
32      - const: fsl,imx8ulp-mu-s4
33      - const: fsl,imx93-mu-s4
34      - const: fsl,imx95-mu
35      - const: fsl,imx95-mu-ele
36      - const: fsl,imx95-mu-v2x
37      - items:
38          - const: fsl,imx93-mu
39          - const: fsl,imx8ulp-mu
40      - items:
41          - enum:
42              - fsl,imx7s-mu
43              - fsl,imx8mq-mu
44              - fsl,imx8mm-mu
45              - fsl,imx8mn-mu
46              - fsl,imx8mp-mu
47              - fsl,imx8qm-mu
48              - fsl,imx8qxp-mu
49          - const: fsl,imx6sx-mu
50      - description: To communicate with i.MX8 SCU with fast IPC
51        items:
52          - const: fsl,imx8-mu-scu
53          - enum:
54              - fsl,imx8qm-mu
55              - fsl,imx8qxp-mu
56          - const: fsl,imx6sx-mu
57      - items:
58          - enum:
59              - fsl,imx94-mu
60          - const: fsl,imx95-mu
61
62  reg:
63    maxItems: 1
64
65  interrupts:
66    minItems: 1
67    maxItems: 2
68
69  interrupt-names:
70    minItems: 1
71    items:
72      - const: tx
73      - const: rx
74
75  "#mbox-cells":
76    description: |
77      <&phandle type channel>
78      phandle   : Label name of controller
79      type      : Channel type
80      channel   : Channel number
81
82      This MU support 6 type of unidirectional channels, each type
83      has 4 channels except RST channel which only has 1 channel.
84      A total of 21 channels.  Following types are
85      supported:
86      0 - TX channel with 32bit transmit register and IRQ transmit
87          acknowledgment support.
88      1 - RX channel with 32bit receive register and IRQ support
89      2 - TX doorbell channel. Without own register and no ACK support.
90      3 - RX doorbell channel.
91      4 - RST channel
92      5 - Tx doorbell channel. With S/W ACK from the other side.
93    const: 2
94
95  clocks:
96    maxItems: 1
97
98  fsl,mu-side-b:
99    description: boolean, if present, means it is for side B MU.
100    type: boolean
101
102  power-domains:
103    maxItems: 1
104
105  ranges: true
106
107  '#address-cells':
108    const: 1
109
110  '#size-cells':
111    const: 1
112
113patternProperties:
114  "^sram@[a-f0-9]+":
115    $ref: /schemas/sram/sram.yaml#
116    unevaluatedProperties: false
117
118required:
119  - compatible
120  - reg
121  - interrupts
122  - "#mbox-cells"
123
124allOf:
125  - if:
126      properties:
127        compatible:
128          enum:
129            - fsl,imx93-mu-s4
130    then:
131      properties:
132        interrupt-names:
133          minItems: 2
134        interrupts:
135          minItems: 2
136
137    else:
138      properties:
139        interrupts:
140          maxItems: 1
141      not:
142        required:
143          - interrupt-names
144
145  - if:
146      not:
147        properties:
148          compatible:
149            contains:
150              const: fsl,imx95-mu
151    then:
152      patternProperties:
153        "^sram@[a-f0-9]+": false
154
155additionalProperties: false
156
157examples:
158  - |
159    #include <dt-bindings/interrupt-controller/arm-gic.h>
160
161    mailbox@5d1b0000 {
162        compatible = "fsl,imx8qxp-mu", "fsl,imx6sx-mu";
163        reg = <0x5d1b0000 0x10000>;
164        interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
165        #mbox-cells = <2>;
166    };
167
168  - |
169    #include <dt-bindings/interrupt-controller/arm-gic.h>
170
171    mailbox@445b0000 {
172        compatible = "fsl,imx95-mu";
173        reg = <0x445b0000 0x10000>;
174        ranges;
175        interrupts = <GIC_SPI 226 IRQ_TYPE_LEVEL_HIGH>;
176        #address-cells = <1>;
177        #size-cells = <1>;
178        #mbox-cells = <2>;
179
180        sram@445b1000 {
181            compatible = "mmio-sram";
182            reg = <0x445b1000 0x400>;
183            ranges = <0x0 0x445b1000 0x400>;
184            #address-cells = <1>;
185            #size-cells = <1>;
186
187            scmi-sram-section@0 {
188                compatible = "arm,scmi-shmem";
189                reg = <0x0 0x80>;
190            };
191
192            scmi-sram-section@80 {
193                compatible = "arm,scmi-shmem";
194                reg = <0x80 0x80>;
195            };
196        };
197    };
198