# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/mailbox/arm,mhuv3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: ARM MHUv3 Mailbox Controller

maintainers:
  - Sudeep Holla <sudeep.holla@arm.com>
  - Cristian Marussi <cristian.marussi@arm.com>

description: |
  The Arm Message Handling Unit (MHU) Version 3 is a mailbox controller that
  enables unidirectional communications with remote processors through various
  possible transport protocols.
  The controller can optionally support a varying number of extensions that, in
  turn, enable different kinds of transport to be used for communication.
  Number, type and characteristics of each supported extension can be discovered
  dynamically at runtime.

  Given the unidirectional nature of the controller, an MHUv3 mailbox controller
  is composed of a MHU Sender (MHUS) containing a PostBox (PBX) block and a MHU
  Receiver (MHUR) containing a MailBox (MBX) block, where

   PBX is used to
      - Configure the MHU
      - Send Transfers to the Receiver
      - Optionally receive acknowledgment of a Transfer from the Receiver

   MBX is used to
      - Configure the MHU
      - Receive Transfers from the Sender
      - Optionally acknowledge Transfers sent by the Sender

  Both PBX and MBX need to be present and defined in the DT description if you
  need to establish a bidirectional communication, since you will have to
  acquire two distinct unidirectional channels, one for each block.

  As a consequence both blocks needs to be represented separately and specified
  as distinct DT nodes in order to properly describe their resources.

  Note that, though, thanks to the runtime discoverability, there is no need to
  identify the type of blocks with distinct compatibles.

  Following are the MHUv3 possible extensions.

  - Doorbell Extension (DBE): DBE defines a type of channel called a Doorbell
    Channel (DBCH). DBCH enables a single bit Transfer to be sent from the
    Sender to Receiver. The Transfer indicates that an event has occurred.
    When DBE is implemented, the number of DBCHs that an implementation of the
    MHU can support is between 1 and 128, numbered starting from 0 in ascending
    order and discoverable at run-time.
    Each DBCH contains 32 individual fields, referred to as flags, each of which
    can be used independently. It is possible for the Sender to send multiple
    Transfers at once using a single DBCH, so long as each Transfer uses
    a different flag in the DBCH.
    Optionally, data may be transmitted through an out-of-band shared memory
    region, wherein the MHU Doorbell is used strictly as an interrupt generation
    mechanism, but this is out of the scope of these bindings.

  - FastChannel Extension (FCE): FCE defines a type of channel called a Fast
    Channel (FCH). FCH is intended for lower overhead communication between
    Sender and Receiver at the expense of determinism. An FCH allows the Sender
    to update the channel value at any time, regardless of whether the previous
    value has been seen by the Receiver. When the Receiver reads the channel's
    content it gets the last value written to the channel.
    FCH is considered lossy in nature, and means that the Sender has no way of
    knowing if, or when, the Receiver will act on the Transfer.
    FCHs are expected to behave as RAM which generates interrupts when writes
    occur to the locations within the RAM.
    When FCE is implemented, the number of FCHs that an implementation of the
    MHU can support is between 1-1024, if the FastChannel word-size is 32-bits,
    or between 1-512, when the FastChannel word-size is 64-bits.
    FCHs are numbered from 0 in ascending order.
    Note that the number of FCHs and the word-size are implementation defined,
    not configurable but discoverable at run-time.
    Optionally, data may be transmitted through an out-of-band shared memory
    region, wherein the MHU FastChannel is used as an interrupt generation
    mechanism which carries also a pointer to such out-of-band data, but this
    is out of the scope of these bindings.

  - FIFO Extension (FE): FE defines a Channel type called a FIFO Channel (FFCH).
    FFCH allows a Sender to send
       - Multiple Transfers to the Receiver without having to wait for the
         previous Transfer to be acknowledged by the Receiver, as long as the
         FIFO has room for the Transfer.
       - Transfers which require the Receiver to provide acknowledgment.
       - Transfers which have in-band payload.
    In all cases, the data is guaranteed to be observed by the Receiver in the
    same order which the Sender sent it.
    When FE is implemented, the number of FFCHs that an implementation of the
    MHU can support is between 1 and 64, numbered starting from 0 in ascending
    order. The number of FFCHs, their depth (same for all implemented FFCHs) and
    the access-granularity are implementation defined, not configurable but
    discoverable at run-time.
    Optionally, additional data may be transmitted through an out-of-band shared
    memory region, wherein the MHU FIFO is used to transmit, in order, a small
    part of the payload (like a header) and a reference to the shared memory
    area holding the remaining, bigger, chunk of the payload, but this is out of
    the scope of these bindings.

