100 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
 | 
						|
%YAML 1.2
 | 
						|
---
 | 
						|
$id: http://devicetree.org/schemas/interrupt-controller/fsl,mu-msi.yaml#
 | 
						|
$schema: http://devicetree.org/meta-schemas/core.yaml#
 | 
						|
 | 
						|
title: Freescale/NXP i.MX Messaging Unit (MU) work as msi controller
 | 
						|
 | 
						|
maintainers:
 | 
						|
  - Frank Li <Frank.Li@nxp.com>
 | 
						|
 | 
						|
description: |
 | 
						|
  The Messaging Unit module enables two processors within the SoC to
 | 
						|
  communicate and coordinate by passing messages (e.g. data, status
 | 
						|
  and control) through the MU interface. The MU also provides the ability
 | 
						|
  for one processor (A side) to signal the other processor (B side) using
 | 
						|
  interrupts.
 | 
						|
 | 
						|
  Because the MU manages the messaging between processors, the MU uses
 | 
						|
  different clocks (from each side of the different peripheral buses).
 | 
						|
  Therefore, the MU must synchronize the accesses from one side to the
 | 
						|
  other. The MU accomplishes synchronization using two sets of matching
 | 
						|
  registers (Processor A-side, Processor B-side).
 | 
						|
 | 
						|
  MU can work as msi interrupt controller to do doorbell  
 | 
						|
 | 
						|
allOf:
 | 
						|
  - $ref: /schemas/interrupt-controller/msi-controller.yaml#
 | 
						|
 | 
						|
properties:
 | 
						|
  compatible:
 | 
						|
    enum:
 | 
						|
      - fsl,imx6sx-mu-msi
 | 
						|
      - fsl,imx7ulp-mu-msi
 | 
						|
      - fsl,imx8ulp-mu-msi
 | 
						|
      - fsl,imx8ulp-mu-msi-s4
 | 
						|
 | 
						|
  reg:
 | 
						|
    items:
 | 
						|
      - description: a side register base address
 | 
						|
      - description: b side register base address
 | 
						|
 | 
						|
  reg-names:
 | 
						|
    items:
 | 
						|
      - const: processor-a-side
 | 
						|
      - const: processor-b-side
 | 
						|
 | 
						|
  interrupts:
 | 
						|
    description: a side interrupt number.
 | 
						|
    maxItems: 1
 | 
						|
 | 
						|
  clocks:
 | 
						|
    maxItems: 1
 | 
						|
 | 
						|
  power-domains:
 | 
						|
    items:
 | 
						|
      - description: a side power domain
 | 
						|
      - description: b side power domain
 | 
						|
 | 
						|
  power-domain-names:
 | 
						|
    items:
 | 
						|
      - const: processor-a-side
 | 
						|
      - const: processor-b-side
 | 
						|
 | 
						|
  interrupt-controller: true
 | 
						|
 | 
						|
  msi-controller: true
 | 
						|
 | 
						|
  "#msi-cells":
 | 
						|
    const: 0
 | 
						|
 | 
						|
required:
 | 
						|
  - compatible
 | 
						|
  - reg
 | 
						|
  - interrupts
 | 
						|
  - interrupt-controller
 | 
						|
  - msi-controller
 | 
						|
  - "#msi-cells"
 | 
						|
 | 
						|
additionalProperties: false
 | 
						|
 | 
						|
examples:
 | 
						|
  - |
 | 
						|
    #include <dt-bindings/interrupt-controller/arm-gic.h>
 | 
						|
    #include <dt-bindings/firmware/imx/rsrc.h>
 | 
						|
 | 
						|
    msi-controller@5d270000 {
 | 
						|
        compatible = "fsl,imx6sx-mu-msi";
 | 
						|
        msi-controller;
 | 
						|
        #msi-cells = <0>;
 | 
						|
        interrupt-controller;
 | 
						|
        reg = <0x5d270000 0x10000>,     /* A side */
 | 
						|
              <0x5d300000 0x10000>;     /* B side */
 | 
						|
        reg-names = "processor-a-side", "processor-b-side";
 | 
						|
        interrupts = <GIC_SPI 191 IRQ_TYPE_LEVEL_HIGH>;
 | 
						|
        power-domains = <&pd IMX_SC_R_MU_12A>,
 | 
						|
                        <&pd IMX_SC_R_MU_12B>;
 | 
						|
        power-domain-names = "processor-a-side", "processor-b-side";
 | 
						|
    };    
 |