12e8b4b6eSMark Kettenis# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
22e8b4b6eSMark Kettenis%YAML 1.2
32e8b4b6eSMark Kettenis---
42e8b4b6eSMark Kettenis$id: http://devicetree.org/schemas/interrupt-controller/msi-controller.yaml#
52e8b4b6eSMark Kettenis$schema: http://devicetree.org/meta-schemas/core.yaml#
62e8b4b6eSMark Kettenis
72e8b4b6eSMark Kettenistitle: MSI controller
82e8b4b6eSMark Kettenis
92e8b4b6eSMark Kettenismaintainers:
102e8b4b6eSMark Kettenis  - Marc Zyngier <maz@kernel.org>
112e8b4b6eSMark Kettenis
122e8b4b6eSMark Kettenisdescription: |
132e8b4b6eSMark Kettenis  An MSI controller signals interrupts to a CPU when a write is made
142e8b4b6eSMark Kettenis  to an MMIO address by some master. An MSI controller may feature a
152e8b4b6eSMark Kettenis  number of doorbells.
162e8b4b6eSMark Kettenis
172e8b4b6eSMark Kettenisproperties:
182e8b4b6eSMark Kettenis  "#msi-cells":
192e8b4b6eSMark Kettenis    description: |
202e8b4b6eSMark Kettenis      The number of cells in an msi-specifier, required if not zero.
212e8b4b6eSMark Kettenis
222e8b4b6eSMark Kettenis      Typically this will encode information related to sideband data,
232e8b4b6eSMark Kettenis      and will not encode doorbells or payloads as these can be
242e8b4b6eSMark Kettenis      configured dynamically.
252e8b4b6eSMark Kettenis
262e8b4b6eSMark Kettenis      The meaning of the msi-specifier is defined by the device tree
272e8b4b6eSMark Kettenis      binding of the specific MSI controller.
282e8b4b6eSMark Kettenis    enum: [0, 1]
292e8b4b6eSMark Kettenis
302e8b4b6eSMark Kettenis  msi-controller:
312e8b4b6eSMark Kettenis    description:
322e8b4b6eSMark Kettenis      Identifies the node as an MSI controller.
332e8b4b6eSMark Kettenis    $ref: /schemas/types.yaml#/definitions/flag
342e8b4b6eSMark Kettenis
35*da73f4eeSMark Kettenis  msi-ranges:
36*da73f4eeSMark Kettenis    description:
37*da73f4eeSMark Kettenis      A list of <phandle intspec span> tuples, where "phandle" is the
38*da73f4eeSMark Kettenis      parent interrupt controller, "intspec" is the starting/base
39*da73f4eeSMark Kettenis      interrupt specifier and "span" is the size of the
40*da73f4eeSMark Kettenis      range. Multiple ranges can be provided.
41*da73f4eeSMark Kettenis    $ref: /schemas/types.yaml#/definitions/phandle-array
42*da73f4eeSMark Kettenis
432e8b4b6eSMark Kettenisdependencies:
442e8b4b6eSMark Kettenis  "#msi-cells": [ msi-controller ]
452e8b4b6eSMark Kettenis
462e8b4b6eSMark KettenisadditionalProperties: true
47