| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/interrupt-controller/riscv,rpmi-system-msi.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: RISC-V RPMI system MSI service group based interrupt controller |
| |
| maintainers: |
| - Anup Patel <anup@brainfault.org> |
| |
| description: | |
| The RISC-V Platform Management Interface (RPMI) [1] defines a |
| messaging protocol which is modular and extensible. The supervisor |
| software can send/receive RPMI messages via SBI MPXY extension [2] |
| or some dedicated supervisor-mode RPMI transport. |
| |
| The RPMI specification [1] defines system MSI service group which |
| allow application processors to receive MSIs upon system events |
| such as P2A doorbell, graceful shutdown/reboot request, CPU hotplug |
| event, memory hotplug event, etc from the platform microcontroller. |
| The supervisor software can access RPMI system MSI service group via |
| SBI MPXY channel or some dedicated supervisor-mode RPMI transport. |
| |
| =========================================== |
| References |
| =========================================== |
| |
| [1] RISC-V Platform Management Interface (RPMI) v1.0 (or higher) |
| https://github.com/riscv-non-isa/riscv-rpmi/releases |
| |
| [2] RISC-V Supervisor Binary Interface (SBI) v3.0 (or higher) |
| https://github.com/riscv-non-isa/riscv-sbi-doc/releases |
| |
| allOf: |
| - $ref: /schemas/interrupt-controller.yaml# |
| |
| properties: |
| compatible: |
| description: |
| Intended for use by the supervisor software. |
| const: riscv,rpmi-system-msi |
| |
| mboxes: |
| maxItems: 1 |
| description: |
| Mailbox channel of the underlying RPMI transport or SBI message proxy channel. |
| |
| msi-parent: true |
| |
| interrupt-controller: true |
| |
| "#interrupt-cells": |
| const: 1 |
| |
| required: |
| - compatible |
| - mboxes |
| - msi-parent |
| - interrupt-controller |
| - "#interrupt-cells" |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| interrupt-controller { |
| compatible = "riscv,rpmi-system-msi"; |
| mboxes = <&mpxy_mbox 0x2000 0x0>; |
| msi-parent = <&imsic_slevel>; |
| interrupt-controller; |
| #interrupt-cells = <1>; |
| }; |
| ... |