-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dt-bindings: irqchip: Describe the IMX MU block as a MSI controller
I.MX MU supports generating IRQs by writing to a register. Describe its use as a MSI controller so that other blocks (such as a PCI EP) can use it directly. Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: Frank Li <Frank.Li@nxp.com> [maz: commit message] Signed-off-by: Marc Zyngier <maz@kernel.org> Link: https://lore.kernel.org/r/20220922161246.20586-5-Frank.Li@nxp.com
- Loading branch information
Frank Li
authored and
Marc Zyngier
committed
Sep 29, 2022
1 parent
70afdab
commit 7c02523
Showing
1 changed file
with
99 additions
and
0 deletions.
There are no files selected for viewing
99 changes: 99 additions & 0 deletions
99
Documentation/devicetree/bindings/interrupt-controller/fsl,mu-msi.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,99 @@ | ||
# 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"; | ||
}; |