254 lines · yaml
1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)2%YAML 1.23---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 controller8 9description: |10 The Xilinx IPI(Inter Processor Interrupt) mailbox controller is to manage11 messaging between two Xilinx Zynq UltraScale+ MPSoC IPI agents. Each IPI12 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-mailbox42 - xlnx,versal-ipi-mailbox43 44 method:45 description: |46 The method of calling the PM-API firmware layer.47 Permitted values are.48 - "smc" : SMC #0, following the SMCCC49 - "hvc" : HVC #0, following the SMCCC50 51 $ref: /schemas/types.yaml#/definitions/string52 enum:53 - smc54 - hvc55 default: smc56 57 '#address-cells':58 const: 259 60 '#size-cells':61 const: 262 63 reg:64 maxItems: 265 66 reg-names:67 maxItems: 268 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/uint3273 74 interrupts:75 maxItems: 176 77 ranges: true78 79patternProperties:80 '^mailbox@[0-9a-f]+$':81 description: Internal ipi mailbox node82 type: object # DT nodes are json objects83 additionalProperties: false84 properties:85 86 compatible:87 enum:88 - xlnx,zynqmp-ipi-dest-mailbox89 - xlnx,versal-ipi-dest-mailbox90 91 reg:92 minItems: 193 maxItems: 494 95 reg-names:96 minItems: 197 maxItems: 498 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/uint32103 104 '#mbox-cells':105 const: 1106 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-mailbox116 then:117 properties:118 reg:119 maxItems: 4120 121 reg-names:122 items:123 - const: local_request_region124 - const: local_response_region125 - const: remote_request_region126 - const: remote_response_region127 else:128 properties:129 reg:130 minItems: 1131 items:132 - description: Remote IPI agent control register region133 - description: Remote IPI agent optional message buffers134 135 reg-names:136 minItems: 1137 items:138 - const: ctrl139 - const: msg140 141 required:142 - compatible143 - reg144 - reg-names145 - "#mbox-cells"146 - xlnx,ipi-id147 148required:149 - compatible150 - interrupts151 - '#address-cells'152 - '#size-cells'153 - xlnx,ipi-id154 155allOf:156 - if:157 properties:158 compatible:159 contains:160 enum:161 - xlnx,zynqmp-ipi-mailbox162 then:163 properties:164 reg: false165 reg-names: false166 167 else:168 properties:169 reg:170 items:171 - description: Host IPI agent control register region172 - description: Host IPI agent optional message buffers173 174 reg-names:175 items:176 - const: ctrl177 - const: msg178 179 required:180 - reg181 - reg-names182 183additionalProperties: false184 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