18c2ecf20Sopenharmony_ciXilinx IPI Mailbox Controller 28c2ecf20Sopenharmony_ci======================================== 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ciThe Xilinx IPI(Inter Processor Interrupt) mailbox controller is to manage 58c2ecf20Sopenharmony_cimessaging between two Xilinx Zynq UltraScale+ MPSoC IPI agents. Each IPI 68c2ecf20Sopenharmony_ciagent owns registers used for notification and buffers for message. 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci +-------------------------------------+ 98c2ecf20Sopenharmony_ci | Xilinx ZynqMP IPI Controller | 108c2ecf20Sopenharmony_ci +-------------------------------------+ 118c2ecf20Sopenharmony_ci +--------------------------------------------------+ 128c2ecf20Sopenharmony_ciATF | | 138c2ecf20Sopenharmony_ci | | 148c2ecf20Sopenharmony_ci | | 158c2ecf20Sopenharmony_ci +--------------------------+ | 168c2ecf20Sopenharmony_ci | | 178c2ecf20Sopenharmony_ci | | 188c2ecf20Sopenharmony_ci +--------------------------------------------------+ 198c2ecf20Sopenharmony_ci +------------------------------------------+ 208c2ecf20Sopenharmony_ci | +----------------+ +----------------+ | 218c2ecf20Sopenharmony_ciHardware | | IPI Agent | | IPI Buffers | | 228c2ecf20Sopenharmony_ci | | Registers | | | | 238c2ecf20Sopenharmony_ci | | | | | | 248c2ecf20Sopenharmony_ci | +----------------+ +----------------+ | 258c2ecf20Sopenharmony_ci | | 268c2ecf20Sopenharmony_ci | Xilinx IPI Agent Block | 278c2ecf20Sopenharmony_ci +------------------------------------------+ 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ciController Device Node: 318c2ecf20Sopenharmony_ci=========================== 328c2ecf20Sopenharmony_ciRequired properties: 338c2ecf20Sopenharmony_ci-------------------- 348c2ecf20Sopenharmony_ciIPI agent node: 358c2ecf20Sopenharmony_ci- compatible: Shall be: "xlnx,zynqmp-ipi-mailbox" 368c2ecf20Sopenharmony_ci- interrupt-parent: Phandle for the interrupt controller 378c2ecf20Sopenharmony_ci- interrupts: Interrupt information corresponding to the 388c2ecf20Sopenharmony_ci interrupt-names property. 398c2ecf20Sopenharmony_ci- xlnx,ipi-id: local Xilinx IPI agent ID 408c2ecf20Sopenharmony_ci- #address-cells: number of address cells of internal IPI mailbox nodes 418c2ecf20Sopenharmony_ci- #size-cells: number of size cells of internal IPI mailbox nodes 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ciInternal IPI mailbox node: 448c2ecf20Sopenharmony_ci- reg: IPI buffers address ranges 458c2ecf20Sopenharmony_ci- reg-names: Names of the reg resources. It should have: 468c2ecf20Sopenharmony_ci * local_request_region 478c2ecf20Sopenharmony_ci - IPI request msg buffer written by local and read 488c2ecf20Sopenharmony_ci by remote 498c2ecf20Sopenharmony_ci * local_response_region 508c2ecf20Sopenharmony_ci - IPI response msg buffer written by local and read 518c2ecf20Sopenharmony_ci by remote 528c2ecf20Sopenharmony_ci * remote_request_region 538c2ecf20Sopenharmony_ci - IPI request msg buffer written by remote and read 548c2ecf20Sopenharmony_ci by local 558c2ecf20Sopenharmony_ci * remote_response_region 568c2ecf20Sopenharmony_ci - IPI response msg buffer written by remote and read 578c2ecf20Sopenharmony_ci by local 588c2ecf20Sopenharmony_ci- #mbox-cells: Shall be 1. It contains: 598c2ecf20Sopenharmony_ci * tx(0) or rx(1) channel 608c2ecf20Sopenharmony_ci- xlnx,ipi-id: remote Xilinx IPI agent ID of which the mailbox is 618c2ecf20Sopenharmony_ci connected to. 628c2ecf20Sopenharmony_ci 638c2ecf20Sopenharmony_ciOptional properties: 648c2ecf20Sopenharmony_ci-------------------- 658c2ecf20Sopenharmony_ci- method: The method of accessing the IPI agent registers. 668c2ecf20Sopenharmony_ci Permitted values are: "smc" and "hvc". Default is 678c2ecf20Sopenharmony_ci "smc". 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ciClient Device Node: 708c2ecf20Sopenharmony_ci=========================== 718c2ecf20Sopenharmony_ciRequired properties: 728c2ecf20Sopenharmony_ci-------------------- 738c2ecf20Sopenharmony_ci- mboxes: Standard property to specify a mailbox 748c2ecf20Sopenharmony_ci (See ./mailbox.txt) 758c2ecf20Sopenharmony_ci- mbox-names: List of identifier strings for each mailbox 768c2ecf20Sopenharmony_ci channel. 778c2ecf20Sopenharmony_ci 788c2ecf20Sopenharmony_ciExample: 798c2ecf20Sopenharmony_ci=========================== 808c2ecf20Sopenharmony_ci zynqmp_ipi { 818c2ecf20Sopenharmony_ci compatible = "xlnx,zynqmp-ipi-mailbox"; 828c2ecf20Sopenharmony_ci interrupt-parent = <&gic>; 838c2ecf20Sopenharmony_ci interrupts = <0 29 4>; 848c2ecf20Sopenharmony_ci xlnx,ipi-id = <0>; 858c2ecf20Sopenharmony_ci #address-cells = <1>; 868c2ecf20Sopenharmony_ci #size-cells = <1>; 878c2ecf20Sopenharmony_ci ranges; 888c2ecf20Sopenharmony_ci 898c2ecf20Sopenharmony_ci /* APU<->RPU0 IPI mailbox controller */ 908c2ecf20Sopenharmony_ci ipi_mailbox_rpu0: mailbox@ff990400 { 918c2ecf20Sopenharmony_ci reg = <0xff990400 0x20>, 928c2ecf20Sopenharmony_ci <0xff990420 0x20>, 938c2ecf20Sopenharmony_ci <0xff990080 0x20>, 948c2ecf20Sopenharmony_ci <0xff9900a0 0x20>; 958c2ecf20Sopenharmony_ci reg-names = "local_request_region", 968c2ecf20Sopenharmony_ci "local_response_region", 978c2ecf20Sopenharmony_ci "remote_request_region", 988c2ecf20Sopenharmony_ci "remote_response_region"; 998c2ecf20Sopenharmony_ci #mbox-cells = <1>; 1008c2ecf20Sopenharmony_ci xlnx,ipi-id = <1>; 1018c2ecf20Sopenharmony_ci }; 1028c2ecf20Sopenharmony_ci /* APU<->RPU1 IPI mailbox controller */ 1038c2ecf20Sopenharmony_ci ipi_mailbox_rpu1: mailbox@ff990440 { 1048c2ecf20Sopenharmony_ci reg = <0xff990440 0x20>, 1058c2ecf20Sopenharmony_ci <0xff990460 0x20>, 1068c2ecf20Sopenharmony_ci <0xff990280 0x20>, 1078c2ecf20Sopenharmony_ci <0xff9902a0 0x20>; 1088c2ecf20Sopenharmony_ci reg-names = "local_request_region", 1098c2ecf20Sopenharmony_ci "local_response_region", 1108c2ecf20Sopenharmony_ci "remote_request_region", 1118c2ecf20Sopenharmony_ci "remote_response_region"; 1128c2ecf20Sopenharmony_ci #mbox-cells = <1>; 1138c2ecf20Sopenharmony_ci xlnx,ipi-id = <2>; 1148c2ecf20Sopenharmony_ci }; 1158c2ecf20Sopenharmony_ci }; 1168c2ecf20Sopenharmony_ci rpu0 { 1178c2ecf20Sopenharmony_ci ... 1188c2ecf20Sopenharmony_ci mboxes = <&ipi_mailbox_rpu0 0>, 1198c2ecf20Sopenharmony_ci <&ipi_mailbox_rpu0 1>; 1208c2ecf20Sopenharmony_ci mbox-names = "tx", "rx"; 1218c2ecf20Sopenharmony_ci }; 1228c2ecf20Sopenharmony_ci rpu1 { 1238c2ecf20Sopenharmony_ci ... 1248c2ecf20Sopenharmony_ci mboxes = <&ipi_mailbox_rpu1 0>, 1258c2ecf20Sopenharmony_ci <&ipi_mailbox_rpu1 1>; 1268c2ecf20Sopenharmony_ci mbox-names = "tx", "rx"; 1278c2ecf20Sopenharmony_ci }; 128