1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
// SPDX-License-Identifier: MPL-2.0
use bitflags::bitflags;
bitflags! {
/// Global Command to enable functions in IOMMU. All field is write-only.
pub struct GlobalCommand: u32{
/// Compatibility Format Interrupt, only valid if interrupt-remapping is supported.
///
/// Interrupt remapping will block Compatibility format interrupts if set to 0.
/// Otherwise these interrupts will bypass interrupt remapping.
const CFI = 1 << 23;
/// Set Interrupt Remap Table Pointer, only valid if interrupt-remapping is supported.
///
/// Software sets this filed to set/update the interrupt remapping table pointer used
/// by hardware. The interrupt remapping table pointer is specified through the Interrupt
/// Remapping Table Address (IRTA_REG) register.
const SIRTP = 1 << 24;
/// Interrupt Remapping Enable, only valid if hardware support interrupt remapping.
/// Set to 1 if enable interrupt-remapping hardware.
///
/// Hardware reports the status of the interrupt remapping enable operation through the
/// IRES field in the Global Status register.
const IRE = 1 << 25;
/// Queued Invalidation Enable, only valid if hardware support queued invalidations.
/// Set to 1 to enable use of queued validations.
///
/// Hardware reports the status of queued invalidation enable operation through QIES
/// field in Global Status register.
const QIE = 1 << 26;
/// Write Buffer Flush, only valid for implementations requiring write buffer flushing.
///
/// Software sets this field to request that hardware flush the Root-Complex
/// internal write buffers. This is done to ensure any updates to the memory resident
/// remapping structures are not held in any internal write posting buffers.
///
/// Hardware reports the status of the write buffer flushing operation through WBFS
/// field in Global Status register.
const WBF = 1 << 27;
/// Set Root Table Pointer.
///
/// Software sets this field to set/update the root-table pointer (and translation
/// table mode) used by hardware. The root-table pointer (and translation table
/// mode) is specified through the Root Table Address (RTADDR_REG) register.
const SRTP = 1 << 30;
/// Translation Enable.
///
/// Software writes to this field to request hardware to enable/disable DMA remapping.
///
/// 0: Disable DMA remapping; 1: Enable DMA remapping.
///
/// Hardware reports the status of the translation enable operation through TES field
/// in the Global Status register.
const TE = 1 << 31;
}
}