properties:
  compatible:
    const: arm,mhuv3

  reg:
    maxItems: 1

  interrupts:
    minItems: 1
    maxItems: 74

  interrupt-names:
    description: |
      The MHUv3 controller generates a number of events some of which are used
      to generate interrupts; as a consequence it can expose a varying number of
      optional PBX/MBX interrupts, representing the events generated during the
      operation of the various transport protocols associated with different
      extensions. All interrupts of the MHU are level-sensitive.
      Some of these optional interrupts are defined per-channel, where the
      number of channels effectively available is implementation defined and
      run-time discoverable.
      In the following names are enumerated using patterns, with per-channel
      interrupts implicitly capped at the maximum channels allowed by the
      specification for each extension type.
      For the sake of simplicity maxItems is anyway capped to a most plausible
      number, assuming way less channels would be implemented than actually
      possible.

      The only mandatory interrupts on the MHU are:
        - combined
        - mbx-fch-xfer-<N> but only if mbx-fcgrp-xfer-<N> is not implemented.

    minItems: 1
    maxItems: 74
    items:
      oneOf:
        - const: combined
          description: PBX/MBX Combined interrupt
        - const: combined-ffch
          description: PBX/MBX FIFO Combined interrupt
        - pattern: '^ffch-low-tide-[0-9]+$'
          description: PBX/MBX FIFO Channel <N> Low Tide interrupt
        - pattern: '^ffch-high-tide-[0-9]+$'
          description: PBX/MBX FIFO Channel <N> High Tide interrupt
        - pattern: '^ffch-flush-[0-9]+$'
          description: PBX/MBX FIFO Channel <N> Flush interrupt
        - pattern: '^mbx-dbch-xfer-[0-9]+$'
          description: MBX Doorbell Channel <N> Transfer interrupt
        - pattern: '^mbx-fch-xfer-[0-9]+$'
          description: MBX FastChannel <N> Transfer interrupt
        - pattern: '^mbx-fchgrp-xfer-[0-9]+$'
          description: MBX FastChannel <N> Group Transfer interrupt
        - pattern: '^mbx-ffch-xfer-[0-9]+$'
          description: MBX FIFO Channel <N> Transfer interrupt
        - pattern: '^pbx-dbch-xfer-ack-[0-9]+$'
          description: PBX Doorbell Channel <N> Transfer Ack interrupt
        - pattern: '^pbx-ffch-xfer-ack-[0-9]+$'
          description: PBX FIFO Channel <N> Transfer Ack interrupt

  '#mbox-cells':
    description: |
      The first argument in the consumers 'mboxes' property represents the
      extension type, the second is for the channel number while the third
      depends on extension type.

      Extension types constants are defined in <dt-bindings/arm/mhuv3-dt.h>.

      Extension type for DBE is DBE_EXT and the third parameter represents the
      doorbell flag number to use.
      Extension type for FCE is FCE_EXT, third parameter unused.
      Extension type for FE is FE_EXT, third parameter unused.

      mboxes = <&mhu DBE_EXT 0 5>; // DBE, Doorbell Channel Window 0, doorbell 5.
      mboxes = <&mhu DBE_EXT 7>; // DBE, Doorbell Channel Window 1, doorbell 7.
      mboxes = <&mhu FCE_EXT 0 0>; // FCE, FastChannel Window 0.
      mboxes = <&mhu FCE_EXT 3 0>; // FCE, FastChannel Window 3.
      mboxes = <&mhu FE_EXT 1 0>; // FE, FIFO Channel Window 1.
      mboxes = <&mhu FE_EXT 7 0>; // FE, FIFO Channel Window 7.
    const: 3

  clocks:
    maxItems: 1

required:
  - compatible
  - reg
  - interrupts
  - interrupt-names
  - '#mbox-cells'

additionalProperties: false

examples:
  - |
    #include <dt-bindings/interrupt-controller/arm-gic.h>

    soc {
        #address-cells = <2>;
        #size-cells = <2>;

        mailbox@2aaa0000 {
            compatible = "arm,mhuv3";
            #mbox-cells = <3>;
            reg = <0 0x2aaa0000 0 0x10000>;
            clocks = <&clock 0>;
            interrupt-names = "combined", "pbx-dbch-xfer-ack-1",
                               "ffch-high-tide-0";
            interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>,
                         <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
        };

        mailbox@2ab00000 {
            compatible = "arm,mhuv3";
            #mbox-cells = <3>;
            reg = <0 0x2aab0000 0 0x10000>;
            clocks = <&clock 0>;
            interrupt-names = "combined", "mbx-dbch-xfer-1", "ffch-low-tide-0";
            interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>,
                         <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>,
                         <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
        };
    };
