# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) %YAML 1.2 --- $id: http://devicetree.org/schemas/mailbox/xlnx,zynqmp-ipi-mailbox.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: Xilinx IPI(Inter Processor Interrupt) mailbox controller description: | The Xilinx IPI(Inter Processor Interrupt) mailbox controller is to manage messaging between two Xilinx Zynq UltraScale+ MPSoC IPI agents. Each IPI agent owns registers used for notification and buffers for message. +-------------------------------------+ | Xilinx ZynqMP IPI Controller | +-------------------------------------+ +--------------------------------------------------+ TF-A | | | | | | +--------------------------+ | | | | | +--------------------------------------------------+ +------------------------------------------+ | +----------------+ +----------------+ | Hardware | | IPI Agent | | IPI Buffers | | | | Registers | | | | | | | | | | | +----------------+ +----------------+ | | | | Xilinx IPI Agent Block | +------------------------------------------+ maintainers: - Shubhrajyoti Datta properties: compatible: enum: - xlnx,zynqmp-ipi-mailbox - xlnx,versal-ipi-mailbox method: description: | The method of calling the PM-API firmware layer. Permitted values are. - "smc" : SMC #0, following the SMCCC - "hvc" : HVC #0, following the SMCCC $ref: /schemas/types.yaml#/definitions/string enum: - smc - hvc default: smc '#address-cells': const: 2 '#size-cells': const: 2 reg: maxItems: 2 reg-names: maxItems: 2 xlnx,ipi-id: description: | Remote Xilinx IPI agent ID of which the mailbox is connected to. $ref: /schemas/types.yaml#/definitions/uint32 interrupts: maxItems: 1 ranges: true patternProperties: '^mailbox@[0-9a-f]+$': description: Internal ipi mailbox node type: object # DT nodes are json objects additionalProperties: false properties: compatible: enum: - xlnx,zynqmp-ipi-dest-mailbox - xlnx,versal-ipi-dest-mailbox reg: minItems: 1 maxItems: 4 reg-names: minItems: 1 maxItems: 4 xlnx,ipi-id: description: Remote Xilinx IPI agent ID of which the mailbox is connected to. $ref: /schemas/types.yaml#/definitions/uint32 '#mbox-cells': const: 1 description: It contains tx(0) or rx(1) channel IPI id number. allOf: - if: properties: compatible: contains: enum: - xlnx,zynqmp-ipi-dest-mailbox then: properties: reg: maxItems: 4 reg-names: items: - const: local_request_region - const: local_response_region - const: remote_request_region - const: remote_response_region else: properties: reg: minItems: 1 items: - description: Remote IPI agent control register region - description: Remote IPI agent optional message buffers reg-names: minItems: 1 items: - const: ctrl - const: msg required: - compatible - reg - reg-names - "#mbox-cells" - xlnx,ipi-id required: - compatible - interrupts - '#address-cells' - '#size-cells' - xlnx,ipi-id allOf: - if: properties: compatible: contains: enum: - xlnx,zynqmp-ipi-mailbox then: properties: reg: false reg-names: false else: properties: reg: items: - description: Host IPI agent control register region - description: Host IPI agent optional message buffers reg-names: items: - const: ctrl - const: msg required: - reg - reg-names additionalProperties: false examples: - | #include amba { #address-cells = <0x2>; #size-cells = <0x2>; zynqmp-mailbox { compatible = "xlnx,zynqmp-ipi-mailbox"; interrupts = ; xlnx,ipi-id = <0>; #address-cells = <2>; #size-cells = <2>; ranges; mailbox: mailbox@ff9905c0 { compatible = "xlnx,zynqmp-ipi-dest-mailbox"; reg = <0x0 0xff9905c0 0x0 0x20>, <0x0 0xff9905e0 0x0 0x20>, <0x0 0xff990e80 0x0 0x20>, <0x0 0xff990ea0 0x0 0x20>; reg-names = "local_request_region", "local_response_region", "remote_request_region", "remote_response_region"; #mbox-cells = <1>; xlnx,ipi-id = <4>; }; }; }; - | #include bus { #address-cells = <2>; #size-cells = <2>; mailbox@ff300000 { compatible = "xlnx,versal-ipi-mailbox"; interrupts = ; #address-cells = <2>; #size-cells = <2>; reg = <0x0 0xff300000 0x0 0x1000>, <0x0 0xff990000 0x0 0x1ff>; reg-names = "ctrl", "msg"; xlnx,ipi-id = <0>; ranges; /* buffered IPI */ mailbox@ff340000 { compatible = "xlnx,versal-ipi-dest-mailbox"; reg = <0x0 0xff340000 0x0 0x1000>, <0x0 0xff990400 0x0 0x1ff>; reg-names = "ctrl", "msg"; #mbox-cells = <1>; xlnx,ipi-id = <4>; }; /* bufferless IPI */ mailbox@ff370000 { compatible = "xlnx,versal-ipi-dest-mailbox"; reg = <0x0 0xff370000 0x0 0x1000>; reg-names = "ctrl"; #mbox-cells = <1>; xlnx,ipi-id = <7>; }; }; }; ...