xref: /linux/Documentation/devicetree/bindings/interrupt-controller/fsl,mu-msi.yaml (revision c771600c6af14749609b49565ffb4cac2959710d)
1*7c025238SFrank Li# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*7c025238SFrank Li%YAML 1.2
3*7c025238SFrank Li---
4*7c025238SFrank Li$id: http://devicetree.org/schemas/interrupt-controller/fsl,mu-msi.yaml#
5*7c025238SFrank Li$schema: http://devicetree.org/meta-schemas/core.yaml#
6*7c025238SFrank Li
7*7c025238SFrank Lititle: Freescale/NXP i.MX Messaging Unit (MU) work as msi controller
8*7c025238SFrank Li
9*7c025238SFrank Limaintainers:
10*7c025238SFrank Li  - Frank Li <Frank.Li@nxp.com>
11*7c025238SFrank Li
12*7c025238SFrank Lidescription: |
13*7c025238SFrank Li  The Messaging Unit module enables two processors within the SoC to
14*7c025238SFrank Li  communicate and coordinate by passing messages (e.g. data, status
15*7c025238SFrank Li  and control) through the MU interface. The MU also provides the ability
16*7c025238SFrank Li  for one processor (A side) to signal the other processor (B side) using
17*7c025238SFrank Li  interrupts.
18*7c025238SFrank Li
19*7c025238SFrank Li  Because the MU manages the messaging between processors, the MU uses
20*7c025238SFrank Li  different clocks (from each side of the different peripheral buses).
21*7c025238SFrank Li  Therefore, the MU must synchronize the accesses from one side to the
22*7c025238SFrank Li  other. The MU accomplishes synchronization using two sets of matching
23*7c025238SFrank Li  registers (Processor A-side, Processor B-side).
24*7c025238SFrank Li
25*7c025238SFrank Li  MU can work as msi interrupt controller to do doorbell
26*7c025238SFrank Li
27*7c025238SFrank LiallOf:
28*7c025238SFrank Li  - $ref: /schemas/interrupt-controller/msi-controller.yaml#
29*7c025238SFrank Li
30*7c025238SFrank Liproperties:
31*7c025238SFrank Li  compatible:
32*7c025238SFrank Li    enum:
33*7c025238SFrank Li      - fsl,imx6sx-mu-msi
34*7c025238SFrank Li      - fsl,imx7ulp-mu-msi
35*7c025238SFrank Li      - fsl,imx8ulp-mu-msi
36*7c025238SFrank Li      - fsl,imx8ulp-mu-msi-s4
37*7c025238SFrank Li
38*7c025238SFrank Li  reg:
39*7c025238SFrank Li    items:
40*7c025238SFrank Li      - description: a side register base address
41*7c025238SFrank Li      - description: b side register base address
42*7c025238SFrank Li
43*7c025238SFrank Li  reg-names:
44*7c025238SFrank Li    items:
45*7c025238SFrank Li      - const: processor-a-side
46*7c025238SFrank Li      - const: processor-b-side
47*7c025238SFrank Li
48*7c025238SFrank Li  interrupts:
49*7c025238SFrank Li    description: a side interrupt number.
50*7c025238SFrank Li    maxItems: 1
51*7c025238SFrank Li
52*7c025238SFrank Li  clocks:
53*7c025238SFrank Li    maxItems: 1
54*7c025238SFrank Li
55*7c025238SFrank Li  power-domains:
56*7c025238SFrank Li    items:
57*7c025238SFrank Li      - description: a side power domain
58*7c025238SFrank Li      - description: b side power domain
59*7c025238SFrank Li
60*7c025238SFrank Li  power-domain-names:
61*7c025238SFrank Li    items:
62*7c025238SFrank Li      - const: processor-a-side
63*7c025238SFrank Li      - const: processor-b-side
64*7c025238SFrank Li
65*7c025238SFrank Li  msi-controller: true
66*7c025238SFrank Li
67*7c025238SFrank Li  "#msi-cells":
68*7c025238SFrank Li    const: 0
69*7c025238SFrank Li
70*7c025238SFrank Lirequired:
71*7c025238SFrank Li  - compatible
72*7c025238SFrank Li  - reg
73*7c025238SFrank Li  - interrupts
74*7c025238SFrank Li  - msi-controller
75*7c025238SFrank Li  - "#msi-cells"
76*7c025238SFrank Li
77*7c025238SFrank LiadditionalProperties: false
78*7c025238SFrank Li
79*7c025238SFrank Liexamples:
80*7c025238SFrank Li  - |
81*7c025238SFrank Li    #include <dt-bindings/interrupt-controller/arm-gic.h>
82*7c025238SFrank Li    #include <dt-bindings/firmware/imx/rsrc.h>
83*7c025238SFrank Li
84*7c025238SFrank Li    msi-controller@5d270000 {
85*7c025238SFrank Li        compatible = "fsl,imx6sx-mu-msi";
86*7c025238SFrank Li        msi-controller;
87*7c025238SFrank Li        #msi-cells = <0>;
88*7c025238SFrank Li        reg = <0x5d270000 0x10000>,     /* A side */
89*7c025238SFrank Li              <0x5d300000 0x10000>;     /* B side */
90*7c025238SFrank Li        reg-names = "processor-a-side", "processor-b-side";
91*7c025238SFrank Li        interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>;
92*7c025238SFrank Li        power-domains = <&pd IMX_SC_R_MU_12A>,
93*7c025238SFrank Li                        <&pd IMX_SC_R_MU_12B>;
94*7c025238SFrank Li        power-domain-names = "processor-a-side", "processor-b-side";
95*7c025238SFrank Li    };
96