dt-bindings: iommu: riscv: Add bindings for Tenstorrent RISC-V IOMMU

Extend the binding to cover details specific to the Tenstorrent RISC-V
IOMMU. In particular, a second register range is added which contains
M-privileged registers, e.g., PMAs and PMPs.

The RISC-V spec S-privileged registers remain in the first register
range and are compatible with "riscv,iommu" so the Linux driver does not
notice any difference, but the binding will be used by OpenSBI and
potentially other M-mode software.

Reviewed-by: Joel Stanley <joel@jms.id.au>
Acked-by: Conor Dooley <conor.dooley@microchip.com>
Acked-by: Joerg Roedel <joerg.roedel@amd.com>
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
[fustini: fix dt_binding_check errors]
Signed-off-by: Drew Fustini <fustini@kernel.org>
This commit is contained in:
Nicholas Piggin 2026-05-21 10:06:33 -07:00 committed by Drew Fustini
parent 0e400da642
commit 33583baeb1

View File

@ -32,22 +32,35 @@ properties:
# should be specified along with 'reg' property providing MMIO location.
compatible:
oneOf:
- items:
- description: Platform (non-PCIe) IOMMU implementations
items:
- enum:
- qemu,riscv-iommu
- tenstorrent,riscv-iommu
- const: riscv,iommu
- items:
- description: PCIe IOMMU implementations
items:
- enum:
- pci1efd,edf1
- const: riscv,pci-iommu
reg:
maxItems: 1
description:
For non-PCI devices this represents base address and size of for the
IOMMU memory mapped registers interface.
For PCI IOMMU hardware implementation this should represent an address
of the IOMMU, as defined in the PCI Bus Binding reference.
minItems: 1
items:
- description:
For non-PCI devices, base address and size of the IOMMU memory
mapped registers interface. For PCI IOMMU hardware
implementation, an address of the IOMMU, as defined in the PCI
Bus Binding reference.
- description:
Region containing platform specific MMRs for machine-mode
configuration, such as PMA and PMP registers.
reg-names:
minItems: 1
items:
- const: base
- const: machine
'#iommu-cells':
const: 1
@ -75,6 +88,26 @@ required:
additionalProperties: false
allOf:
- if:
properties:
compatible:
contains:
enum:
- tenstorrent,riscv-iommu
then:
properties:
reg:
minItems: 2
reg-names:
minItems: 2
else:
properties:
reg:
maxItems: 1
reg-names:
maxItems: 1
examples:
- |+
/* Example 1 (IOMMU device with wired interrupts) */
@ -145,3 +178,13 @@ examples:
};
};
};
- |+
/* Example 5 (Tenstorrent IOMMU device with MSIs) */
iommu5: iommu@d2020000 {
compatible = "tenstorrent,riscv-iommu", "riscv,iommu";
reg = <0xd2020000 0x10000>, <0xaa000000 0x10000>;
reg-names = "base", "machine";
msi-parent = <&imsics_smode>;
#iommu-cells = <1>;
};