GNU Linux-libre 6.1.90-gnu
[releases.git] / Documentation / devicetree / bindings / mailbox / xlnx,zynqmp-ipi-mailbox.yaml
1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: "http://devicetree.org/schemas/mailbox/xlnx,zynqmp-ipi-mailbox.yaml#"
5 $schema: "http://devicetree.org/meta-schemas/core.yaml#"
6
7 title: Xilinx IPI(Inter Processor Interrupt) mailbox controller
8
9 description: |
10   The Xilinx IPI(Inter Processor Interrupt) mailbox controller is to manage
11   messaging between two Xilinx Zynq UltraScale+ MPSoC IPI agents. Each IPI
12   agent owns registers used for notification and buffers for message.
13
14                +-------------------------------------+
15                | Xilinx ZynqMP IPI Controller        |
16                +-------------------------------------+
17     +--------------------------------------------------+
18   TF-A                   |                     |
19                          |                     |
20                          |                     |
21     +--------------------------+               |
22                          |                     |
23                          |                     |
24     +--------------------------------------------------+
25               +------------------------------------------+
26               |  +----------------+   +----------------+ |
27   Hardware    |  |  IPI Agent     |   |  IPI Buffers   | |
28               |  |  Registers     |   |                | |
29               |  |                |   |                | |
30               |  +----------------+   +----------------+ |
31               |                                          |
32               | Xilinx IPI Agent Block                   |
33               +------------------------------------------+
34
35 maintainers:
36   - Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
37
38 properties:
39   compatible:
40     const: xlnx,zynqmp-ipi-mailbox
41
42   method:
43     description: |
44       The method of calling the PM-API firmware layer.
45       Permitted values are.
46       - "smc" : SMC #0, following the SMCCC
47       - "hvc" : HVC #0, following the SMCCC
48
49     $ref: /schemas/types.yaml#/definitions/string
50     enum:
51       - smc
52       - hvc
53     default: smc
54
55   '#address-cells':
56     const: 2
57
58   '#size-cells':
59     const: 2
60
61   xlnx,ipi-id:
62     description: |
63       Remote Xilinx IPI agent ID of which the mailbox is connected to.
64     $ref: /schemas/types.yaml#/definitions/uint32
65
66   interrupts:
67     maxItems: 1
68
69   ranges: true
70
71 patternProperties:
72   '^mailbox@[0-9a-f]+$':
73     description: Internal ipi mailbox node
74     type: object  # DT nodes are json objects
75     properties:
76       xlnx,ipi-id:
77         description:
78           Remote Xilinx IPI agent ID of which the mailbox is connected to.
79         $ref: /schemas/types.yaml#/definitions/uint32
80
81       '#mbox-cells':
82         const: 1
83         description:
84           It contains tx(0) or rx(1) channel IPI id number.
85
86       reg:
87         maxItems: 4
88
89       reg-names:
90         items:
91           - const: local_request_region
92           - const: local_response_region
93           - const: remote_request_region
94           - const: remote_response_region
95
96     required:
97       - reg
98       - reg-names
99       - "#mbox-cells"
100
101 additionalProperties: false
102
103 required:
104   - compatible
105   - interrupts
106   - '#address-cells'
107   - '#size-cells'
108   - xlnx,ipi-id
109
110 examples:
111   - |
112     #include<dt-bindings/interrupt-controller/arm-gic.h>
113
114     amba {
115       #address-cells = <0x2>;
116       #size-cells = <0x2>;
117       zynqmp-mailbox {
118         compatible = "xlnx,zynqmp-ipi-mailbox";
119         interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
120         xlnx,ipi-id = <0>;
121         #address-cells = <2>;
122         #size-cells = <2>;
123         ranges;
124
125         mailbox: mailbox@ff9905c0 {
126           reg = <0x0 0xff9905c0 0x0 0x20>,
127                 <0x0 0xff9905e0 0x0 0x20>,
128                 <0x0 0xff990e80 0x0 0x20>,
129                 <0x0 0xff990ea0 0x0 0x20>;
130           reg-names = "local_request_region",
131                       "local_response_region",
132                       "remote_request_region",
133                       "remote_response_region";
134           #mbox-cells = <1>;
135           xlnx,ipi-id = <4>;
136         };
137       };
138     };
139
140 ...