0001 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: "http://devicetree.org/schemas/mailbox/xlnx,zynqmp-ipi-mailbox.yaml#"
0005 $schema: "http://devicetree.org/meta-schemas/core.yaml#"
0006
0007 title: Xilinx IPI(Inter Processor Interrupt) mailbox controller
0008
0009 description: |
0010 The Xilinx IPI(Inter Processor Interrupt) mailbox controller is to manage
0011 messaging between two Xilinx Zynq UltraScale+ MPSoC IPI agents. Each IPI
0012 agent owns registers used for notification and buffers for message.
0013
0014 +-------------------------------------+
0015 | Xilinx ZynqMP IPI Controller |
0016 +-------------------------------------+
0017 +--------------------------------------------------+
0018 TF-A | |
0019 | |
0020 | |
0021 +--------------------------+ |
0022 | |
0023 | |
0024 +--------------------------------------------------+
0025 +------------------------------------------+
0026 | +----------------+ +----------------+ |
0027 Hardware | | IPI Agent | | IPI Buffers | |
0028 | | Registers | | | |
0029 | | | | | |
0030 | +----------------+ +----------------+ |
0031 | |
0032 | Xilinx IPI Agent Block |
0033 +------------------------------------------+
0034
0035 maintainers:
0036 - Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
0037
0038 properties:
0039 compatible:
0040 const: xlnx,zynqmp-ipi-mailbox
0041
0042 method:
0043 description: |
0044 The method of calling the PM-API firmware layer.
0045 Permitted values are.
0046 - "smc" : SMC #0, following the SMCCC
0047 - "hvc" : HVC #0, following the SMCCC
0048
0049 $ref: /schemas/types.yaml#/definitions/string
0050 enum:
0051 - smc
0052 - hvc
0053 default: smc
0054
0055 '#address-cells':
0056 const: 2
0057
0058 '#size-cells':
0059 const: 2
0060
0061 xlnx,ipi-id:
0062 description: |
0063 Remote Xilinx IPI agent ID of which the mailbox is connected to.
0064 $ref: /schemas/types.yaml#/definitions/uint32
0065
0066 interrupts:
0067 maxItems: 1
0068
0069 ranges: true
0070
0071 patternProperties:
0072 '^mailbox@[0-9a-f]+$':
0073 description: Internal ipi mailbox node
0074 type: object # DT nodes are json objects
0075 properties:
0076 xlnx,ipi-id:
0077 description:
0078 Remote Xilinx IPI agent ID of which the mailbox is connected to.
0079 $ref: /schemas/types.yaml#/definitions/uint32
0080
0081 '#mbox-cells':
0082 const: 1
0083 description:
0084 It contains tx(0) or rx(1) channel IPI id number.
0085
0086 reg:
0087 maxItems: 4
0088
0089 reg-names:
0090 items:
0091 - const: local_request_region
0092 - const: local_response_region
0093 - const: remote_request_region
0094 - const: remote_response_region
0095
0096 required:
0097 - reg
0098 - reg-names
0099 - "#mbox-cells"
0100
0101 additionalProperties: false
0102
0103 required:
0104 - compatible
0105 - interrupts
0106 - '#address-cells'
0107 - '#size-cells'
0108 - xlnx,ipi-id
0109
0110 examples:
0111 - |
0112 #include<dt-bindings/interrupt-controller/arm-gic.h>
0113
0114 amba {
0115 #address-cells = <0x2>;
0116 #size-cells = <0x2>;
0117 zynqmp-mailbox {
0118 compatible = "xlnx,zynqmp-ipi-mailbox";
0119 interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
0120 xlnx,ipi-id = <0>;
0121 #address-cells = <2>;
0122 #size-cells = <2>;
0123 ranges;
0124
0125 mailbox: mailbox@ff9905c0 {
0126 reg = <0x0 0xff9905c0 0x0 0x20>,
0127 <0x0 0xff9905e0 0x0 0x20>,
0128 <0x0 0xff990e80 0x0 0x20>,
0129 <0x0 0xff990ea0 0x0 0x20>;
0130 reg-names = "local_request_region",
0131 "local_response_region",
0132 "remote_request_region",
0133 "remote_response_region";
0134 #mbox-cells = <1>;
0135 xlnx,ipi-id = <4>;
0136 };
0137 };
0138 };
0139
0140 ...