1Xilinx IPI Mailbox Controller 2======================================== 3 4The Xilinx IPI(Inter Processor Interrupt) mailbox controller is to manage 5messaging between two Xilinx Zynq UltraScale+ MPSoC IPI agents. Each IPI 6agent owns registers used for notification and buffers for message. 7 8 +-------------------------------------+ 9 | Xilinx ZynqMP IPI Controller | 10 +-------------------------------------+ 11 +--------------------------------------------------+ 12ATF | | 13 | | 14 | | 15 +--------------------------+ | 16 | | 17 | | 18 +--------------------------------------------------+ 19 +------------------------------------------+ 20 | +----------------+ +----------------+ | 21Hardware | | IPI Agent | | IPI Buffers | | 22 | | Registers | | | | 23 | | | | | | 24 | +----------------+ +----------------+ | 25 | | 26 | Xilinx IPI Agent Block | 27 +------------------------------------------+ 28 29 30Controller Device Node: 31=========================== 32Required properties: 33-------------------- 34IPI agent node: 35- compatible: Shall be: "xlnx,zynqmp-ipi-mailbox" 36- interrupt-parent: Phandle for the interrupt controller 37- interrupts: Interrupt information corresponding to the 38 interrupt-names property. 39- xlnx,ipi-id: local Xilinx IPI agent ID 40- #address-cells: number of address cells of internal IPI mailbox nodes 41- #size-cells: number of size cells of internal IPI mailbox nodes 42 43Internal IPI mailbox node: 44- reg: IPI buffers address ranges 45- reg-names: Names of the reg resources. It should have: 46 * local_request_region 47 - IPI request msg buffer written by local and read 48 by remote 49 * local_response_region 50 - IPI response msg buffer written by local and read 51 by remote 52 * remote_request_region 53 - IPI request msg buffer written by remote and read 54 by local 55 * remote_response_region 56 - IPI response msg buffer written by remote and read 57 by local 58- #mbox-cells: Shall be 1. It contains: 59 * tx(0) or rx(1) channel 60- xlnx,ipi-id: remote Xilinx IPI agent ID of which the mailbox is 61 connected to. 62 63Optional properties: 64-------------------- 65- method: The method of accessing the IPI agent registers. 66 Permitted values are: "smc" and "hvc". Default is 67 "smc". 68 69Client Device Node: 70=========================== 71Required properties: 72-------------------- 73- mboxes: Standard property to specify a mailbox 74 (See ./mailbox.txt) 75- mbox-names: List of identifier strings for each mailbox 76 channel. 77 78Example: 79=========================== 80 zynqmp_ipi { 81 compatible = "xlnx,zynqmp-ipi-mailbox"; 82 interrupt-parent = <&gic>; 83 interrupts = <0 29 4>; 84 xlnx,ipi-id = <0>; 85 #address-cells = <1>; 86 #size-cells = <1>; 87 ranges; 88 89 /* APU<->RPU0 IPI mailbox controller */ 90 ipi_mailbox_rpu0: mailbox@ff990400 { 91 reg = <0xff990400 0x20>, 92 <0xff990420 0x20>, 93 <0xff990080 0x20>, 94 <0xff9900a0 0x20>; 95 reg-names = "local_request_region", 96 "local_response_region", 97 "remote_request_region", 98 "remote_response_region"; 99 #mbox-cells = <1>; 100 xlnx,ipi-id = <1>; 101 }; 102 /* APU<->RPU1 IPI mailbox controller */ 103 ipi_mailbox_rpu1: mailbox@ff990440 { 104 reg = <0xff990440 0x20>, 105 <0xff990460 0x20>, 106 <0xff990280 0x20>, 107 <0xff9902a0 0x20>; 108 reg-names = "local_request_region", 109 "local_response_region", 110 "remote_request_region", 111 "remote_response_region"; 112 #mbox-cells = <1>; 113 xlnx,ipi-id = <2>; 114 }; 115 }; 116 rpu0 { 117 ... 118 mboxes = <&ipi_mailbox_rpu0 0>, 119 <&ipi_mailbox_rpu0 1>; 120 mbox-names = "tx", "rx"; 121 }; 122 rpu1 { 123 ... 124 mboxes = <&ipi_mailbox_rpu1 0>, 125 <&ipi_mailbox_rpu1 1>; 126 mbox-names = "tx", "rx"; 127 }; 128