/** @file LoongArch I/O Virtualization Table (IOVT) definitions. Copyright (C) 2026, Loongson Technology Corporation Limited. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent @par Reference(s): - LoongArch I/O Virtualization Table Specification, Version v0.1 (https://www.loongson.cn/uploads/images/2024110517404135188.LoongArch-IO-Virtualization-Table-Specification.pdf) - Advanced Configuration and Power Interface (ACPI) specification, Version 6.6 (https://uefi.org/specs/ACPI/6.6/) **/ #pragma once #include #pragma pack (1) typedef struct { EFI_ACPI_DESCRIPTION_HEADER Header; UINT16 IommuCount; UINT16 IommuOffset; UINT64 Reserved; } EFI_ACPI_IOVT_HEADER; #define EFI_ACPI_LOONGARCH_IOVT_REVISION 0x01 typedef struct { UINT16 Type; UINT16 Length; UINT32 Flags; UINT16 PciSegmentNumber; UINT16 PhysicalAddressWidth; UINT16 VirtualAddressWidth; UINT16 MaxPageLevel; UINT64 PageSizeSupported; UINT32 IommuDeviceId; UINT64 IommuBaseAddress; UINT32 IommuRegisterSize; UINT8 InterruptType; UINT8 Reserved[3]; UINT32 GlobalSystemInterrupt; UINT32 ProximityDomain; UINT32 MaxDeviceNum; UINT32 NumberOfDeviceEntries; UINT32 OffsetOfDeviceEntries; } EFI_ACPI_IOVT_IOMMU; #define EFI_ACPI_IOVT_TYPE_LOONGARCH_V1 0x0000 #define EFI_ACPI_IOVT_FLAG_PCI_DEVICE BIT0 #define EFI_ACPI_IOVT_FLAG_PROXIMITY_VALID BIT1 #define EFI_ACPI_IOVT_FLAG_DEVICE_SCOPE_SEGMENT BIT2 #define EFI_ACPI_IOVT_FLAG_HW_CAPABILITY BIT3 #define EFI_ACPI_IOVT_FLAG_MSI_ADDR_BYPASS BIT4 typedef struct { UINT8 Type; UINT8 Length; UINT8 Flags; UINT8 Reserved[3]; UINT16 DevId; } EFI_ACPI_IOVT_DEVICE_ENTRY; #define EFI_ACPI_IOVT_DEVICE_ENTRY_TYPE_PCI_DEVICE 0x00 #define EFI_ACPI_IOVT_DEVICE_ENTRY_TYPE_RANGE_START 0x01 #define EFI_ACPI_IOVT_DEVICE_ENTRY_TYPE_RANGE_END 0x02 #define EFI_ACPI_IOVT_IOMMU_LENGTH 64 #define EFI_ACPI_IOVT_DEVICE_ENTRY_LENGTH 8 #pragma pack ()