use device::io::mmio::Mmio;
#[repr(u8)]
pub enum FisType {
RegH2D = 0x27,
RegD2H = 0x34,
DmaAct = 0x39,
DmaSetup = 0x41,
Data = 0x46,
Bist = 0x58,
PioSetup = 0x5F,
DevBits = 0xA1,
}
#[repr(packed)]
pub struct FisRegH2D {
pub fis_type: Mmio<u8>,
pub pm: Mmio<u8>,
pub command: Mmio<u8>, pub featurel: Mmio<u8>,
pub lba0: Mmio<u8>, pub lba1: Mmio<u8>, pub lba2: Mmio<u8>, pub device: Mmio<u8>,
pub lba3: Mmio<u8>, pub lba4: Mmio<u8>, pub lba5: Mmio<u8>, pub featureh: Mmio<u8>,
pub countl: Mmio<u8>, pub counth: Mmio<u8>, pub icc: Mmio<u8>, pub control: Mmio<u8>,
pub rsv1: [Mmio<u8>; 4], }
#[repr(packed)]
pub struct FisRegD2H {
pub fis_type: Mmio<u8>,
pub pm: Mmio<u8>,
pub status: Mmio<u8>, pub error: Mmio<u8>,
pub lba0: Mmio<u8>, pub lba1: Mmio<u8>, pub lba2: Mmio<u8>, pub device: Mmio<u8>,
pub lba3: Mmio<u8>, pub lba4: Mmio<u8>, pub lba5: Mmio<u8>, pub rsv2: Mmio<u8>,
pub countl: Mmio<u8>, pub counth: Mmio<u8>, pub rsv3: [Mmio<u8>; 2],
pub rsv4: [Mmio<u8>; 4], }
#[repr(packed)]
pub struct FisData {
pub fis_type: Mmio<u8>,
pub pm: Mmio<u8>,
pub rsv1: [Mmio<u8>; 2],
pub data: [Mmio<u8>; 252], }
#[repr(packed)]
pub struct FisPioSetup {
pub fis_type: Mmio<u8>,
pub pm: Mmio<u8>,
pub status: Mmio<u8>, pub error: Mmio<u8>,
pub lba0: Mmio<u8>, pub lba1: Mmio<u8>, pub lba2: Mmio<u8>, pub device: Mmio<u8>,
pub lba3: Mmio<u8>, pub lba4: Mmio<u8>, pub lba5: Mmio<u8>, pub rsv2: Mmio<u8>,
pub countl: Mmio<u8>, pub counth: Mmio<u8>, pub rsv3: Mmio<u8>, pub e_status: Mmio<u8>,
pub tc: Mmio<u16>, pub rsv4: [Mmio<u8>; 2], }
#[repr(packed)]
pub struct FisDmaSetup {
pub fis_type: Mmio<u8>,
pub pm: Mmio<u8>,
pub rsv1: [Mmio<u8>; 2],
pub dma_buffer_id: Mmio<u64>,
pub rsv3: Mmio<u32>,
pub dma_buffer_offset: Mmio<u32>,
pub transfer_count: Mmio<u32>,
pub rsv6: Mmio<u32>, }