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