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 7title: Xilinx IPI(Inter Processor Interrupt) mailbox controller 8 9description: | 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 35maintainers: 36 - Shubhrajyoti Datta <shubhrajyoti.datta@amd.com> 37 38properties: 39 compatible: 40 enum: 41 - xlnx,zynqmp-ipi-mailbox 42 - xlnx,versal-ipi-mailbox 43 44 method: 45 description: | 46 The method of calling the PM-API firmware layer. 47 Permitted values are. 48 - "smc" : SMC #0, following the SMCCC 49 - "hvc" : HVC #0, following the SMCCC 50 51 $ref: /schemas/types.yaml#/definitions/string 52 enum: 53 - smc 54 - hvc 55 default: smc 56 57 '#address-cells': 58 const: 2 59 60 '#size-cells': 61 const: 2 62 63 reg: 64 maxItems: 2 65 66 reg-names: 67 maxItems: 2 68 69 xlnx,ipi-id: 70 description: | 71 Remote Xilinx IPI agent ID of which the mailbox is connected to. 72 $ref: /schemas/types.yaml#/definitions/uint32 73 74 interrupts: 75 maxItems: 1 76 77 ranges: true 78 79patternProperties: 80 '^mailbox@[0-9a-f]+$': 81 description: Internal ipi mailbox node 82 type: object # DT nodes are json objects 83 additionalProperties: false 84 properties: 85 86 compatible: 87 enum: 88 - xlnx,zynqmp-ipi-dest-mailbox 89 - xlnx,versal-ipi-dest-mailbox 90 91 reg: 92 minItems: 1 93 maxItems: 4 94 95 reg-names: 96 minItems: 1 97 maxItems: 4 98 99 xlnx,ipi-id: 100 description: 101 Remote Xilinx IPI agent ID of which the mailbox is connected to. 102 $ref: /schemas/types.yaml#/definitions/uint32 103 104 '#mbox-cells': 105 const: 1 106 description: 107 It contains tx(0) or rx(1) channel IPI id number. 108 109 allOf: 110 - if: 111 properties: 112 compatible: 113 contains: 114 enum: 115 - xlnx,zynqmp-ipi-dest-mailbox 116 then: 117 properties: 118 reg: 119 maxItems: 4 120 121 reg-names: 122 items: 123 - const: local_request_region 124 - const: local_response_region 125 - const: remote_request_region 126 - const: remote_response_region 127 else: 128 properties: 129 reg: 130 minItems: 1 131 items: 132 - description: Remote IPI agent control register region 133 - description: Remote IPI agent optional message buffers 134 135 reg-names: 136 minItems: 1 137 items: 138 - const: ctrl 139 - const: msg 140 141 required: 142 - compatible 143 - reg 144 - reg-names 145 - "#mbox-cells" 146 - xlnx,ipi-id 147 148required: 149 - compatible 150 - interrupts 151 - '#address-cells' 152 - '#size-cells' 153 - xlnx,ipi-id 154 155allOf: 156 - if: 157 properties: 158 compatible: 159 contains: 160 enum: 161 - xlnx,zynqmp-ipi-mailbox 162 then: 163 properties: 164 reg: false 165 reg-names: false 166 167 else: 168 properties: 169 reg: 170 items: 171 - description: Host IPI agent control register region 172 - description: Host IPI agent optional message buffers 173 174 reg-names: 175 items: 176 - const: ctrl 177 - const: msg 178 179 required: 180 - reg 181 - reg-names 182 183additionalProperties: false 184 185examples: 186 - | 187 #include<dt-bindings/interrupt-controller/arm-gic.h> 188 189 amba { 190 #address-cells = <0x2>; 191 #size-cells = <0x2>; 192 zynqmp-mailbox { 193 compatible = "xlnx,zynqmp-ipi-mailbox"; 194 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>; 195 xlnx,ipi-id = <0>; 196 #address-cells = <2>; 197 #size-cells = <2>; 198 ranges; 199 200 mailbox: mailbox@ff9905c0 { 201 compatible = "xlnx,zynqmp-ipi-dest-mailbox"; 202 reg = <0x0 0xff9905c0 0x0 0x20>, 203 <0x0 0xff9905e0 0x0 0x20>, 204 <0x0 0xff990e80 0x0 0x20>, 205 <0x0 0xff990ea0 0x0 0x20>; 206 reg-names = "local_request_region", 207 "local_response_region", 208 "remote_request_region", 209 "remote_response_region"; 210 #mbox-cells = <1>; 211 xlnx,ipi-id = <4>; 212 }; 213 }; 214 }; 215 216 - | 217 #include<dt-bindings/interrupt-controller/arm-gic.h> 218 219 bus { 220 #address-cells = <2>; 221 #size-cells = <2>; 222 mailbox@ff300000 { 223 compatible = "xlnx,versal-ipi-mailbox"; 224 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>; 225 #address-cells = <2>; 226 #size-cells = <2>; 227 reg = <0x0 0xff300000 0x0 0x1000>, 228 <0x0 0xff990000 0x0 0x1ff>; 229 reg-names = "ctrl", "msg"; 230 xlnx,ipi-id = <0>; 231 ranges; 232 233 /* buffered IPI */ 234 mailbox@ff340000 { 235 compatible = "xlnx,versal-ipi-dest-mailbox"; 236 reg = <0x0 0xff340000 0x0 0x1000>, 237 <0x0 0xff990400 0x0 0x1ff>; 238 reg-names = "ctrl", "msg"; 239 #mbox-cells = <1>; 240 xlnx,ipi-id = <4>; 241 }; 242 243 /* bufferless IPI */ 244 mailbox@ff370000 { 245 compatible = "xlnx,versal-ipi-dest-mailbox"; 246 reg = <0x0 0xff370000 0x0 0x1000>; 247 reg-names = "ctrl"; 248 #mbox-cells = <1>; 249 xlnx,ipi-id = <7>; 250 }; 251 }; 252 }; 253... 254