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