162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/mailbox/xlnx,zynqmp-ipi-mailbox.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Xilinx IPI(Inter Processor Interrupt) mailbox controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cidescription: |
1062306a36Sopenharmony_ci  The Xilinx IPI(Inter Processor Interrupt) mailbox controller is to manage
1162306a36Sopenharmony_ci  messaging between two Xilinx Zynq UltraScale+ MPSoC IPI agents. Each IPI
1262306a36Sopenharmony_ci  agent owns registers used for notification and buffers for message.
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci               +-------------------------------------+
1562306a36Sopenharmony_ci               | Xilinx ZynqMP IPI Controller        |
1662306a36Sopenharmony_ci               +-------------------------------------+
1762306a36Sopenharmony_ci    +--------------------------------------------------+
1862306a36Sopenharmony_ci  TF-A                   |                     |
1962306a36Sopenharmony_ci                         |                     |
2062306a36Sopenharmony_ci                         |                     |
2162306a36Sopenharmony_ci    +--------------------------+               |
2262306a36Sopenharmony_ci                         |                     |
2362306a36Sopenharmony_ci                         |                     |
2462306a36Sopenharmony_ci    +--------------------------------------------------+
2562306a36Sopenharmony_ci              +------------------------------------------+
2662306a36Sopenharmony_ci              |  +----------------+   +----------------+ |
2762306a36Sopenharmony_ci  Hardware    |  |  IPI Agent     |   |  IPI Buffers   | |
2862306a36Sopenharmony_ci              |  |  Registers     |   |                | |
2962306a36Sopenharmony_ci              |  |                |   |                | |
3062306a36Sopenharmony_ci              |  +----------------+   +----------------+ |
3162306a36Sopenharmony_ci              |                                          |
3262306a36Sopenharmony_ci              | Xilinx IPI Agent Block                   |
3362306a36Sopenharmony_ci              +------------------------------------------+
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_cimaintainers:
3662306a36Sopenharmony_ci  - Shubhrajyoti Datta <shubhrajyoti.datta@amd.com>
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ciproperties:
3962306a36Sopenharmony_ci  compatible:
4062306a36Sopenharmony_ci    const: xlnx,zynqmp-ipi-mailbox
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  method:
4362306a36Sopenharmony_ci    description: |
4462306a36Sopenharmony_ci      The method of calling the PM-API firmware layer.
4562306a36Sopenharmony_ci      Permitted values are.
4662306a36Sopenharmony_ci      - "smc" : SMC #0, following the SMCCC
4762306a36Sopenharmony_ci      - "hvc" : HVC #0, following the SMCCC
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/string
5062306a36Sopenharmony_ci    enum:
5162306a36Sopenharmony_ci      - smc
5262306a36Sopenharmony_ci      - hvc
5362306a36Sopenharmony_ci    default: smc
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci  '#address-cells':
5662306a36Sopenharmony_ci    const: 2
5762306a36Sopenharmony_ci
5862306a36Sopenharmony_ci  '#size-cells':
5962306a36Sopenharmony_ci    const: 2
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ci  xlnx,ipi-id:
6262306a36Sopenharmony_ci    description: |
6362306a36Sopenharmony_ci      Remote Xilinx IPI agent ID of which the mailbox is connected to.
6462306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci  interrupts:
6762306a36Sopenharmony_ci    maxItems: 1
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_ci  ranges: true
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_cipatternProperties:
7262306a36Sopenharmony_ci  '^mailbox@[0-9a-f]+$':
7362306a36Sopenharmony_ci    description: Internal ipi mailbox node
7462306a36Sopenharmony_ci    type: object  # DT nodes are json objects
7562306a36Sopenharmony_ci    additionalProperties: false
7662306a36Sopenharmony_ci    properties:
7762306a36Sopenharmony_ci      xlnx,ipi-id:
7862306a36Sopenharmony_ci        description:
7962306a36Sopenharmony_ci          Remote Xilinx IPI agent ID of which the mailbox is connected to.
8062306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci      '#mbox-cells':
8362306a36Sopenharmony_ci        const: 1
8462306a36Sopenharmony_ci        description:
8562306a36Sopenharmony_ci          It contains tx(0) or rx(1) channel IPI id number.
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci      reg:
8862306a36Sopenharmony_ci        maxItems: 4
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci      reg-names:
9162306a36Sopenharmony_ci        items:
9262306a36Sopenharmony_ci          - const: local_request_region
9362306a36Sopenharmony_ci          - const: local_response_region
9462306a36Sopenharmony_ci          - const: remote_request_region
9562306a36Sopenharmony_ci          - const: remote_response_region
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci    required:
9862306a36Sopenharmony_ci      - reg
9962306a36Sopenharmony_ci      - reg-names
10062306a36Sopenharmony_ci      - "#mbox-cells"
10162306a36Sopenharmony_ci
10262306a36Sopenharmony_ciadditionalProperties: false
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_cirequired:
10562306a36Sopenharmony_ci  - compatible
10662306a36Sopenharmony_ci  - interrupts
10762306a36Sopenharmony_ci  - '#address-cells'
10862306a36Sopenharmony_ci  - '#size-cells'
10962306a36Sopenharmony_ci  - xlnx,ipi-id
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ciexamples:
11262306a36Sopenharmony_ci  - |
11362306a36Sopenharmony_ci    #include<dt-bindings/interrupt-controller/arm-gic.h>
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ci    amba {
11662306a36Sopenharmony_ci      #address-cells = <0x2>;
11762306a36Sopenharmony_ci      #size-cells = <0x2>;
11862306a36Sopenharmony_ci      zynqmp-mailbox {
11962306a36Sopenharmony_ci        compatible = "xlnx,zynqmp-ipi-mailbox";
12062306a36Sopenharmony_ci        interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
12162306a36Sopenharmony_ci        xlnx,ipi-id = <0>;
12262306a36Sopenharmony_ci        #address-cells = <2>;
12362306a36Sopenharmony_ci        #size-cells = <2>;
12462306a36Sopenharmony_ci        ranges;
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci        mailbox: mailbox@ff9905c0 {
12762306a36Sopenharmony_ci          reg = <0x0 0xff9905c0 0x0 0x20>,
12862306a36Sopenharmony_ci                <0x0 0xff9905e0 0x0 0x20>,
12962306a36Sopenharmony_ci                <0x0 0xff990e80 0x0 0x20>,
13062306a36Sopenharmony_ci                <0x0 0xff990ea0 0x0 0x20>;
13162306a36Sopenharmony_ci          reg-names = "local_request_region",
13262306a36Sopenharmony_ci                      "local_response_region",
13362306a36Sopenharmony_ci                      "remote_request_region",
13462306a36Sopenharmony_ci                      "remote_response_region";
13562306a36Sopenharmony_ci          #mbox-cells = <1>;
13662306a36Sopenharmony_ci          xlnx,ipi-id = <4>;
13762306a36Sopenharmony_ci        };
13862306a36Sopenharmony_ci      };
13962306a36Sopenharmony_ci    };
14062306a36Sopenharmony_ci
14162306a36Sopenharmony_ci...
142