Merge branch 'turbostat' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux
[sfrench/cifs-2.6.git] / Documentation / devicetree / bindings / mailbox / xlnx,zynqmp-ipi-mailbox.txt
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@ff90400 {
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         };