Xilinx ZynqMP IPI Mailbox Controller Driver
Subsystems (3)
v5 cover Xilinx ZynqMP IPI Mailbox Controller Driver
Introduce mailbox controller driver for ZynqMP IPI(Inter-processor interrupt) IP core.
As the device tree bindings have been updated. Do not have "Reviewed-by" nor "Acked-by" in the dt-bindings commit.
v5:
- fix check patch warning on write a paragraph to describe the kconfig symbol.
v4:
- make IPI mailboxes as subnodes to the IPI agent device node to properly describe the hardware.
v3:
- add NULL entry to of_device_id of IPI controller
v2:
- change SPDX-License-Identifier license text style in .c file
- replace xlnx-ipi-ids with xlnx,ipi-ids
Wendy Liang (2):
mailbox: ZynqMP IPI mailbox controller
dt-bindings: mailbox: Add Xilinx IPI Mailbox
.../bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt | 128 ++++ drivers/mailbox/Kconfig | 9 + drivers/mailbox/Makefile | 2 + drivers/mailbox/zynqmp-ipi-mailbox.c | 762 +++++++++++++++++++++ include/linux/mailbox/zynqmp-ipi-message.h | 24 + 5 files changed, 925 insertions(+) create mode 100644 Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt create mode 100644 drivers/mailbox/zynqmp-ipi-mailbox.c create mode 100644 include/linux/mailbox/zynqmp-ipi-message.h
Signature · 1 line
2.7.4
PATCH v5 1/2 mailbox: ZynqMP IPI mailbox controller
This patch is to introduce ZynqMP IPI mailbox controller driver to use the ZynqMP IPI block as mailboxes.
--- drivers/mailbox/Kconfig | 9 + drivers/mailbox/Makefile | 2 + drivers/mailbox/zynqmp-ipi-mailbox.c | 762 +++++++++++++++++++++++++++++ include/linux/mailbox/zynqmp-ipi-message.h | 24 + 4 files changed, 797 insertions(+) create mode 100644 drivers/mailbox/zynqmp-ipi-mailbox.c create mode 100644 include/linux/mailbox/zynqmp-ipi-message.h
drivers/mailbox/Kconfig +9 -0
@@ -205,4 +205,13 @@ config MTK_CMDQ_MBOX mailbox driver. The CMDQ is used to help read/write registers with critical time limitation, such as updating display configuration during the vblank. + +config ZYNQMP_IPI_MBOX + tristate "Xilinx ZynqMP IPI Mailbox" + depends on ARCH_ZYNQMP && OF + help + Mailbox implementation for Xilinx ZynqMP IPI controller. It is used + to send notification or short message between processors on Xilinx + UltraScale+ MPSoC platforms. Say Y here if you want to have this + support. endif
drivers/mailbox/Makefile +2 -0
@@ -44,3 +44,5 @@ obj-$(CONFIG_TEGRA_HSP_MBOX) += tegra-hsp.o obj-$(CONFIG_STM32_IPCC) += stm32-ipcc.o obj-$(CONFIG_MTK_CMDQ_MBOX) += mtk-cmdq-mailbox.o + +obj-$(CONFIG_ZYNQMP_IPI_MBOX) += zynqmp-ipi-mailbox.o
drivers/mailbox/zynqmp-ipi-mailbox.c new file +762 -0
762 lines not on this page · raw message
include/linux/mailbox/zynqmp-ipi-message.h new file +24 -0
@@ -0,0 +1,24 @@ +/* SPDX-License-Identifier: GPL-2.0 */ +/* +* Copyright (C) 2017 Xilinx Inc. +* +*/ + +#ifndef _LINUX_ZYNQMP_IPI_MESSAGE_H_ +#define _LINUX_ZYNQMP_IPI_MESSAGE_H_ + +/** +* struct zynqmp_ipi_message - ZynqMP IPI message structure +* @len: Length of the request message +* @data: Request message +* +* This is the structure for data used in mbox_send_message +* the maximum length of data buffer is fixed to 12 bytes. +* Client is supposed to be aware of this. +*/ +struct zynqmp_ipi_message { +size_t len; +u8 data[0 ]; +}; + +#endif /* _LINUX_ZYNQMP_IPI_MESSAGE_H_ */
Signature · 1 line
2.7.4
PATCH v5 2/2 dt-bindings: mailbox: Add Xilinx IPI Mailbox
In reply to Wendy LiangXilinx ZynqMP IPI(Inter Processor Interrupt) is a hardware block in ZynqMP SoC used for the communication between various processor systems.
--- .../bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt | 128 +++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt new file +128 -0
@@ -0,0 +1,128 @@ +Xilinx IPI Mailbox Controller +======================================== + +The Xilinx IPI(Inter Processor Interrupt) mailbox controller is to manage +messaging between two Xilinx Zynq UltraScale+ MPSoC IPI agents. Each IPI +agent owns registers used for notification and buffers for message. + + +-------------------------------------+ + | Xilinx ZynqMP IPI Controller | + +-------------------------------------+ + +--------------------------------------------------+ +ATF | | + | | + | | + +--------------------------+ | + | | + | | + +--------------------------------------------------+ + +------------------------------------------+ + | +----------------+ +----------------+ | +Hardware | | IPI Agent | | IPI Buffers | | + | | Registers | | | | + | | | | | | + | +----------------+ +----------------+ | + | | + | Xilinx IPI Agent Block | + +------------------------------------------+ + + +Controller Device Node: +=========================== +Required properties: +-------------------- +IPI agent node: +- compatible: Shall be: "xlnx,zynqmp-ipi-mailbox" +- interrupt-parent: Phandle for the interrupt controller +- interrupts: Interrupt information corresponding to the + interrupt-names property. +- xlnx,ipi-id: local Xilinx IPI agent ID +- #address-cells: number of address cells of internal IPI mailbox nodes +- #size-cells: number of size cells of internal IPI mailbox nodes + +Internal IPI mailbox node: +- reg: IPI buffers address ranges +- reg-names: Names of the reg resources. It should have: + * local_request_region + - IPI request msg buffer written by local and read + by remote + * local_response_region + - IPI response msg buffer written by local and read + by remote + * remote_request_region + - IPI request msg buffer written by remote and read + by local + * remote_response_region + - IPI response msg buffer written by remote and read + by local +- #mbox-cells: Shall be 1. It contains: + * tx(0) or rx(1) channel +- xlnx,ipi-id: remote Xilinx IPI agent ID of which the mailbox is + connected to. + +Optional properties: +-------------------- +- method: The method of accessing the IPI agent registers. + Permitted values are: "smc" and "hvc". Default is + "smc". + +Client Device Node: +=========================== +Required properties: +-------------------- +- mboxes: Standard property to specify a mailbox + (See ./mailbox.txt) +- mbox-names: List of identifier strings for each mailbox + channel. + +Example: +=========================== + zynqmp_ipi { + compatible = "xlnx,zynqmp-ipi-mailbox"; + interrupt-parent = <&gic>; + interrupts = <0 29 4>; + xlnx,ipi-id = <0>; + #address-cells = <1>; + #size-cells = <1>; + + /* APU<->RPU0 IPI mailbox controller */ + ipi_mailbox_rpu0: mailbox at ff90400 { + compatible = "xlnx,zynqmp-ipi-mailbox"; + reg = <0xff990400 0x20>, + <0xff990420 0x20>, + <0xff990080 0x20>, + <0xff9900a0 0x20>; + reg-names = "local_request_region", + "local_response_region", + "remote_request_region", + "remote_response_region"; + #mbox-cells = <1>; + xlnx,ipi-id = <1>; + }; + /* APU<->RPU1 IPI mailbox controller */ + ipi_mailbox_rpu1: mailbox at ff990440 { + compatible = "xlnx,zynqmp-ipi-mailbox"; + reg = <0xff990440 0x20>, + <0xff990460 0x20>, + <0xff990280 0x20>, + <0xff9902a0 0x20>; + reg-names = "local_request_region", + "local_response_region", + "remote_request_region", + "remote_response_region"; + #mbox-cells = <1>; + xlnx,ipi-id = <2>; + }; + }; + rpu0 { + ... + mboxes = <&ipi_mailbox_rpu0 0>, + <&ipi_mailbox_rpu0 1>; + mbox-names = "tx", "rx"; + }; + rpu1 { + ... + mboxes = <&ipi_mailbox_rpu1 0>, + <&ipi_mailbox_rpu1 1>; + mbox-names = "tx", "rx"; + };
Signature · 1 line
2.7.4
RE: [PATCH v5 2/2] dt-bindings: mailbox: Add Xilinx IPI Mailbox
Ping, any comments?
Thanks,
Wendy
Quoted 160 lines
-----Original Message-----
From: Wendy Liang [mailto:wendy.liang at xilinx.com]
Sent: Monday, November 05, 2018 2:37 PM
To: jassisinghbrar at gmail.com; Michal Simek <[email protected]>; robh+dt at kernel.org; mark.rutland at arm.com
Cc: linux-kernel at vger.kernel.org; linux-arm-kernel at lists.infradead.org; devicetree at vger.kernel.org; Jiaying Liang <[email protected]>
Subject: [PATCH v5 2/2] dt-bindings: mailbox: Add Xilinx IPI MailboxXilinx ZynqMP IPI(Inter Processor Interrupt) is a hardware block in ZynqMP SoC used for the communication between various processor systems.
Signed-off-by Wendy Liang <[email protected]>--- .../bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt | 128 +++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt(quoted diff) +0
-0mailbox.txt b/Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi- mailbox.txt
new file mode 100644
index 0000000..18fd7b4Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox. new file +57
-0+++ txt@@ -0,0 +1,128 @@ +Xilinx IPI Mailbox Controller +======================================== + +The Xilinx IPI(Inter Processor Interrupt) mailbox controller is to +manage messaging between two Xilinx Zynq UltraScale+ MPSoC IPI agents. +Each IPI agent owns registers used for notification and buffers for message. + + +-------------------------------------+ + | Xilinx ZynqMP IPI Controller | + +-------------------------------------+ + +--------------------------------------------------+ +ATF | | + | | + | | + +--------------------------+ | + | | + | | + +--------------------------------------------------+ + +------------------------------------------+ + | +----------------+ +----------------+ | +Hardware | | IPI Agent | | IPI Buffers | | + | | Registers | | | | + | | | | | | + | +----------------+ +----------------+ | + | | + | Xilinx IPI Agent Block | + +------------------------------------------+ + + +Controller Device Node: +=========================== +Required properties: +-------------------- +IPI agent node: +- compatible: Shall be: "xlnx,zynqmp-ipi-mailbox" +- interrupt-parent: Phandle for the interrupt controller +- interrupts: Interrupt information corresponding to the + interrupt-names property. +- xlnx,ipi-id: local Xilinx IPI agent ID +- #address-cells: number of address cells of internal IPI mailbox nodes +- #size-cells: number of size cells of internal IPI mailbox nodes + +Internal IPI mailbox node: +- reg: IPI buffers address ranges +- reg-names: Names of the reg resources. It should have: + * local_request_region + - IPI request msg buffer written by local and read + by remote + * local_response_region + - IPI response msg buffer written by local and read + by remote + * remote_request_region + - IPI request msg buffer written by remote and read + by local + * remote_response_region + - IPI response msg buffer written by remote andread
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox. new file +72
-1+ by local +- #mbox-cells: Shall be 1. It contains: + * tx(0) or rx(1) channel +- xlnx,ipi-id: remote Xilinx IPI agent ID of which the mailbox is + connected to. + +Optional properties: +-------------------- +- method: The method of accessing the IPI agent registers. + Permitted values are: "smc" and "hvc". Default is + "smc". + +Client Device Node: +=========================== +Required properties: +-------------------- +- mboxes: Standard property to specify a mailbox + (See ./mailbox.txt) +- mbox-names: List of identifier strings for each mailbox + channel. + +Example: +=========================== + zynqmp_ipi { + compatible = "xlnx,zynqmp-ipi-mailbox"; + interrupt-parent = <&gic>; + interrupts = <0 29 4>; + xlnx,ipi-id = <0>; + #address-cells = <1>; + #size-cells = <1>; + + /* APU<->RPU0 IPI mailbox controller */ + ipi_mailbox_rpu0: mailbox at ff90400 { + compatible = "xlnx,zynqmp-ipi-mailbox"; + reg = <0xff990400 0x20>, + <0xff990420 0x20>, + <0xff990080 0x20>, + <0xff9900a0 0x20>; + reg-names = "local_request_region", + "local_response_region", + "remote_request_region", + "remote_response_region"; + #mbox-cells = <1>; + xlnx,ipi-id = <1>; + }; + /* APU<->RPU1 IPI mailbox controller */ + ipi_mailbox_rpu1: mailbox at ff990440 { + compatible = "xlnx,zynqmp-ipi-mailbox"; + reg = <0xff990440 0x20>, + <0xff990460 0x20>, + <0xff990280 0x20>, + <0xff9902a0 0x20>; + reg-names = "local_request_region", + "local_response_region", + "remote_request_region", + "remote_response_region"; + #mbox-cells = <1>; + xlnx,ipi-id = <2>; + }; + }; + rpu0 { + ... + mboxes = <&ipi_mailbox_rpu0 0>, + <&ipi_mailbox_rpu0 1>; + mbox-names = "tx", "rx"; + }; + rpu1 { + ... + mboxes = <&ipi_mailbox_rpu1 0>, + <&ipi_mailbox_rpu1 1>; + mbox-names = "tx", "rx"; + }; --2.7.4
Rob Herring
maintainerPATCH v5 2/2 dt-bindings: mailbox: Add Xilinx IPI Mailbox
In reply to Wendy LiangQuoted 92 lines · Wendy Liang
Xilinx ZynqMP IPI(Inter Processor Interrupt) is a hardware block in ZynqMP SoC used for the communication between various processor systems.
Signed-off-by Wendy Liang <[email protected]>--- .../bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt | 128 +++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txtDocumentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt new file +76
-0@@ -0,0 +1,128 @@ +Xilinx IPI Mailbox Controller +======================================== + +The Xilinx IPI(Inter Processor Interrupt) mailbox controller is to manage +messaging between two Xilinx Zynq UltraScale+ MPSoC IPI agents. Each IPI +agent owns registers used for notification and buffers for message. + + +-------------------------------------+ + | Xilinx ZynqMP IPI Controller | + +-------------------------------------+ + +--------------------------------------------------+ +ATF | | + | | + | | + +--------------------------+ | + | | + | | + +--------------------------------------------------+ + +------------------------------------------+ + | +----------------+ +----------------+ | +Hardware | | IPI Agent | | IPI Buffers | | + | | Registers | | | | + | | | | | | + | +----------------+ +----------------+ | + | | + | Xilinx IPI Agent Block | + +------------------------------------------+ + + +Controller Device Node: +=========================== +Required properties: +-------------------- +IPI agent node: +- compatible: Shall be: "xlnx,zynqmp-ipi-mailbox" +- interrupt-parent: Phandle for the interrupt controller +- interrupts: Interrupt information corresponding to the + interrupt-names property. +- xlnx,ipi-id: local Xilinx IPI agent ID +- #address-cells: number of address cells of internal IPI mailbox nodes +- #size-cells: number of size cells of internal IPI mailbox nodes + +Internal IPI mailbox node: +- reg: IPI buffers address ranges +- reg-names: Names of the reg resources. It should have: + * local_request_region + - IPI request msg buffer written by local and read + by remote + * local_response_region + - IPI response msg buffer written by local and read + by remote + * remote_request_region + - IPI request msg buffer written by remote and read + by local + * remote_response_region + - IPI response msg buffer written by remote and read + by local +- #mbox-cells: Shall be 1. It contains: + * tx(0) or rx(1) channel +- xlnx,ipi-id: remote Xilinx IPI agent ID of which the mailbox is + connected to. + +Optional properties: +-------------------- +- method: The method of accessing the IPI agent registers. + Permitted values are: "smc" and "hvc". Default is + "smc". + +Client Device Node: +=========================== +Required properties: +-------------------- +- mboxes: Standard property to specify a mailbox + (See ./mailbox.txt) +- mbox-names: List of identifier strings for each mailbox + channel.
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt line 86
Quoted 10 lines
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt new file +10
-0+ +Example: +=========================== + zynqmp_ipi { + compatible = "xlnx,zynqmp-ipi-mailbox"; + interrupt-parent = <&gic>; + interrupts = <0 29 4>; + xlnx,ipi-id = <0>; + #address-cells = <1>; + #size-cells = <1>;
Both the parent and children are mailbox providers?
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt line 90
Quoted 4 lines
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt new file +4
-0+ + /* APU<->RPU0 IPI mailbox controller */ + ipi_mailbox_rpu0: mailbox at ff90400 { + compatible = "xlnx,zynqmp-ipi-mailbox";
You can't have the same compatible in the parent and here.
Quoted 41 lines
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt new file +38
-0+ reg = <0xff990400 0x20>, + <0xff990420 0x20>, + <0xff990080 0x20>, + <0xff9900a0 0x20>; + reg-names = "local_request_region", + "local_response_region", + "remote_request_region", + "remote_response_region"; + #mbox-cells = <1>; + xlnx,ipi-id = <1>; + }; + /* APU<->RPU1 IPI mailbox controller */ + ipi_mailbox_rpu1: mailbox at ff990440 { + compatible = "xlnx,zynqmp-ipi-mailbox"; + reg = <0xff990440 0x20>, + <0xff990460 0x20>, + <0xff990280 0x20>, + <0xff9902a0 0x20>; + reg-names = "local_request_region", + "local_response_region", + "remote_request_region", + "remote_response_region"; + #mbox-cells = <1>; + xlnx,ipi-id = <2>; + }; + }; + rpu0 { + ... + mboxes = <&ipi_mailbox_rpu0 0>, + <&ipi_mailbox_rpu0 1>; + mbox-names = "tx", "rx"; + }; + rpu1 { + ... + mboxes = <&ipi_mailbox_rpu1 0>, + <&ipi_mailbox_rpu1 1>; + mbox-names = "tx", "rx"; + };Signature · 1 line
2.7.4
RE: [PATCH v5 2/2] dt-bindings: mailbox: Add Xilinx IPI Mailbox
Quoted 119 lines
-----Original Message-----
From: Rob Herring [mailto:robh at kernel.org]
Sent: Monday, November 12, 2018 9:56 AM
To: Jiaying Liang <[email protected]>
Cc: jassisinghbrar at gmail.com; Michal Simek <[email protected]>; mark.rutland at arm.com; linux-kernel at vger.kernel.org; linux-arm- kernel at lists.infradead.org; devicetree at vger.kernel.org
Subject: Re: [PATCH v5 2/2] dt-bindings: mailbox: Add Xilinx IPI MailboxQuoted 7 lines · Wendy Liang
Xilinx ZynqMP IPI(Inter Processor Interrupt) is a hardware block in ZynqMP SoC used for the communication between various processor systems.
Signed-off-by Wendy Liang <[email protected]>--- .../bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt | 128+++++++++++++++++++++
Quoted 8 lines
1 file changed, 128 insertions(+) create mode 100644
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txtdiff --git a/Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.tx t b/Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-
mailbox.tx
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-
Quoted 5 lines
t
new file mode 100644
index 0000000..18fd7b4Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi- new file +0
-0mailbo
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi- line 6
Quoted 8 lines
+++ x.txt
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi- new file +6
-0@@ -0,0 +1,128 @@ +Xilinx IPI Mailbox Controller +======================================== + +The Xilinx IPI(Inter Processor Interrupt) mailbox controller is to +manage messaging between two Xilinx Zynq UltraScale+ MPSoC IPI +agents. Each IPI agent owns registers used for notification and buffers formessage.
Quoted 40 lines
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi- new file +40
-0+ + +-------------------------------------+ + | Xilinx ZynqMP IPI Controller | + +-------------------------------------+ + +--------------------------------------------------+ +ATF | | + | | + | | + +--------------------------+ | + | | + | | + +--------------------------------------------------+ + +------------------------------------------+ + | +----------------+ +----------------+ | +Hardware | | IPI Agent | | IPI Buffers | | + | | Registers | | | | + | | | | | | + | +----------------+ +----------------+ | + | | + | Xilinx IPI Agent Block | + +------------------------------------------+ + + +Controller Device Node: +=========================== +Required properties: +-------------------- +IPI agent node: +- compatible: Shall be: "xlnx,zynqmp-ipi-mailbox" +- interrupt-parent: Phandle for the interrupt controller +- interrupts: Interrupt information corresponding to the + interrupt-names property. +- xlnx,ipi-id: local Xilinx IPI agent ID +- #address-cells: number of address cells of internal IPI mailbox nodes +- #size-cells: number of size cells of internal IPI mailbox nodes + +Internal IPI mailbox node: +- reg: IPI buffers address ranges +- reg-names: Names of the reg resources. It should have: + * local_request_regionDocumentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi- line 56
Quoted 10 lines
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi- new file +10
-0+ - IPI request msg buffer written by local and read + by remote + * local_response_region + - IPI response msg buffer written by local and read + by remote + * remote_request_region + - IPI request msg buffer written by remote and read + by local + * remote_response_region + - IPI response msg buffer written by remote andread
Quoted 24 lines
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi- new file +24
-0+ by local +- #mbox-cells: Shall be 1. It contains: + * tx(0) or rx(1) channel +- xlnx,ipi-id: remote Xilinx IPI agent ID of which the mailbox is + connected to. + +Optional properties: +-------------------- +- method: The method of accessing the IPI agent registers. + Permitted values are: "smc" and "hvc". Default is + "smc". + +Client Device Node: +=========================== +Required properties: +-------------------- +- mboxes: Standard property to specify a mailbox + (See ./mailbox.txt) +- mbox-names: List of identifier strings for each mailbox + channel. + +Example: +=========================== + zynqmp_ipi {
Quoted 8 lines
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi- line 86
Quoted 6 lines
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi- new file +6
-0+ compatible = "xlnx,zynqmp-ipi-mailbox"; + interrupt-parent = <&gic>; + interrupts = <0 29 4>; + xlnx,ipi-id = <0>; + #address-cells = <1>; + #size-cells = <1>;Both the parent and children are mailbox providers?
[Wendy] children are mailbox providers.
As the mailbox providers shared the same interrupt And the same local IPI agent ID, and thus, use This parent/child structure
Quoted 7 lines
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi- line 90
Quoted 5 lines
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi- new file +4
-0+ + /* APU<->RPU0 IPI mailbox controller */ + ipi_mailbox_rpu0: mailbox at ff90400 { + compatible = "xlnx,zynqmp-ipi-mailbox";You can't have the same compatible in the parent and here.
[Wendy] Will remove the compatible in the child node.
Quoted 42 lines
Quoted 42 lines
Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi- new file +38
-1+ reg = <0xff990400 0x20>, + <0xff990420 0x20>, + <0xff990080 0x20>, + <0xff9900a0 0x20>; + reg-names = "local_request_region", + "local_response_region", + "remote_request_region", + "remote_response_region"; + #mbox-cells = <1>; + xlnx,ipi-id = <1>; + }; + /* APU<->RPU1 IPI mailbox controller */ + ipi_mailbox_rpu1: mailbox at ff990440 { + compatible = "xlnx,zynqmp-ipi-mailbox"; + reg = <0xff990440 0x20>, + <0xff990460 0x20>, + <0xff990280 0x20>, + <0xff9902a0 0x20>; + reg-names = "local_request_region", + "local_response_region", + "remote_request_region", + "remote_response_region"; + #mbox-cells = <1>; + xlnx,ipi-id = <2>; + }; + }; + rpu0 { + ... + mboxes = <&ipi_mailbox_rpu0 0>, + <&ipi_mailbox_rpu0 1>; + mbox-names = "tx", "rx"; + }; + rpu1 { + ... + mboxes = <&ipi_mailbox_rpu1 0>, + <&ipi_mailbox_rpu1 1>; + mbox-names = "tx", "rx"; + }; --2.7.4