nvme/ds/controller/properties/
mod.rs1use self::{
2 aqa::AdminQueueAttributes, capabilities::ControllerCap, config::ControllerConfig,
3 status::ControllerStatus,
4};
5
6pub mod aqa;
7pub mod capabilities;
8pub mod config;
9pub mod status;
10
11#[repr(C)]
12pub struct ControllerProperties {
13 pub capabilities: ControllerCap,
14 pub version: u32,
15 pub int_mask_set: u32,
16 pub int_mask_clear: u32,
17 pub configuration: ControllerConfig,
18 resv: u32,
19 pub status: ControllerStatus,
20 pub nvm_subsystem_reset: u32,
21 pub admin_queue_attr: AdminQueueAttributes,
22 pub admin_subqueue_base_addr: u64,
23 pub admin_comqueue_base_addr: u64,
24 pub memory_buffer_location: u32,
25 pub memory_buffer_size: u32,
26 pub boot_partition_info: u32,
27 pub boot_partition_read_select: u32,
28 pub boot_partition_memory_buffer_location: u64,
29 pub memory_buffer_memory_space_control: u64,
30 pub memory_buffer_status: u32,
31 pub memory_buffer_elasticity_buffer_size: u32,
32 pub memory_buffer_sustained_write_throughput: u32,
33 pub nvm_subsystem_shutdown: u32,
34 pub controller_ready_timeouts: u32,
35 resv2: u32,
36 resv3: [u8; 0xD90], pub pmem_capabilities: u32,
38 pub pmem_region_control: u32,
39 pub pmem_region_status: u32,
40 pub pmem_region_elasticity_buffer_size: u32,
41 pub pmem_region_sustained_write_throughput: u32,
42 pub pmem_region_controller_mem_space_control_lower: u32,
43 pub pmem_region_controller_mem_space_control_upper: u32,
44}
45
46impl ControllerProperties {
47 pub fn version_maj(&self) -> u16 {
48 (self.version >> 16) as u16
49 }
50
51 pub fn version_min(&self) -> u8 {
52 ((self.version >> 8) & 0xff) as u8
53 }
54}