| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/mailbox/riscv,rpmi-shmem-mbox.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: RISC-V Platform Management Interface (RPMI) shared memory mailbox |
| |
| maintainers: |
| - Anup Patel <anup@brainfault.org> |
| |
| description: | |
| The RISC-V Platform Management Interface (RPMI) [1] defines a common shared |
| memory based RPMI transport. This RPMI shared memory transport integrates as |
| mailbox controller in the SBI implementation or supervisor software whereas |
| each RPMI service group is mailbox client in the SBI implementation and |
| supervisor software. |
| |
| =========================================== |
| References |
| =========================================== |
| |
| [1] RISC-V Platform Management Interface (RPMI) v1.0 (or higher) |
| https://github.com/riscv-non-isa/riscv-rpmi/releases |
| |
| properties: |
| compatible: |
| const: riscv,rpmi-shmem-mbox |
| |
| reg: |
| minItems: 2 |
| items: |
| - description: A2P request queue base address |
| - description: P2A acknowledgment queue base address |
| - description: P2A request queue base address |
| - description: A2P acknowledgment queue base address |
| - description: A2P doorbell address |
| |
| reg-names: |
| minItems: 2 |
| items: |
| - const: a2p-req |
| - const: p2a-ack |
| - enum: [ p2a-req, a2p-doorbell ] |
| - const: a2p-ack |
| - const: a2p-doorbell |
| |
| interrupts: |
| maxItems: 1 |
| description: |
| The RPMI shared memory transport supports P2A doorbell as a wired |
| interrupt and this property specifies the interrupt source. |
| |
| msi-parent: |
| description: |
| The RPMI shared memory transport supports P2A doorbell as a system MSI |
| and this property specifies the target MSI controller. |
| |
| riscv,slot-size: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| minimum: 64 |
| description: |
| Power-of-2 RPMI slot size of the RPMI shared memory transport. |
| |
| riscv,a2p-doorbell-value: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| default: 0x1 |
| description: |
| Value written to the 32-bit A2P doorbell register. |
| |
| riscv,p2a-doorbell-sysmsi-index: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: |
| The RPMI shared memory transport supports P2A doorbell as a system MSI |
| and this property specifies system MSI index to be used for configuring |
| the P2A doorbell MSI. |
| |
| "#mbox-cells": |
| const: 1 |
| description: |
| The first cell specifies RPMI service group ID. |
| |
| required: |
| - compatible |
| - reg |
| - reg-names |
| - riscv,slot-size |
| - "#mbox-cells" |
| |
| anyOf: |
| - required: |
| - interrupts |
| - required: |
| - msi-parent |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| // Example 1 (RPMI shared memory with only 2 queues): |
| mailbox@10080000 { |
| compatible = "riscv,rpmi-shmem-mbox"; |
| reg = <0x10080000 0x10000>, |
| <0x10090000 0x10000>; |
| reg-names = "a2p-req", "p2a-ack"; |
| msi-parent = <&imsic_mlevel>; |
| riscv,slot-size = <64>; |
| #mbox-cells = <1>; |
| }; |
| - | |
| // Example 2 (RPMI shared memory with only 4 queues): |
| mailbox@10001000 { |
| compatible = "riscv,rpmi-shmem-mbox"; |
| reg = <0x10001000 0x800>, |
| <0x10001800 0x800>, |
| <0x10002000 0x800>, |
| <0x10002800 0x800>, |
| <0x10003000 0x4>; |
| reg-names = "a2p-req", "p2a-ack", "p2a-req", "a2p-ack", "a2p-doorbell"; |
| msi-parent = <&imsic_mlevel>; |
| riscv,slot-size = <64>; |
| riscv,a2p-doorbell-value = <0x00008000>; |
| #mbox-cells = <1>; |
| }; |