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

title: ARM MHU Mailbox Controller

maintainers:
  - Jassi Brar <jaswinder.singh@linaro.org>

description: |
  The ARM's Message-Handling-Unit (MHU) is a mailbox controller that has 3
  independent channels/links to communicate with remote processor(s).  MHU links
  are hardwired on a platform. A link raises interrupt for any received data.
  However, there is no specified way of knowing if the sent data has been read
  by the remote. This driver assumes the sender polls STAT register and the
  remote clears it after having read the data.  The last channel is specified to
  be a 'Secure' resource, hence can't be used by Linux running NS.

  The MHU hardware also allows operations in doorbell mode. The MHU drives the
  interrupt signal using a 32-bit register, with all 32-bits logically ORed
  together. It provides a set of registers to enable software to set, clear and
  check the status of each of the bits of this register independently. The use
  of 32 bits per interrupt line enables software to provide more information
  about the source of the interrupt. For example, each bit of the register can
  be associated with a type of event that can contribute to raising the
  interrupt. Each of the 32-bits can be used as "doorbell" to alert the remote
  processor.

# We need a select here so we don't match all nodes with 'arm,primecell'
select:
  properties:
    compatible:
      contains:
        enum:
          - arm,mhu
          - arm,mhu-doorbell
  required:
    - compatible

properties:
  compatible:
    oneOf:
      - description: Data transfer mode
        items:
          - const: arm,mhu
          - const: arm,primecell

      - description: Doorbell mode
        items:
          - const: arm,mhu-doorbell
          - const: arm,primecell


  reg:
    maxItems: 1

  interrupts:
    items:
      - description: low-priority non-secure
      - description: high-priority non-secure
      - description: Secure

  clocks:
    maxItems: 1

  clock-names:
    items:
      - const: apb_pclk

  '#mbox-cells':
    description: |
      Set to 1 in data transfer mode and represents index of the channel.
      Set to 2 in doorbell mode and represents index of the channel and doorbell
      number.
    enum: [ 1, 2 ]

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

additionalProperties: false

examples:
  # Data transfer mode.
  - |
    soc {
        #address-cells = <2>;
        #size-cells = <2>;

        mhuA: mailbox@2b1f0000 {
            #mbox-cells = <1>;
            compatible = "arm,mhu", "arm,primecell";
            reg = <0 0x2b1f0000 0 0x1000>;
            interrupts = <0 36 4>, /* LP-NonSecure */
                         <0 35 4>, /* HP-NonSecure */
                         <0 37 4>; /* Secure */
            clocks = <&clock 0 2 1>;
            clock-names = "apb_pclk";
        };

        mhu_client_scb: scb@2e000000 {
            compatible = "fujitsu,mb86s70-scb-1.0";
            reg = <0 0x2e000000 0 0x4000>;
            mboxes = <&mhuA 1>; /* HP-NonSecure */
        };
    };

  # Doorbell mode.
  - |
    soc {
        #address-cells = <2>;
        #size-cells = <2>;

        mhuB: mailbox@2b2f0000 {
            #mbox-cells = <2>;
            compatible = "arm,mhu-doorbell", "arm,primecell";
            reg = <0 0x2b2f0000 0 0x1000>;
            interrupts = <0 36 4>, /* LP-NonSecure */
                         <0 35 4>, /* HP-NonSecure */
                         <0 37 4>; /* Secure */
            clocks = <&clock 0 2 1>;
            clock-names = "apb_pclk";
        };

        mhu_client_scpi: scpi@2f000000 {
            compatible = "arm,scpi";
            reg = <0 0x2f000000 0 0x200>;
            mboxes = <&mhuB 1 4>; /* HP-NonSecure, 5th doorbell */
        };
    };
