1 Xilinx IPI Mailbox Controller
2 ========================================
3
4 The Xilinx IPI(Inter Processor Interrupt) mailbox controller is to manage
5 messaging between two Xilinx Zynq UltraScale+ MPSoC IPI agents. Each IPI
6 agent owns registers used for notification and buffers for message.
7
8 +-------------------------------------+
9 | Xilinx ZynqMP IPI Controller |
10 +-------------------------------------+
11 +--------------------------------------------------+
12 ATF | |
13 | |
14 | |
15 +--------------------------+ |
16 | |
17 | |
18 +--------------------------------------------------+
19 +------------------------------------------+
20 | +----------------+ +----------------+ |
21 Hardware | | IPI Agent | | IPI Buffers | |
22 | | Registers | | | |
23 | | | | | |
24 | +----------------+ +----------------+ |
25 | |
26 | Xilinx IPI Agent Block |
27 +------------------------------------------+
28
29
30 Controller Device Node:
31 ===========================
32 Required properties:
33 --------------------
34 IPI 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
43 Internal 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
63 Optional properties:
64 --------------------
65 - method: The method of accessing the IPI agent registers.
66 Permitted values are: "smc" and "hvc". Default is
67 "smc".
68
69 Client Device Node:
70 ===========================
71 Required 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
78 Example:
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 };
Cache object: 13180aaaa84a924e75bea370d4d28831
|