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

title: MSI controller

maintainers:
  - Marc Zyngier <maz@kernel.org>

description: |
  An MSI controller signals interrupts to a CPU when a write is made
  to an MMIO address by some master. An MSI controller may feature a
  number of doorbells.

properties:
  "#msi-cells":
    description: |
      The number of cells in an msi-specifier, required if not zero.

      Typically this will encode information related to sideband data,
      and will not encode doorbells or payloads as these can be
      configured dynamically.

      The meaning of the msi-specifier is defined by the device tree
      binding of the specific MSI controller.
    enum: [0, 1]

  msi-controller:
    description:
      Identifies the node as an MSI controller.
    $ref: /schemas/types.yaml#/definitions/flag

  msi-ranges:
    description:
      A list of <phandle intspec span> tuples, where "phandle" is the
      parent interrupt controller, "intspec" is the starting/base
      interrupt specifier and "span" is the size of the
      range. Multiple ranges can be provided.
    $ref: /schemas/types.yaml#/definitions/phandle-array

dependencies:
  "#msi-cells": [ msi-controller ]

additionalProperties: true