mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-04 04:06:26 +00:00
dt-bindings: iommu: riscv: Add bindings for RISC-V IOMMU
Add bindings for the RISC-V IOMMU device drivers. Co-developed-by: Anup Patel <apatel@ventanamicro.com> Signed-off-by: Anup Patel <apatel@ventanamicro.com> Reviewed-by: Conor Dooley <conor.dooley@microchip.com> Reviewed-by: Rob Herring (Arm) <robh@kernel.org> Signed-off-by: Tomasz Jeznach <tjeznach@rivosinc.com> Acked-by: Palmer Dabbelt <palmer@rivosinc.com> Link: https://lore.kernel.org/r/6c255602e296feaf0f005b498de4e6fdf8686ff7.1729059707.git.tjeznach@rivosinc.com Signed-off-by: Joerg Roedel <jroedel@suse.de>
This commit is contained in:
parent
8e929cb546
commit
14d050cd45
147
Documentation/devicetree/bindings/iommu/riscv,iommu.yaml
Normal file
147
Documentation/devicetree/bindings/iommu/riscv,iommu.yaml
Normal file
@ -0,0 +1,147 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/iommu/riscv,iommu.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: RISC-V IOMMU Architecture Implementation
|
||||
|
||||
maintainers:
|
||||
- Tomasz Jeznach <tjeznach@rivosinc.com>
|
||||
|
||||
description: |
|
||||
The RISC-V IOMMU provides memory address translation and isolation for
|
||||
input and output devices, supporting per-device translation context,
|
||||
shared process address spaces including the ATS and PRI components of
|
||||
the PCIe specification, two stage address translation and MSI remapping.
|
||||
It supports identical translation table format to the RISC-V address
|
||||
translation tables with page level access and protection attributes.
|
||||
Hardware uses in-memory command and fault reporting queues with wired
|
||||
interrupt or MSI notifications.
|
||||
|
||||
Visit https://github.com/riscv-non-isa/riscv-iommu for more details.
|
||||
|
||||
For information on assigning RISC-V IOMMU to its peripheral devices,
|
||||
see generic IOMMU bindings.
|
||||
|
||||
properties:
|
||||
# For PCIe IOMMU hardware compatible property should contain the vendor
|
||||
# and device ID according to the PCI Bus Binding specification.
|
||||
# Since PCI provides built-in identification methods, compatible is not
|
||||
# actually required. For non-PCIe hardware implementations 'riscv,iommu'
|
||||
# should be specified along with 'reg' property providing MMIO location.
|
||||
compatible:
|
||||
oneOf:
|
||||
- items:
|
||||
- enum:
|
||||
- qemu,riscv-iommu
|
||||
- const: riscv,iommu
|
||||
- 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.
|
||||
|
||||
'#iommu-cells':
|
||||
const: 1
|
||||
description:
|
||||
The single cell describes the requester id emitted by a master to the
|
||||
IOMMU.
|
||||
|
||||
interrupts:
|
||||
minItems: 1
|
||||
maxItems: 4
|
||||
description:
|
||||
Wired interrupt vectors available for RISC-V IOMMU to notify the
|
||||
RISC-V HARTS. The cause to interrupt vector is software defined
|
||||
using IVEC IOMMU register.
|
||||
|
||||
msi-parent: true
|
||||
|
||||
power-domains:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
- '#iommu-cells'
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |+
|
||||
/* Example 1 (IOMMU device with wired interrupts) */
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
iommu1: iommu@1bccd000 {
|
||||
compatible = "qemu,riscv-iommu", "riscv,iommu";
|
||||
reg = <0x1bccd000 0x1000>;
|
||||
interrupt-parent = <&aplic_smode>;
|
||||
interrupts = <32 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<33 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<34 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<35 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#iommu-cells = <1>;
|
||||
};
|
||||
|
||||
/* Device with two IOMMU device IDs, 0 and 7 */
|
||||
master1 {
|
||||
iommus = <&iommu1 0>, <&iommu1 7>;
|
||||
};
|
||||
|
||||
- |+
|
||||
/* Example 2 (IOMMU device with shared wired interrupt) */
|
||||
#include <dt-bindings/interrupt-controller/irq.h>
|
||||
|
||||
iommu2: iommu@1bccd000 {
|
||||
compatible = "qemu,riscv-iommu", "riscv,iommu";
|
||||
reg = <0x1bccd000 0x1000>;
|
||||
interrupt-parent = <&aplic_smode>;
|
||||
interrupts = <32 IRQ_TYPE_LEVEL_HIGH>;
|
||||
#iommu-cells = <1>;
|
||||
};
|
||||
|
||||
- |+
|
||||
/* Example 3 (IOMMU device with MSIs) */
|
||||
iommu3: iommu@1bcdd000 {
|
||||
compatible = "qemu,riscv-iommu", "riscv,iommu";
|
||||
reg = <0x1bccd000 0x1000>;
|
||||
msi-parent = <&imsics_smode>;
|
||||
#iommu-cells = <1>;
|
||||
};
|
||||
|
||||
- |+
|
||||
/* Example 4 (IOMMU PCIe device with MSIs) */
|
||||
bus {
|
||||
#address-cells = <2>;
|
||||
#size-cells = <2>;
|
||||
|
||||
pcie@30000000 {
|
||||
device_type = "pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
reg = <0x0 0x30000000 0x0 0x1000000>;
|
||||
ranges = <0x02000000 0x0 0x41000000 0x0 0x41000000 0x0 0x0f000000>;
|
||||
|
||||
/*
|
||||
* The IOMMU manages all functions in this PCI domain except
|
||||
* itself. Omit BDF 00:01.0.
|
||||
*/
|
||||
iommu-map = <0x0 &iommu0 0x0 0x8>,
|
||||
<0x9 &iommu0 0x9 0xfff7>;
|
||||
|
||||
/* The IOMMU programming interface uses slot 00:01.0 */
|
||||
iommu0: iommu@1,0 {
|
||||
compatible = "pci1efd,edf1", "riscv,pci-iommu";
|
||||
reg = <0x800 0 0 0 0>;
|
||||
#iommu-cells = <1>;
|
||||
};
|
||||
};
|
||||
};
|
@ -19890,6 +19890,13 @@ F: arch/riscv/
|
||||
N: riscv
|
||||
K: riscv
|
||||
|
||||
RISC-V IOMMU
|
||||
M: Tomasz Jeznach <tjeznach@rivosinc.com>
|
||||
L: iommu@lists.linux.dev
|
||||
L: linux-riscv@lists.infradead.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/iommu/riscv,iommu.yaml
|
||||
|
||||
RISC-V MICROCHIP FPGA SUPPORT
|
||||
M: Conor Dooley <conor.dooley@microchip.com>
|
||||
M: Daire McNamara <daire.mcnamara@microchip.com>
|
||||
|
Loading…
Reference in New Issue
Block a user