7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/* $Id$ */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/** @file
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * VBox storage devices: LsiLogic LSI53c1030 SCSI controller - Defines and structures.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/*
c58f1213e628a545081c70e26c6b67a841cff880vboxsync * Copyright (C) 2006-2012 Oracle Corporation
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync *
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * available from http://www.virtualbox.org. This file is free software;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * you can redistribute it and/or modify it under the terms of the GNU
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * General Public License (GPL) as published by the Free Software
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#ifndef __DEVLSILOGICSCSI_H__
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define __DEVLSILOGICSCSI_H__
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#include <iprt/stdint.h>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/*
367dfc76faea958fa6765efde770d4cc30f51295vboxsync * Custom fixed I/O ports for BIOS controller access. Note that these should
367dfc76faea958fa6765efde770d4cc30f51295vboxsync * not be in the ISA range (below 400h) to avoid conflicts with ISA device
367dfc76faea958fa6765efde770d4cc30f51295vboxsync * probing. Addresses in the 300h-340h range should be especially avoided.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
83c0ea1a66c25cde355b1f784bebe75928012d83vboxsync#define LSILOGIC_BIOS_IO_PORT 0x434
83c0ea1a66c25cde355b1f784bebe75928012d83vboxsync#define LSILOGIC_SAS_BIOS_IO_PORT 0x438
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
ba6206b9b2f863489c4b95178af0dbda929f6cc1vboxsync#define LSILOGICSCSI_REQUEST_QUEUE_DEPTH_DEFAULT 256
ba6206b9b2f863489c4b95178af0dbda929f6cc1vboxsync#define LSILOGICSCSI_REPLY_QUEUE_DEPTH_DEFAULT 256
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MAXIMUM_CHAIN_DEPTH 3
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGIC_NR_OF_ALLOWED_BIGGER_LISTS 100
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/** Equal for all devices */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_VENDOR_ID (0x1000)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/** SPI SCSI controller (LSI53C1030) */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SPI_CTRLNAME "LSI53C1030"
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SPI_DEVICE_ID (0x0030)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SPI_REVISION_ID (0x00)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SPI_CLASS_CODE (0x01)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SPI_SUBSYSTEM_VENDOR_ID (0x1000)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SPI_SUBSYSTEM_ID (0x8000)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SPI_PORTS_MAX 1
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SPI_BUSES_MAX 1
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SPI_DEVICES_PER_BUS_MAX 16
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SPI_DEVICES_MAX (LSILOGICSCSI_PCI_SPI_BUSES_MAX*LSILOGICSCSI_PCI_SPI_DEVICES_PER_BUS_MAX)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/** SAS SCSI controller (SAS1068 PCI-X Fusion-MPT SAS) */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SAS_CTRLNAME "SAS1068"
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SAS_DEVICE_ID (0x0054)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SAS_REVISION_ID (0x00)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SAS_CLASS_CODE (0x00)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SAS_SUBSYSTEM_VENDOR_ID (0x1000)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SAS_SUBSYSTEM_ID (0x8000)
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync#define LSILOGICSCSI_PCI_SAS_PORTS_MAX 256
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync#define LSILOGICSCSI_PCI_SAS_PORTS_DEFAULT 8
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync#define LSILOGICSCSI_PCI_SAS_DEVICES_PER_PORT_MAX 1
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_PCI_SAS_DEVICES_MAX (LSILOGICSCSI_PCI_SAS_PORTS_MAX * LSILOGICSCSI_PCI_SAS_DEVICES_PER_PORT_MAX)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * A SAS address.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack(1)
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef union SASADDRESS
db328d9a0c557c268222858740db4860d4f22a95vboxsync{
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** 64bit view. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint64_t u64Address;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** 32bit view. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t u32Address[2];
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** 16bit view. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16Address[4];
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Byte view. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Address[8];
db328d9a0c557c268222858740db4860d4f22a95vboxsync} SASADDRESS, *PSASADDRESS;
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack()
db328d9a0c557c268222858740db4860d4f22a95vboxsyncAssertCompileSize(SASADDRESS, 8);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Possible device types we support.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef enum LSILOGICCTRLTYPE
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** SPI SCSI controller (PCI dev id 0x0030) */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync LSILOGICCTRLTYPE_SCSI_SPI = 0,
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** SAS SCSI controller (PCI dev id 0x0054) */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync LSILOGICCTRLTYPE_SCSI_SAS = 1,
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** 32bit hack */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync LSILOGICCTRLTYPE_32BIT_HACK = 0x7fffffff
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} LSILOGICCTRLTYPE, *PLSILOGICCTRLTYPE;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync * A simple SG element for a 64bit address.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptSGEntrySimple64
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Length of the buffer this entry describes. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u24Length: 24;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether this element is the end of the list. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fEndOfList: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether the address is 32bit or 64bits wide. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned f64BitAddress: 1;
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync /** Flag whether this buffer contains data to be transferred or is the destination. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fBufferContainsData: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether this is a local address or a system address. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fLocalAddress: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Element type. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u2ElementType: 2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether this is the last element of the buffer. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fEndOfBuffer: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether this is the last element of the current segment. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fLastElement: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Lower 32bits of the address of the data buffer. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u32DataBufferAddressLow: 32;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Upper 32bits of the address of the data buffer. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u32DataBufferAddressHigh: 32;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptSGEntrySimple64, *PMptSGEntrySimple64;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptSGEntrySimple64, 12);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync * A simple SG element for a 32bit address.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptSGEntrySimple32
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Length of the buffer this entry describes. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u24Length: 24;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether this element is the end of the list. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fEndOfList: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether the address is 32bit or 64bits wide. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned f64BitAddress: 1;
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync /** Flag whether this buffer contains data to be transferred or is the destination. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fBufferContainsData: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether this is a local address or a system address. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fLocalAddress: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Element type. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u2ElementType: 2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether this is the last element of the buffer. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fEndOfBuffer: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether this is the last element of the current segment. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fLastElement: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Lower 32bits of the address of the data buffer. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u32DataBufferAddressLow: 32;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptSGEntrySimple32, *PMptSGEntrySimple32;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptSGEntrySimple32, 8);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * A chain SG element.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptSGEntryChain
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Size of the segment. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u16Length: 16;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Offset in 32bit words of the next chain element in the segment
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * identified by this element. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8NextChainOffset: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fReserved0: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether the address is 32bit or 64bits wide. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned f64BitAddress: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fReserved1: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether this is a local address or a system address. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fLocalAddress: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Element type. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u2ElementType: 2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether this is the last element of the buffer. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u2Reserved2: 2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Lower 32bits of the address of the data buffer. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u32SegmentAddressLow: 32;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Upper 32bits of the address of the data buffer. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u32SegmentAddressHigh: 32;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptSGEntryChain, *PMptSGEntryChain;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptSGEntryChain, 12);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef union MptSGEntryUnion
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptSGEntrySimple64 Simple64;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptSGEntrySimple32 Simple32;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptSGEntryChain Chain;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptSGEntryUnion, *PMptSGEntryUnion;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * MPT Fusion message header - Common for all message frames.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * This is filled in by the guest.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptMessageHdr
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function dependent data. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16FunctionDependent;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Chain offset. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8ChainOffset;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The function code. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Function;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function dependent data. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t au8FunctionDependent[3];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message flags. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message context - Unique ID from the guest unmodified by the device. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptMessageHdr, *PMptMessageHdr;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptMessageHdr, 12);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/** Defined function codes found in the message header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_MESSAGE_HDR_FUNCTION_SCSI_IO_REQUEST (0x00)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_MESSAGE_HDR_FUNCTION_SCSI_TASK_MGMT (0x01)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_MESSAGE_HDR_FUNCTION_IOC_INIT (0x02)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_MESSAGE_HDR_FUNCTION_IOC_FACTS (0x03)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_MESSAGE_HDR_FUNCTION_CONFIG (0x04)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_MESSAGE_HDR_FUNCTION_PORT_FACTS (0x05)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_MESSAGE_HDR_FUNCTION_PORT_ENABLE (0x06)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_MESSAGE_HDR_FUNCTION_EVENT_NOTIFICATION (0x07)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_MESSAGE_HDR_FUNCTION_EVENT_ACK (0x08)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_MESSAGE_HDR_FUNCTION_FW_DOWNLOAD (0x09)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_MESSAGE_HDR_FUNCTION_TARGET_CMD_BUFFER_POST (0x0A)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_MESSAGE_HDR_FUNCTION_TARGET_ASSIST (0x0B)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_MESSAGE_HDR_FUNCTION_TARGET_STATUS_SEND (0x0C)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_MESSAGE_HDR_FUNCTION_TARGET_MODE_ABORT (0x0D)
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync#define MPT_MESSAGE_HDR_FUNCTION_FW_UPLOAD (0x12)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#ifdef DEBUG
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Function names
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncstatic const char * const g_apszMPTFunctionNames[] =
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync "SCSI I/O Request",
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync "SCSI Task Management",
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync "IOC Init",
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync "IOC Facts",
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync "Config",
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync "Port Facts",
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync "Port Enable",
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync "Event Notification",
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync "Event Ack",
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync "Firmware Download"
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync};
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#endif
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Default reply message.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Send from the device to the guest upon completion of a request.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync #pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptDefaultReplyMessage
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function dependent data. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16FunctionDependent;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Length of the message in 32bit DWords. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function which completed. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Function;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function dependent. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t au8FunctionDependent[3];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message flags. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message context given in the request. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function dependent status code. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16FunctionDependentStatus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Status of the IOC. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16IOCStatus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Additional log info. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32IOCLogInfo;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptDefaultReplyMessage, *PMptDefaultReplyMessage;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptDefaultReplyMessage, 20);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * IO controller init request.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptIOCInitRequest
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Which system send this init request. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8WhoInit;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Chain offset in the SG list. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8ChainOffset;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function to execute. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Function;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flags */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Flags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Maximum number of devices the driver can handle. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MaxDevices;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Maximum number of buses the driver can handle. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MaxBuses;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message flags. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message context ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reply frame size. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16ReplyFrameSize;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Upper 32bit part of the 64bit address the message frames are in.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * That means all frames must be in the same 4GB segment. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32HostMfaHighAddr;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Upper 32bit of the sense buffer. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32SenseBufferHighAddr;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptIOCInitRequest, *PMptIOCInitRequest;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptIOCInitRequest, 24);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * IO controller init reply.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptIOCInitReply
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Which subsystem send this init request. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8WhoInit;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message length */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Function;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flags */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Flags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Maximum number of devices the driver can handle. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MaxDevices;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Maximum number of busses the driver can handle. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MaxBuses;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message flags. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message context ID */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IO controller status. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16IOCStatus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IO controller log information. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32IOCLogInfo;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptIOCInitReply, *PMptIOCInitReply;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptIOCInitReply, 20);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * IO controller facts request.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptIOCFactsRequest
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Chain offset in SG list. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8ChainOffset;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function number. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Function;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved[3];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message flags. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message context ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptIOCFactsRequest, *PMptIOCFactsRequest;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptIOCFactsRequest, 12);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * IO controller facts reply.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptIOCFactsReply
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message version. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16MessageVersion;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message length. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function number. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Function;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IO controller number */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8IOCNumber;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message flags. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message context ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IO controller exceptions */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16IOCExceptions;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IO controller status. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16IOCStatus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IO controller log information. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32IOCLogInfo;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Maximum chain depth. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MaxChainDepth;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The current value of the WhoInit field. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8WhoInit;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Block size. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8BlockSize;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flags. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Flags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Depth of the reply queue. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16ReplyQueueDepth;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Size of a request frame. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16RequestFrameSize;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Product ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16ProductID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Current value of the high 32bit MFA address. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32CurrentHostMFAHighAddr;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Global credits - Number of entries allocated to queues */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16GlobalCredits;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Number of ports on the IO controller */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8NumberOfPorts;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Event state. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8EventState;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Current value of the high 32bit sense buffer address. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32CurrentSenseBufferHighAddr;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Current reply frame size. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16CurReplyFrameSize;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Maximum number of devices. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MaxDevices;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Maximum number of buses. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MaxBuses;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Size of the firmware image. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32FwImageSize;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Firmware version */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32FWVersion;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptIOCFactsReply, *PMptIOCFactsReply;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptIOCFactsReply, 60);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Port facts request
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptPortFactsRequest
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message length. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function number. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Function;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Port number to get facts for. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PortNumber;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message flags. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message context ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptPortFactsRequest, *PMptPortFactsRequest;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptPortFactsRequest, 12);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Port facts reply.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptPortFactsReply
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message length. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function number. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Function;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Port number the facts are for. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PortNumber;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message flags. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message context ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IO controller status. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16IOCStatus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IO controller log information. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32IOCLogInfo;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Port type */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PortType;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Maximum number of devices on this port. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16MaxDevices;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** SCSI ID of this port on the attached bus. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16PortSCSIID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Protocol flags. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16ProtocolFlags;
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync /** Maximum number of target command buffers which can be posted to this port at a time. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16MaxPostedCmdBuffers;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Maximum number of target IDs that remain persistent between power/reset cycles. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16MaxPersistentIDs;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Maximum number of LAN buckets. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16MaxLANBuckets;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved4;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptPortFactsReply, *PMptPortFactsReply;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptPortFactsReply, 40);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Port Enable request.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptPortEnableRequest
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message length. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function number. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Function;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Port number to enable. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PortNumber;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message flags. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message context ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptPortEnableRequest, *PMptPortEnableRequest;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptPortEnableRequest, 12);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Port enable reply.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptPortEnableReply
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message length. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function number. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Function;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Port number which was enabled. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PortNumber;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message flags. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message context ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IO controller status */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16IOCStatus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IO controller log information. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32IOCLogInfo;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptPortEnableReply, *PMptPortEnableReply;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptPortEnableReply, 20);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Event notification request.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptEventNotificationRequest
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Switch - Turns event notification on and off. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Switch;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Chain offset. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8ChainOffset;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function number. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Function;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8reserved2[3];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message flags. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message context ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptEventNotificationRequest, *PMptEventNotificationRequest;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptEventNotificationRequest, 12);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Event notification reply.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptEventNotificationReply
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Event data length. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16EventDataLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message length. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function number. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Function;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Ack required. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8AckRequired;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message flags. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message context ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IO controller status. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16IOCStatus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IO controller log information. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32IOCLogInfo;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Notification event. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32Event;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Event context. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32EventContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Event data. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32EventData;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptEventNotificationReply, *PMptEventNotificationReply;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptEventNotificationReply, 32);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_EVENT_EVENT_CHANGE (0x0000000a)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync/**
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync * FW download request.
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync#pragma pack(1)
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsynctypedef struct MptFWDownloadRequest
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync{
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Switch - Turns event notification on and off. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8ImageType;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Reserved. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8Reserved1;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Chain offset. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8ChainOffset;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Function number. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8Function;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Reserved. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8Reserved2[3];
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Message flags. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8MessageFlags;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Message context ID. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint32_t u32MessageContext;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync} MptFWDownloadRequest, *PMptFWDownloadRequest;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync#pragma pack()
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsyncAssertCompileSize(MptFWDownloadRequest, 12);
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync#define MPT_FW_DOWNLOAD_REQUEST_IMAGE_TYPE_RESERVED 0
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync#define MPT_FW_DOWNLOAD_REQUEST_IMAGE_TYPE_FIRMWARE 1
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync#define MPT_FW_DOWNLOAD_REQUEST_IMAGE_TYPE_MPI_BIOS 2
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync#define MPT_FW_DOWNLOAD_REQUEST_IMAGE_TYPE_NVDATA 3
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync/**
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync * FW download reply.
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync#pragma pack(1)
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsynctypedef struct MptFWDownloadReply
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync{
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Reserved. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint16_t u16Reserved1;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Message length. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8MessageLength;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Function number. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8Function;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Reserved. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8Reserved2[3];
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Message flags. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8MessageFlags;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Message context ID. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint32_t u32MessageContext;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Reserved. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint16_t u16Reserved2;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** IO controller status. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint16_t u16IOCStatus;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** IO controller log information. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint32_t u32IOCLogInfo;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync} MptFWDownloadReply, *PMptFWDownloadReply;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync#pragma pack()
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsyncAssertCompileSize(MptFWDownloadReply, 20);
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync/**
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync * FW upload request.
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync#pragma pack(1)
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsynctypedef struct MptFWUploadRequest
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync{
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Requested image type. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8ImageType;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Reserved. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8Reserved1;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Chain offset. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8ChainOffset;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Function number. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8Function;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Reserved. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8Reserved2[3];
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Message flags. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8MessageFlags;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Message context ID. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint32_t u32MessageContext;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync} MptFWUploadRequest, *PMptFWUploadRequest;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync#pragma pack()
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsyncAssertCompileSize(MptFWUploadRequest, 12);
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync/**
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync * FW upload reply.
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync#pragma pack(1)
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsynctypedef struct MptFWUploadReply
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync{
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Image type. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8ImageType;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Reserved. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8Reserved1;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Message length. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8MessageLength;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Function number. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8Function;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Reserved. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8Reserved2[3];
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Message flags. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint8_t u8MessageFlags;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Message context ID. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint32_t u32MessageContext;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Reserved. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint16_t u16Reserved2;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** IO controller status. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint16_t u16IOCStatus;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** IO controller log information. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint32_t u32IOCLogInfo;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync /** Uploaded image size. */
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync uint32_t u32ActualImageSize;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync} MptFWUploadReply, *PMptFWUploadReply;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync#pragma pack()
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsyncAssertCompileSize(MptFWUploadReply, 24);
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * SCSI IO Request
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptSCSIIORequest
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Target ID */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8TargetID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Bus number */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Bus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Chain offset */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8ChainOffset;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function number. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Function;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** CDB length. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8CDBLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Sense buffer length. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8SenseBufferLength;
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message flags. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message context ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** LUN */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t au8LUN[8];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Control values. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32Control;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The CDB. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t au8CDB[16];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Data length. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32DataLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Sense buffer low 32bit address. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32SenseBufferLowAddress;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptSCSIIORequest, *PMptSCSIIORequest;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptSCSIIORequest, 48);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_SCSIIO_REQUEST_CONTROL_TXDIR_GET(x) (((x) & 0x3000000) >> 24)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_SCSIIO_REQUEST_CONTROL_TXDIR_NONE (0x0)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_SCSIIO_REQUEST_CONTROL_TXDIR_WRITE (0x1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_SCSIIO_REQUEST_CONTROL_TXDIR_READ (0x2)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * SCSI IO error reply.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptSCSIIOErrorReply
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Target ID */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8TargetID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Bus number */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Bus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message length. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function number. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Function;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** CDB length */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8CDBLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Sense buffer length */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8SenseBufferLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message flags */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message context ID */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** SCSI status. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8SCSIStatus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** SCSI state */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8SCSIState;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IO controller status */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16IOCStatus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IO controller log information */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32IOCLogInfo;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Transfer count */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32TransferCount;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Sense count */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32SenseCount;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Response information */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32ResponseInfo;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptSCSIIOErrorReply, *PMptSCSIIOErrorReply;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptSCSIIOErrorReply, 32);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_SCSI_IO_ERROR_SCSI_STATE_AUTOSENSE_VALID (0x01)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_SCSI_IO_ERROR_SCSI_STATE_TERMINATED (0x08)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync * IOC status codes specific to the SCSI I/O error reply.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_SCSI_IO_ERROR_IOCSTATUS_INVALID_BUS (0x0041)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_SCSI_IO_ERROR_IOCSTATUS_INVALID_TARGETID (0x0042)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_SCSI_IO_ERROR_IOCSTATUS_DEVICE_NOT_THERE (0x0043)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * SCSI task management request.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptSCSITaskManagementRequest
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Target ID */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8TargetID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Bus number */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Bus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Chain offset */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8ChainOffset;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function number */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Function;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Task type */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8TaskType;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message flags */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message context ID */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** LUN */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t au8LUN[8];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t auReserved[28];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Task message context ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32TaskMessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptSCSITaskManagementRequest, *PMptSCSITaskManagementRequest;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptSCSITaskManagementRequest, 52);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * SCSI task management reply.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptSCSITaskManagementReply
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Target ID */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8TargetID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Bus number */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Bus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message length */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function number */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Function;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Task type */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8TaskType;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message flags */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message context ID */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IO controller status */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16IOCStatus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IO controller log information */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32IOCLogInfo;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Termination count */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32TerminationCount;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptSCSITaskManagementReply, *PMptSCSITaskManagementReply;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptSCSITaskManagementReply, 24);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Page address for SAS expander page types.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack(1)
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef union MptConfigurationPageAddressSASExpander
db328d9a0c557c268222858740db4860d4f22a95vboxsync{
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16Handle;
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16Reserved;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } Form0And2;
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16Handle;
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8PhyNum;
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Reserved;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } Form1;
db328d9a0c557c268222858740db4860d4f22a95vboxsync} MptConfigurationPageAddressSASExpander, *PMptConfigurationPageAddressSASExpander;
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack()
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Page address for SAS device page types.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack(1)
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef union MptConfigurationPageAddressSASDevice
db328d9a0c557c268222858740db4860d4f22a95vboxsync{
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16Handle;
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16Reserved;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } Form0And2;
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8TargetID;
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Bus;
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Reserved;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } Form1;
db328d9a0c557c268222858740db4860d4f22a95vboxsync} MptConfigurationPageAddressSASDevice, *PMptConfigurationPageAddressSASDevice;
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack()
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Page address for SAS PHY page types.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack(1)
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef union MptConfigurationPageAddressSASPHY
db328d9a0c557c268222858740db4860d4f22a95vboxsync{
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8PhyNumber;
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Reserved[3];
db328d9a0c557c268222858740db4860d4f22a95vboxsync } Form0;
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16Index;
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16Reserved;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } Form1;
db328d9a0c557c268222858740db4860d4f22a95vboxsync} MptConfigurationPageAddressSASPHY, *PMptConfigurationPageAddressSASPHY;
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack()
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Page address for SAS Enclosure page types.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack(1)
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef struct MptConfigurationPageAddressSASEnclosure
db328d9a0c557c268222858740db4860d4f22a95vboxsync{
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16Handle;
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16Reserved;
db328d9a0c557c268222858740db4860d4f22a95vboxsync} MptConfigurationPageAddressSASEnclosure, *PMptConfigurationPageAddressSASEnclosure;
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack()
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Union of all possible address types.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack(1)
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef union MptConfigurationPageAddress
db328d9a0c557c268222858740db4860d4f22a95vboxsync{
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** 32bit view. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t u32PageAddress;
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Port number to get the configuration page for. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8PortNumber;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Reserved. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Reserved[3];
db328d9a0c557c268222858740db4860d4f22a95vboxsync } MPIPortNumber;
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Target ID to get the configuration page for. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8TargetID;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Bus number to get the configuration page for. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Bus;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Reserved. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Reserved[2];
db328d9a0c557c268222858740db4860d4f22a95vboxsync } BusAndTargetId;
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageAddressSASExpander SASExpander;
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageAddressSASDevice SASDevice;
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageAddressSASPHY SASPHY;
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageAddressSASEnclosure SASEnclosure;
db328d9a0c557c268222858740db4860d4f22a95vboxsync} MptConfigurationPageAddress, *PMptConfigurationPageAddress;
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack()
db328d9a0c557c268222858740db4860d4f22a95vboxsyncAssertCompileSize(MptConfigurationPageAddress, 4);
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define MPT_CONFIGURATION_PAGE_ADDRESS_GET_SAS_FORM(x) (((x).u32PageAddress >> 28) & 0x0f)
db328d9a0c557c268222858740db4860d4f22a95vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Configuration request
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationRequest
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Action code. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Action;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Chain offset. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8ChainOffset;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function number. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Function;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Extended page length. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16ExtPageLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Extended page type */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8ExtPageType;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message flags. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message context ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved2[8];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Version number of the page. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PageVersion;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Length of the page in 32bit Dwords. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PageLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Page number to access. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PageNumber;
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync /** Type of the page being accessed. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PageType;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Page type dependent address. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageAddress PageAddress;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Simple SG element describing the buffer. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptSGEntrySimple64 SimpleSGElement;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationRequest, *PMptConfigurationRequest;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationRequest, 40);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/** Possible action codes. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_REQUEST_ACTION_HEADER (0x00)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_REQUEST_ACTION_READ_CURRENT (0x01)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_REQUEST_ACTION_WRITE_CURRENT (0x02)
fbb253906aeb0ea1fc004ab4241d395d97ae221evboxsync#define MPT_CONFIGURATION_REQUEST_ACTION_DEFAULT (0x03)
fbb253906aeb0ea1fc004ab4241d395d97ae221evboxsync#define MPT_CONFIGURATION_REQUEST_ACTION_WRITE_NVRAM (0x04)
fbb253906aeb0ea1fc004ab4241d395d97ae221evboxsync#define MPT_CONFIGURATION_REQUEST_ACTION_READ_DEFAULT (0x05)
fbb253906aeb0ea1fc004ab4241d395d97ae221evboxsync#define MPT_CONFIGURATION_REQUEST_ACTION_READ_NVRAM (0x06)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/** Page type codes. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_REQUEST_PAGE_TYPE_IO_UNIT (0x00)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_REQUEST_PAGE_TYPE_IOC (0x01)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_REQUEST_PAGE_TYPE_BIOS (0x02)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_REQUEST_PAGE_TYPE_SCSI_PORT (0x03)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_REQUEST_PAGE_TYPE_EXTENDED (0x0F)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Configuration reply.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationReply
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Action code. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Action;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message length. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Function number. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Function;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Extended page length. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16ExtPageLength;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Extended page type */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8ExtPageType;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message flags. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MessageFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Message context ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MessageContext;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** I/O controller status. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16IOCStatus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** I/O controller log information. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32IOCLogInfo;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Version number of the page. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PageVersion;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Length of the page in 32bit Dwords. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PageLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Page number to access. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PageNumber;
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync /** Type of the page being accessed. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PageType;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationReply, *PMptConfigurationReply;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationReply, 24);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/** Additional I/O controller status codes for the configuration reply. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_IOCSTATUS_CONFIG_INVALID_ACTION (0x0020)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_IOCSTATUS_CONFIG_INVALID_TYPE (0x0021)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_IOCSTATUS_CONFIG_INVALID_PAGE (0x0022)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_IOCSTATUS_CONFIG_INVALID_DATA (0x0023)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_IOCSTATUS_CONFIG_NO_DEFAULTS (0x0024)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_IOCSTATUS_CONFIG_CANT_COMMIT (0x0025)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Union of all possible request messages.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef union MptRequestUnion
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptMessageHdr Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptIOCInitRequest IOCInit;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptIOCFactsRequest IOCFacts;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptPortFactsRequest PortFacts;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptPortEnableRequest PortEnable;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptEventNotificationRequest EventNotification;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptSCSIIORequest SCSIIO;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptSCSITaskManagementRequest SCSITaskManagement;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationRequest Configuration;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync MptFWDownloadRequest FWDownload;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync MptFWUploadRequest FWUpload;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptRequestUnion, *PMptRequestUnion;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Union of all possible reply messages.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef union MptReplyUnion
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** 16bit view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t au16Reply[30];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptDefaultReplyMessage Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptIOCInitReply IOCInit;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptIOCFactsReply IOCFacts;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptPortFactsReply PortFacts;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptPortEnableReply PortEnable;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptEventNotificationReply EventNotification;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptSCSIIOErrorReply SCSIIOError;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptSCSITaskManagementReply SCSITaskManagement;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationReply Configuration;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync MptFWDownloadReply FWDownload;
2d6a7a3d0e5d5359eb44ddfa031d6e2838ee00d4vboxsync MptFWUploadReply FWUpload;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptReplyUnion, *PMptReplyUnion;
889b1054c3a6dfe0727b1f3e89a23a102b66ef84vboxsyncAssertCompileSize(MptReplyUnion, 60);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync/**
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync * Firmware image header.
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync#pragma pack(1)
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsynctypedef struct FwImageHdr
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync{
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** ARM branch instruction. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint32_t u32ArmBrInsn;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** Signature part 1. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint32_t u32Signature1;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** Signature part 2. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint32_t u32Signature2;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** Signature part 3. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint32_t u32Signature3;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** Another ARM branch instruction. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint32_t u32ArmBrInsn2;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** Yet another ARM branch instruction. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint32_t u32ArmBrInsn3;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** Reserved. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint32_t u32Reserved;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** Checksum of the image. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint32_t u32Checksum;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** Vendor ID. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint16_t u16VendorId;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** Product ID. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint16_t u16ProductId;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** Firmware version. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint32_t u32FwVersion;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** Firmware sequencer Code version. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint32_t u32SeqCodeVersion;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** Image size in bytes including the header. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint32_t u32ImageSize;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** Offset of the first extended image header. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint32_t u32NextImageHeaderOffset;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** Start address of the image in IOC memory. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint32_t u32LoadStartAddress;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** Absolute start address of the Iop ARM. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint32_t u32IopResetVectorValue;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** Address of the IopResetVector register. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint32_t u32IopResetVectorRegAddr;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** Marker value for what utility. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint32_t u32VersionNameWhat;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** ASCII string of version. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint8_t aszVersionName[256];
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** Marker value for what utility. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint32_t u32VendorNameWhat;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync /** ASCII string of vendor name. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync uint8_t aszVendorName[256];
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync} FwImageHdr, *PFwImageHdr;
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync#pragma pack()
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsyncAssertCompileSize(FwImageHdr, 584);
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync/** First part of the signature. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync#define LSILOGIC_FWIMGHDR_SIGNATURE1 UINT32_C(0x5aeaa55a)
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync/** Second part of the signature. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync#define LSILOGIC_FWIMGHDR_SIGNATURE2 UINT32_C(0xa55aeaa5)
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync/** Third part of the signature. */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync#define LSILOGIC_FWIMGHDR_SIGNATURE3 UINT32_C(0x5aa55aea)
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync/** Load address of the firmware image to watch for,
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync * seen used by Solaris 9. When this value is written to the
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync * diagnostic address register we know a firmware image is downloaded.
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync */
98bbb32c6a77e74d75a9c0075375de0d9eb5ca3cvboxsync#define LSILOGIC_FWIMGHDR_LOAD_ADDRESS UINT32_C(0x21ff5e00)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Configuration Page attributes.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_PAGE_ATTRIBUTE_READONLY (0x00)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_PAGE_ATTRIBUTE_CHANGEABLE (0x10)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_PAGE_ATTRIBUTE_PERSISTENT (0x20)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_PAGE_ATTRIBUTE_PERSISTENT_READONLY (0x30)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_PAGE_ATTRIBUTE_GET(u8PageType) ((u8PageType) & 0xf0)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Configuration Page types.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_IO_UNIT (0x00)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_IOC (0x01)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_BIOS (0x02)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_SCSI_SPI_PORT (0x03)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_SCSI_SPI_DEVICE (0x04)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_MANUFACTURING (0x09)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_EXTENDED (0x0F)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_GET(u8PageType) ((u8PageType) & 0x0f)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Extented page types.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_EXTENDED_SASIOUNIT (0x10)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_EXTENDED_SASEXPANDER (0x11)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_EXTENDED_SASDEVICE (0x12)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_EXTENDED_SASPHYS (0x13)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_EXTENDED_LOG (0x14)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_EXTENDED_ENCLOSURE (0x15)
db328d9a0c557c268222858740db4860d4f22a95vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Configuration Page header - Common to all pages.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageHeader
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Version of the page. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PageVersion;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The length of the page in 32bit D-Words. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PageLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Number of the page. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PageNumber;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Type of the page. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PageType;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageHeader, *PMptConfigurationPageHeader;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageHeader, 4);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Extended configuration page header - Common to all extended pages.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptExtendedConfigurationPageHeader
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Version of the page. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PageVersion;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Number of the page. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PageNumber;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Type of the page. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PageType;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Extended page length. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16ExtPageLength;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Extended page type. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8ExtPageType;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptExtendedConfigurationPageHeader, *PMptExtendedConfigurationPageHeader;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptExtendedConfigurationPageHeader, 8);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Manufacturing page 0. - Readonly.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageManufacturing0
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[76];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Name of the chip. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abChipName[16];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Chip revision. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abChipRevision[8];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Board name. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abBoardName[16];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Board assembly. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abBoardAssembly[16];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Board tracer number. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abBoardTracerNumber[16];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageManufacturing0, *PMptConfigurationPageManufacturing0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageManufacturing0, 76);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Manufacturing page 1. - Readonly Persistent.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageManufacturing1
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Union */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync union
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync {
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Byte view */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint8_t abPageData[260];
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Field view */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync struct
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync {
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** The omnipresent header. */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync MptConfigurationPageHeader Header;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** VPD info - don't know what belongs here so all zero. */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint8_t abVPDInfo[256];
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync } fields;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageManufacturing1, *PMptConfigurationPageManufacturing1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageManufacturing1, 260);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Manufacturing page 2. - Readonly.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageManufacturing2
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[8];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** PCI Device ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16PCIDeviceID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** PCI Revision ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PCIRevisionID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Hardware specific settings... */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageManufacturing2, *PMptConfigurationPageManufacturing2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageManufacturing2, 8);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Manufacturing page 3. - Readonly.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageManufacturing3
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[8];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** PCI Device ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16PCIDeviceID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** PCI Revision ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PCIRevisionID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Chip specific settings... */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageManufacturing3, *PMptConfigurationPageManufacturing3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageManufacturing3, 8);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Manufacturing page 4. - Readonly.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageManufacturing4
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[84];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** InfoOffset0. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8InfoOffset0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Info size. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8InfoSize0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** InfoOffset1. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8InfoOffset1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Info size. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8InfoSize1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Size of the inquiry data. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8InquirySize;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abReserved[3];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Inquiry data. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abInquiryData[56];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IS volume settings. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32ISVolumeSettings;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IME volume settings. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32IMEVolumeSettings;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IM volume settings. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32IMVolumeSettings;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageManufacturing4, *PMptConfigurationPageManufacturing4;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageManufacturing4, 84);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Manufacturing page 5 - Readonly.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageManufacturing5
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[88];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Base WWID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint64_t u64BaseWWID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flags */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Flags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Number of ForceWWID fields in this page. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8NumForceWWID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t au32Reserved[2];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** ForceWWID entries Maximum of 8 because the SAS controller doesn't has more */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint64_t au64ForceWWID[8];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageManufacturing5, *PMptConfigurationPageManufacturing5;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageManufacturing5, 24+64);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Manufacturing page 6 - Readonly.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageManufacturing6
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[4];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Product specific data - 0 for now */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageManufacturing6, *PMptConfigurationPageManufacturing6;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageManufacturing6, 4);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
171f7694ec7932516e3b96aafac975853e3fe754vboxsync/**
171f7694ec7932516e3b96aafac975853e3fe754vboxsync * Manufacutring page 7 - PHY element.
171f7694ec7932516e3b96aafac975853e3fe754vboxsync */
171f7694ec7932516e3b96aafac975853e3fe754vboxsync#pragma pack(1)
171f7694ec7932516e3b96aafac975853e3fe754vboxsynctypedef struct MptConfigurationPageManufacturing7PHY
171f7694ec7932516e3b96aafac975853e3fe754vboxsync{
171f7694ec7932516e3b96aafac975853e3fe754vboxsync /** Pinout */
171f7694ec7932516e3b96aafac975853e3fe754vboxsync uint32_t u32Pinout;
171f7694ec7932516e3b96aafac975853e3fe754vboxsync /** Connector name */
171f7694ec7932516e3b96aafac975853e3fe754vboxsync uint8_t szConnector[16];
171f7694ec7932516e3b96aafac975853e3fe754vboxsync /** Location */
171f7694ec7932516e3b96aafac975853e3fe754vboxsync uint8_t u8Location;
171f7694ec7932516e3b96aafac975853e3fe754vboxsync /** reserved */
171f7694ec7932516e3b96aafac975853e3fe754vboxsync uint8_t u8Reserved;
171f7694ec7932516e3b96aafac975853e3fe754vboxsync /** Slot */
171f7694ec7932516e3b96aafac975853e3fe754vboxsync uint16_t u16Slot;
171f7694ec7932516e3b96aafac975853e3fe754vboxsync} MptConfigurationPageManufacturing7PHY, *PMptConfigurationPageManufacturing7PHY;
171f7694ec7932516e3b96aafac975853e3fe754vboxsync#pragma pack()
171f7694ec7932516e3b96aafac975853e3fe754vboxsyncAssertCompileSize(MptConfigurationPageManufacturing7PHY, 24);
171f7694ec7932516e3b96aafac975853e3fe754vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Manufacturing page 7 - Readonly.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageManufacturing7
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
171f7694ec7932516e3b96aafac975853e3fe754vboxsync uint8_t abPageData[1];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t au32Reserved[2];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flags */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32Flags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Enclosure name */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t szEnclosureName[16];
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync /** Number of PHYs */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8NumPhys;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t au8Reserved[3];
171f7694ec7932516e3b96aafac975853e3fe754vboxsync /** PHY list for the SAS controller - variable depending on the number of ports */
171f7694ec7932516e3b96aafac975853e3fe754vboxsync MptConfigurationPageManufacturing7PHY aPHY[1];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageManufacturing7, *PMptConfigurationPageManufacturing7;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
171f7694ec7932516e3b96aafac975853e3fe754vboxsyncAssertCompileSize(MptConfigurationPageManufacturing7, 36+sizeof(MptConfigurationPageManufacturing7PHY));
171f7694ec7932516e3b96aafac975853e3fe754vboxsync
171f7694ec7932516e3b96aafac975853e3fe754vboxsync#define LSILOGICSCSI_MANUFACTURING7_GET_SIZE(ports) (sizeof(MptConfigurationPageManufacturing7) + ((ports) - 1) * sizeof(MptConfigurationPageManufacturing7PHY))
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/** Flags for the flags field */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MANUFACTURING7_FLAGS_USE_PROVIDED_INFORMATION RT_BIT(0)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/** Flags for the pinout field */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_UNKNOWN RT_BIT(0)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_SFF8482 RT_BIT(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_SFF8470_LANE1 RT_BIT(8)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_SFF8470_LANE2 RT_BIT(9)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_SFF8470_LANE3 RT_BIT(10)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_SFF8470_LANE4 RT_BIT(11)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_SFF8484_LANE1 RT_BIT(16)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_SFF8484_LANE2 RT_BIT(17)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_SFF8484_LANE3 RT_BIT(18)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_SFF8484_LANE4 RT_BIT(19)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/** Flags for the location field */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MANUFACTURING7_LOCATION_UNKNOWN 0x01
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MANUFACTURING7_LOCATION_INTERNAL 0x02
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MANUFACTURING7_LOCATION_EXTERNAL 0x04
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MANUFACTURING7_LOCATION_SWITCHABLE 0x08
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MANUFACTURING7_LOCATION_AUTO 0x10
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MANUFACTURING7_LOCATION_NOT_PRESENT 0x20
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_MANUFACTURING7_LOCATION_NOT_CONNECTED 0x80
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Manufacturing page 8 - Readonly.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageManufacturing8
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[4];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Product specific information */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageManufacturing8, *PMptConfigurationPageManufacturing8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageManufacturing8, 4);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Manufacturing page 9 - Readonly.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageManufacturing9
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[4];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Product specific information */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageManufacturing9, *PMptConfigurationPageManufacturing9;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageManufacturing9, 4);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Manufacturing page 10 - Readonly.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageManufacturing10
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[4];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Product specific information */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageManufacturing10, *PMptConfigurationPageManufacturing10;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageManufacturing10, 4);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * IO Unit page 0. - Readonly.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageIOUnit0
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[12];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** A unique identifier. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint64_t u64UniqueIdentifier;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageIOUnit0, *PMptConfigurationPageIOUnit0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageIOUnit0, 12);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * IO Unit page 1. - Read/Write.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageIOUnit1
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[8];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether this is a single function PCI device. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fSingleFunction: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether all possible paths to a device are mapped. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fAllPathsMapped: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u4Reserved: 4;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether all RAID functionality is disabled. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fIntegratedRAIDDisabled: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether 32bit PCI accesses are forced. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned f32BitAccessForced: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned abReserved: 24;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageIOUnit1, *PMptConfigurationPageIOUnit1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageIOUnit1, 8);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Adapter Ordering.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageIOUnit2AdapterOrdering
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** PCI bus number. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8PCIBusNumber: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** PCI device and function number. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8PCIDevFn: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether the adapter is embedded. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fAdapterEmbedded: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether the adapter is enabled. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fAdapterEnabled: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u6Reserved: 6;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8Reserved: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageIOUnit2AdapterOrdering, *PMptConfigurationPageIOUnit2AdapterOrdering;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageIOUnit2AdapterOrdering, 4);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * IO Unit page 2. - Read/Write.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageIOUnit2
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[28];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fReserved: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether Pause on error is enabled. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fPauseOnError: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether verbose mode is enabled. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fVerboseModeEnabled: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Set to disable color video. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fDisableColorVideo: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether int 40h is hooked. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fNotHookInt40h: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u3Reserved: 3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned abReserved: 24;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** BIOS version. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32BIOSVersion;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Adapter ordering. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOUnit2AdapterOrdering aAdapterOrder[4];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageIOUnit2, *PMptConfigurationPageIOUnit2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageIOUnit2, 28);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/*
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * IO Unit page 3. - Read/Write.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageIOUnit3
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[8];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Number of GPIO values. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8GPIOCount;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abReserved[3];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageIOUnit3, *PMptConfigurationPageIOUnit3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageIOUnit3, 8);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/*
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * IO Unit page 4. - Readonly for everyone except the BIOS.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageIOUnit4
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[20];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** SG entry describing the Firmware location. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptSGEntrySimple64 FWImageSGE;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageIOUnit4, *PMptConfigurationPageIOUnit4;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageIOUnit4, 20);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * IOC page 0. - Readonly
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageIOC0
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[28];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync /** Total amount of NV memory in bytes. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32TotalNVStore;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Number of free bytes in the NV store. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32FreeNVStore;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** PCI vendor ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16VendorId;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** PCI device ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16DeviceId;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** PCI revision ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8RevisionId;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abReserved[3];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** PCI class code. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32ClassCode;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Subsystem vendor Id. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16SubsystemVendorId;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Subsystem Id. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16SubsystemId;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageIOC0, *PMptConfigurationPageIOC0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageIOC0, 28);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * IOC page 1. - Read/Write
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageIOC1
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[16];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether reply coalescing is enabled. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fReplyCoalescingEnabled: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u31Reserved: 31;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Coalescing Timeout in microseconds. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u32CoalescingTimeout: 32;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Coalescing depth. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8CoalescingDepth: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8Reserved0: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8Reserved1: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8Reserved2: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageIOC1, *PMptConfigurationPageIOC1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageIOC1, 16);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * IOC page 2. - Readonly
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageIOC2
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[12];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether striping is supported. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fStripingSupported: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether enhanced mirroring is supported. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fEnhancedMirroringSupported: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether mirroring is supported. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fMirroringSupported: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u26Reserved: 26;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether SES is supported. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fSESSupported: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether SAF-TE is supported. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fSAFTESupported: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether cross channel volumes are supported. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fCrossChannelVolumesSupported: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Number of active integrated RAID volumes. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8NumActiveVolumes: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Maximum number of integrated RAID volumes supported. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8MaxVolumes: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Number of active integrated RAID physical disks. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8NumActivePhysDisks: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Maximum number of integrated RAID physical disks supported. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8MaxPhysDisks: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** RAID volumes... - not supported. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageIOC2, *PMptConfigurationPageIOC2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageIOC2, 12);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * IOC page 3. - Readonly
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageIOC3
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[8];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Number of active integrated RAID physical disks. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8NumPhysDisks;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abReserved[3];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageIOC3, *PMptConfigurationPageIOC3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageIOC3, 8);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * IOC page 4. - Read/Write
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageIOC4
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[8];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Number of SEP entries in this page. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8ActiveSEP;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Maximum number of SEp entries supported. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MaxSEP;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** SEP entries... - not supported. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageIOC4, *PMptConfigurationPageIOC4;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageIOC4, 8);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * IOC page 6. - Read/Write
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageIOC6
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[60];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32CapabilitiesFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MaxDrivesIS;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MaxDrivesIM;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MaxDrivesIME;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MinDrivesIS;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MinDrivesIM;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MinDrivesIME;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MaxGlobalHotSpares;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved4;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32Reserved5;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32SupportedStripeSizeMapIS;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32SupportedStripeSizeMapIME;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32Reserved6;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MetadataSize;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved7;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16MaxBadBlockTableEntries;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved9;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16IRNvsramUsage;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved10;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32IRNvsramVersion;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32Reserved11;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageIOC6, *PMptConfigurationPageIOC6;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageIOC6, 60);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * BIOS page 1 - Read/write.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageBIOS1
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[48];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** BIOS options */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32BiosOptions;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** IOC settings */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32IOCSettings;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Device settings */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32DeviceSettings;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Number of devices */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16NumberOfDevices;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Expander spinup */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8ExpanderSpinup;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** I/O timeout of block devices without removable media */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16IOTimeoutBlockDevicesNonRM;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** I/O timeout sequential */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16IOTimeoutSequential;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** I/O timeout other */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16IOTimeoutOther;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** I/O timeout of block devices with removable media */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16IOTimeoutBlockDevicesRM;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageBIOS1, *PMptConfigurationPageBIOS1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageBIOS1, 48);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_BIOSOPTIONS_BIOS_DISABLE RT_BIT(0)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_BIOSOPTIONS_SCAN_FROM_HIGH_TO_LOW RT_BIT(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_BIOSOPTIONS_BIOS_EXTENDED_SAS_SUPPORT RT_BIT(8)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_BIOSOPTIONS_BIOS_EXTENDED_FC_SUPPORT RT_BIT(9)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_BIOSOPTIONS_BIOS_EXTENDED_SPI_SUPPORT RT_BIT(10)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_ALTERNATE_CHS RT_BIT(3)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_ADAPTER_SUPPORT_SET(x) ((x) << 4)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_ADAPTER_SUPPORT_DISABLED 0x00
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_ADAPTER_SUPPORT_BIOS_ONLY 0x01
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_ADAPTER_SUPPORT_OS_ONLY 0x02
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_ADAPTER_SUPPORT_BOT 0x03
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_REMOVABLE_MEDIA_SET(x) ((x) << 6)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_REMOVABLE_MEDIA_NO_INT13H 0x00
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_REMOVABLE_BOOT_MEDIA_INT13H 0x01
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_REMOVABLE_MEDIA_INT13H 0x02
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_SPINUP_DELAY_SET(x) ((x & 0xF) << 8)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_SPINUP_DELAY_GET(x) ((x >> 8) & 0x0F)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_MAX_TARGET_SPINUP_SET(x) ((x & 0xF) << 12)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_MAX_TARGET_SPINUP_GET(x) ((x >> 12) & 0x0F)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_BOOT_PREFERENCE_SET(x) (((x) & 0x3) << 16)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_BOOT_PREFERENCE_ENCLOSURE 0x0
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_BOOT_PREFERENCE_SAS_ADDRESS 0x1
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_DIRECT_ATTACH_SPINUP_MODE_ALL RT_BIT(18)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_AUTO_PORT_ENABLE RT_BIT(19)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_PORT_ENABLE_REPLY_DELAY_SET(x) (((x) & 0xF) << 20)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_PORT_ENABLE_REPLY_DELAY_GET(x) ((x >> 20) & 0x0F)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_PORT_ENABLE_SPINUP_DELAY_SET(x) (((x) & 0xF) << 24)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_IOCSETTINGS_PORT_ENABLE_SPINUP_DELAY_GET(x) ((x >> 24) & 0x0F)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_DEVICESETTINGS_DISABLE_LUN_SCANS RT_BIT(0)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_DEVICESETTINGS_DISABLE_LUN_SCANS_FOR_NON_REMOVABLE_DEVICES RT_BIT(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_DEVICESETTINGS_DISABLE_LUN_SCANS_FOR_REMOVABLE_DEVICES RT_BIT(2)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_DEVICESETTINGS_DISABLE_LUN_SCANS2 RT_BIT(3)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_DEVICESETTINGS_DISABLE_SMART_POLLING RT_BIT(4)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_EXPANDERSPINUP_SPINUP_DELAY_SET(x) ((x) & 0x0F)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_EXPANDERSPINUP_SPINUP_DELAY_GET(x) ((x) & 0x0F)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_EXPANDERSPINUP_MAX_SPINUP_DELAY_SET(x) (((x) & 0x0F) << 4)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS1_EXPANDERSPINUP_MAX_SPINUP_DELAY_GET(x) ((x >> 4) & 0x0F)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * BIOS page 2 - Read/write.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageBIOS2
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[384];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t au32Reserved[6];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Format of the boot device field. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8BootDeviceForm;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Previous format of the boot device field. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PrevBootDeviceForm;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Boot device fields - dependent on the format */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Device for AdapterNumber:Bus:Target:LUN */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Target ID */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8TargetID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Bus */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Bus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Adapter Number */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8AdapterNumber;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t au32Reserved[3];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** LUN */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t aLUN[5];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t au32Reserved2[56];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } AdapterNumberBusTargetLUN;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Device for PCIAddress:Bus:Target:LUN */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Target ID */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8TargetID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Bus */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Bus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Adapter Number */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16PCIAddress;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t au32Reserved[3];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** LUN */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t aLUN[5];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t au32Reserved2[56];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } PCIAddressBusTargetLUN;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Device for PCISlotNo:Bus:Target:LUN */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Target ID */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8TargetID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Bus */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Bus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** PCI Slot Number */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u16PCISlotNo;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t au32Reserved[3];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** LUN */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t aLUN[5];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t au32Reserved2[56];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } PCIAddressBusSlotLUN;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Device for FC channel world wide name */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** World wide port name low */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32WorldWidePortNameLow;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** World wide port name high */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32WorldWidePortNameHigh;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t au32Reserved[3];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** LUN */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t aLUN[5];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t au32Reserved2[56];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } FCWorldWideName;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Device for FC channel world wide name */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** SAS address */
db328d9a0c557c268222858740db4860d4f22a95vboxsync SASADDRESS SASAddress;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t au32Reserved[3];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** LUN */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t aLUN[5];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t au32Reserved2[56];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } SASWorldWideName;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Device for Enclosure/Slot */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Enclosure logical ID */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint64_t u64EnclosureLogicalID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t au32Reserved[3];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** LUN */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t aLUN[5];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t au32Reserved2[56];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } EnclosureSlot;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } BootDevice;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageBIOS2, *PMptConfigurationPageBIOS2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageBIOS2, 384);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS2_BOOT_DEVICE_FORM_SET(x) ((x) & 0x0F)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS2_BOOT_DEVICE_FORM_FIRST 0x0
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS2_BOOT_DEVICE_FORM_ADAPTER_BUS_TARGET_LUN 0x1
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS2_BOOT_DEVICE_FORM_PCIADDR_BUS_TARGET_LUN 0x2
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS2_BOOT_DEVICE_FORM_PCISLOT_BUS_TARGET_LUN 0x3
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS2_BOOT_DEVICE_FORM_FC_WWN 0x4
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS2_BOOT_DEVICE_FORM_SAS_WWN 0x5
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_BIOS2_BOOT_DEVICE_FORM_ENCLOSURE_SLOT 0x6
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * BIOS page 4 - Read/Write (Where is 3? - not defined in the spec)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageBIOS4
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[12];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reassignment Base WWID */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint64_t u64ReassignmentBaseWWID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageBIOS4, *PMptConfigurationPageBIOS4;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageBIOS4, 12);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * SCSI-SPI port page 0. - Readonly
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageSCSISPIPort0
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[12];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync /** Flag whether this port is information unit transfers capable. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fInformationUnitTransfersCapable: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether the port is DT (Dual Transfer) capable. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fDTCapable: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether the port is QAS (Quick Arbitrate and Select) capable. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fQASCapable: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u5Reserved1: 5;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Minimum Synchronous transfer period. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8MinimumSynchronousTransferPeriod: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Maximum synchronous offset. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8MaximumSynchronousOffset: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u5Reserved2: 5;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether indicating the width of the bus - 0 narrow and 1 for wide. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fWide: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fReserved: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether the port is AIP (Asynchronous Information Protection) capable. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fAIPCapable: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Signaling Type. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u2SignalingType: 2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u30Reserved: 30;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageSCSISPIPort0, *PMptConfigurationPageSCSISPIPort0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageSCSISPIPort0, 12);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * SCSI-SPI port page 1. - Read/Write
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageSCSISPIPort1
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[12];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The SCSI ID of the port. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8SCSIID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Port response IDs Bit mask field. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16PortResponseIDsBitmask;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Value for the on BUS timer. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32OnBusTimerValue;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageSCSISPIPort1, *PMptConfigurationPageSCSISPIPort1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageSCSISPIPort1, 12);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Device settings for one device.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptDeviceSettings
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Timeout for I/O in seconds. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8Timeout: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Minimum synchronous factor. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8SyncFactor: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether disconnect is enabled. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fDisconnectEnable: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether Scan ID is enabled. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fScanIDEnable: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether Scan LUNs is enabled. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fScanLUNEnable: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether tagged queuing is enabled. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fTaggedQueuingEnabled: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether wide is enabled. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fWideDisable: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether this device is bootable. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fBootChoice: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u10Reserved: 10;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptDeviceSettings, *PMptDeviceSettings;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptDeviceSettings, 4);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * SCSI-SPI port page 2. - Read/Write for the BIOS
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageSCSISPIPort2
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[76];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag indicating the bus scan order. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fBusScanOrderHighToLow: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fReserved: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether SCSI Bus resets are avoided. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fAvoidSCSIBusResets: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether alternate CHS is used. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fAlternateCHS: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether termination is disabled. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fTerminationDisabled: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u27Reserved: 27;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Host SCSI ID. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u4HostSCSIID: 4;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Initialize HBA. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u2InitializeHBA: 2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Removeable media setting. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u2RemovableMediaSetting: 2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Spinup delay. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u4SpinupDelay: 4;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Negotiating settings. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u2NegotitatingSettings: 2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u18Reserved: 18;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Device Settings. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptDeviceSettings aDeviceSettings[16];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageSCSISPIPort2, *PMptConfigurationPageSCSISPIPort2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageSCSISPIPort2, 76);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * SCSI-SPI device page 0. - Readonly
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageSCSISPIDevice0
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[12];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Negotiated Parameters. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Information Units enabled. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fInformationUnitsEnabled: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Dual Transfers Enabled. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fDTEnabled: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** QAS enabled. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fQASEnabled: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u5Reserved1: 5;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Synchronous Transfer period. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8NegotiatedSynchronousTransferPeriod: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Synchronous offset. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8NegotiatedSynchronousOffset: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u5Reserved2: 5;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Width - 0 for narrow and 1 for wide. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fWide: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fReserved: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** AIP enabled. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fAIPEnabled: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether negotiation occurred. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fNegotationOccured: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether a SDTR message was rejected. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fSDTRRejected: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether a WDTR message was rejected. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fWDTRRejected: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether a PPR message was rejected. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fPPRRejected: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u28Reserved: 28;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageSCSISPIDevice0, *PMptConfigurationPageSCSISPIDevice0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageSCSISPIDevice0, 12);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * SCSI-SPI device page 1. - Read/Write
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageSCSISPIDevice1
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[16];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Requested Parameters. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Information Units enable. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync bool fInformationUnitsEnable: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Dual Transfers Enable. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync bool fDTEnable: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** QAS enable. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync bool fQASEnable: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u5Reserved1: 5;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Synchronous Transfer period. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8NegotiatedSynchronousTransferPeriod: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Synchronous offset. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u8NegotiatedSynchronousOffset: 8;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u5Reserved2: 5;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Width - 0 for narrow and 1 for wide. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync bool fWide: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync bool fReserved1: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** AIP enable. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync bool fAIPEnable: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync bool fReserved2: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** WDTR disallowed. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync bool fWDTRDisallowed: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** SDTR disallowed. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync bool fSDTRDisallowed: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u29Reserved: 29;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageSCSISPIDevice1, *PMptConfigurationPageSCSISPIDevice1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageSCSISPIDevice1, 16);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * SCSI-SPI device page 2. - Read/Write
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageSCSISPIDevice2
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[16];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u4Reserved: 4;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** ISI enable. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fISIEnable: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Secondary driver enable. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fSecondaryDriverEnable: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fReserved: 1;
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync /** Slew create controller. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u3SlewRateControler: 3;
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync /** Primary drive strength controller. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u3PrimaryDriveStrengthControl: 3;
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync /** Secondary drive strength controller. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u3SecondaryDriveStrengthControl: 3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u12Reserved: 12;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** XCLKH_ST. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fXCLKH_ST: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** XCLKS_ST. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fXCLKS_ST: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** XCLKH_DT. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fXCLKH_DT: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** XCLKS_DT. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned fXCLKS_DT: 1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Parity pipe select. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u2ParityPipeSelect: 2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u30Reserved: 30;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Data bit pipeline select. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u32DataPipelineSelect: 32;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageSCSISPIDevice2, *PMptConfigurationPageSCSISPIDevice2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageSCSISPIDevice2, 16);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * SCSI-SPI device page 3 (Revision G). - Readonly
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageSCSISPIDevice3
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[1];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Number of times the IOC rejected a message because it doesn't support the operation. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16MsgRejectCount;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Number of times the SCSI bus entered an invalid operation state. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16PhaseErrorCount;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Number of parity errors. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16ParityCount;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageSCSISPIDevice3, *PMptConfigurationPageSCSISPIDevice3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageSCSISPIDevice3, 12);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync/**
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync * PHY entry for the SAS I/O unit page 0
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync#pragma pack(1)
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsynctypedef struct MptConfigurationPageSASIOUnit0PHY
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync{
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Port number */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint8_t u8Port;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Port flags */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint8_t u8PortFlags;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Phy flags */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint8_t u8PhyFlags;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** negotiated link rate */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint8_t u8NegotiatedLinkRate;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Controller phy device info */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint32_t u32ControllerPhyDeviceInfo;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Attached device handle */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint16_t u16AttachedDevHandle;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Controller device handle */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint16_t u16ControllerDevHandle;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Discovery status */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint32_t u32DiscoveryStatus;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync} MptConfigurationPageSASIOUnit0PHY, *PMptConfigurationPageSASIOUnit0PHY;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync#pragma pack()
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsyncAssertCompileSize(MptConfigurationPageSASIOUnit0PHY, 16);
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * SAS I/O Unit page 0 - Readonly
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageSASIOUnit0
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view - variable. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[1];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptExtendedConfigurationPageHeader ExtHeader;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Nvdata version default */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16NvdataVersionDefault;
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync /** Nvdata version persistent */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16NvdataVersionPersistent;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Number of physical ports */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8NumPhys;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t au8Reserved[3];
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Content for each physical port - variable depending on the amount of ports. */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync MptConfigurationPageSASIOUnit0PHY aPHY[1];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageSASIOUnit0, *PMptConfigurationPageSASIOUnit0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsyncAssertCompileSize(MptConfigurationPageSASIOUnit0, 8+2+2+1+3+sizeof(MptConfigurationPageSASIOUnit0PHY));
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync#define LSILOGICSCSI_SASIOUNIT0_GET_SIZE(ports) (sizeof(MptConfigurationPageSASIOUnit0) + ((ports) - 1) * sizeof(MptConfigurationPageSASIOUnit0PHY))
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_PORT_CONFIGURATION_AUTO RT_BIT(0)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_PORT_TARGET_IOC RT_BIT(2)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_PORT_DISCOVERY_IN_STATUS RT_BIT(3)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_PHY_RX_INVERTED RT_BIT(0)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_PHY_TX_INVERTED RT_BIT(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_PHY_DISABLED RT_BIT(2)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_NEGOTIATED_RATE_SET(x) ((x) & 0x0F)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_NEGOTIATED_RATE_GET(x) ((x) & 0x0F)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_NEGOTIATED_RATE_UNKNOWN 0x00
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_NEGOTIATED_RATE_DISABLED 0x01
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_NEGOTIATED_RATE_FAILED 0x02
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_NEGOTIATED_RATE_SATA_OOB 0x03
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_NEGOTIATED_RATE_15GB 0x08
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_NEGOTIATED_RATE_30GB 0x09
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DEVICE_TYPE_SET(x) ((x) & 0x3)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DEVICE_TYPE_NO 0x0
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DEVICE_TYPE_END 0x1
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DEVICE_TYPE_EDGE_EXPANDER 0x2
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DEVICE_TYPE_FANOUT_EXPANDER 0x3
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DEVICE_SATA_HOST RT_BIT(3)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DEVICE_SMP_INITIATOR RT_BIT(4)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DEVICE_STP_INITIATOR RT_BIT(5)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DEVICE_SSP_INITIATOR RT_BIT(6)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DEVICE_SATA RT_BIT(7)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DEVICE_SMP_TARGET RT_BIT(8)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DEVICE_STP_TARGET RT_BIT(9)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DEVICE_SSP_TARGET RT_BIT(10)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DEVICE_DIRECT_ATTACHED RT_BIT(11)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DEVICE_LSI RT_BIT(12)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DEVICE_ATAPI_DEVICE RT_BIT(13)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DEVICE_SEP_DEVICE RT_BIT(14)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DISCOVERY_STATUS_LOOP RT_BIT(0)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DISCOVERY_STATUS_UNADDRESSABLE RT_BIT(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DISCOVERY_STATUS_SAME_SAS_ADDR RT_BIT(2)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DISCOVERY_STATUS_EXPANDER_ERROR RT_BIT(3)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DISCOVERY_STATUS_SMP_TIMEOUT RT_BIT(4)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DISCOVERY_STATUS_EXP_ROUTE_OOE RT_BIT(5)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DISCOVERY_STATUS_EXP_ROUTE_IDX RT_BIT(6)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DISCOVERY_STATUS_SMP_FUNC_FAILED RT_BIT(7)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DISCOVERY_STATUS_SMP_CRC_ERROR RT_BIT(8)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DISCOVERY_STATUS_SUBTRSCTIVE_LNK RT_BIT(9)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DISCOVERY_STATUS_TBL_LNK RT_BIT(10)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DISCOVERY_STATUS_UNSUPPORTED_DEV RT_BIT(11)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DISCOVERY_STATUS_MAX_SATA_TGTS RT_BIT(12)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT0_DISCOVERY_STATUS_MULT_CTRLS RT_BIT(13)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync/**
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync * PHY entry for the SAS I/O unit page 1
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync#pragma pack(1)
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsynctypedef struct MptConfigurationPageSASIOUnit1PHY
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync{
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Port number */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint8_t u8Port;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Port flags */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint8_t u8PortFlags;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Phy flags */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint8_t u8PhyFlags;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Max link rate */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint8_t u8MaxMinLinkRate;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Controller phy device info */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint32_t u32ControllerPhyDeviceInfo;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Maximum target port connect time */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint16_t u16MaxTargetPortConnectTime;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Reserved */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint16_t u16Reserved;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync} MptConfigurationPageSASIOUnit1PHY, *PMptConfigurationPageSASIOUnit1PHY;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync#pragma pack()
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsyncAssertCompileSize(MptConfigurationPageSASIOUnit1PHY, 12);
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * SAS I/O Unit page 1 - Read/Write
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageSASIOUnit1
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view - variable. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[1];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptExtendedConfigurationPageHeader ExtHeader;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Control flags */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16ControlFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** maximum number of SATA targets */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16MaxNumSATATargets;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** additional control flags */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16AdditionalControlFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Number of PHYs */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8NumPhys;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** maximum SATA queue depth */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8SATAMaxQDepth;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Delay for reporting missing devices. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8ReportDeviceMissingDelay;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** I/O device missing delay */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8IODeviceMissingDelay;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Content for each physical port - variable depending on the number of ports */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync MptConfigurationPageSASIOUnit1PHY aPHY[1];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageSASIOUnit1, *PMptConfigurationPageSASIOUnit1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsyncAssertCompileSize(MptConfigurationPageSASIOUnit1, 8+12+sizeof(MptConfigurationPageSASIOUnit1PHY));
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync#define LSILOGICSCSI_SASIOUNIT1_GET_SIZE(ports) (sizeof(MptConfigurationPageSASIOUnit1) + ((ports) - 1) * sizeof(MptConfigurationPageSASIOUnit1PHY))
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_CLEAR_SATA_AFFILIATION RT_BIT(0)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_FIRST_LEVEL_DISCOVERY_ONLY RT_BIT(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_SUBTRACTIVE_LNK_ILLEGAL RT_BIT(2)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_IOC_ENABLE_HIGH_PHY RT_BIT(3)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_SATA_FUA_REQUIRED RT_BIT(4)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_SATA_NCQ_REQUIRED RT_BIT(5)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_SATA_SMART_REQUIRED RT_BIT(6)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_SATA_LBA48_REQUIRED RT_BIT(7)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_SATA_INIT_POSTPONED RT_BIT(8)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_DEVICE_SUPPORT_SET(x) (((x) & 0x3) << 9)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_DEVICE_SUPPORT_GET(x) (((x) >> 9) & 0x3)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_DEVICE_SUPPORT_SAS_AND_SATA 0x00
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_DEVICE_SUPPORT_SAS 0x01
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_DEVICE_SUPPORT_SATA 0x02
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_SATA_EXP_ADDR RT_BIT(11)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_SATA_SETTINGS_PRESERV_REQUIRED RT_BIT(12)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_SATA_LIMIT_RATE_15GB RT_BIT(13)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_SATA_LIMIT_RATE_30GB RT_BIT(14)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CONTROL_SAS_SELF_TEST_ENABLED RT_BIT(15)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_ADDITIONAL_CONTROL_TBL_LNKS_ALLOW RT_BIT(0)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_ADDITIONAL_CONTROL_SATA_RST_NO_AFFIL RT_BIT(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_ADDITIONAL_CONTROL_SATA_RST_SELF_AFFIL RT_BIT(2)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_ADDITIONAL_CONTROL_SATA_RST_OTHER_AFFIL RT_BIT(3)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_ADDITIONAL_CONTROL_SATA_RST_PORT_EN_ONLY RT_BIT(4)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_ADDITIONAL_CONTROL_HIDE_NON_ZERO_PHYS RT_BIT(5)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_ADDITIONAL_CONTROL_SATA_ASYNC_NOTIF RT_BIT(6)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_ADDITIONAL_CONTROL_MULT_PORTS_ILL_SAME_DOMAIN RT_BIT(7)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_MISSING_DEVICE_DELAY_UNITS_16_SEC RT_BIT(7)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_MISSING_DEVICE_DELAY_SET(x) ((x) & 0x7F)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_MISSING_DEVICE_DELAY_GET(x) ((x) & 0x7F)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_PORT_CONFIGURATION_AUTO RT_BIT(0)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_PORT_CONFIGURATION_IOC1 RT_BIT(2)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_PHY_RX_INVERT RT_BIT(0)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_PHY_TX_INVERT RT_BIT(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_PHY_DISABLE RT_BIT(2)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_LINK_RATE_MIN_SET(x) ((x) & 0x0F)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_LINK_RATE_MIN_GET(x) ((x) & 0x0F)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_LINK_RATE_MAX_SET(x) (((x) & 0x0F) << 4)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_LINK_RATE_MAX_GET(x) ((x >> 4) & 0x0F)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_LINK_RATE_15GB 0x8
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_LINK_RATE_30GB 0x9
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CTL_PHY_DEVICE_TYPE_SET(x) ((x) & 0x3)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CTL_PHY_DEVICE_TYPE_GET(x) ((x) & 0x3)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CTL_PHY_DEVICE_TYPE_NO 0x0
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CTL_PHY_DEVICE_TYPE_END 0x1
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CTL_PHY_DEVICE_TYPE_EDGE_EXPANDER 0x2
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CTL_PHY_DEVICE_TYPE_FANOUT_EXPANDER 0x3
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CTL_PHY_DEVICE_SMP_INITIATOR RT_BIT(4)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CTL_PHY_DEVICE_STP_INITIATOR RT_BIT(5)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CTL_PHY_DEVICE_SSP_INITIATOR RT_BIT(6)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CTL_PHY_DEVICE_SMP_TARGET RT_BIT(8)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CTL_PHY_DEVICE_STP_TARGET RT_BIT(9)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CTL_PHY_DEVICE_SSP_TARGET RT_BIT(10)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CTL_PHY_DEVICE_DIRECT_ATTACHED RT_BIT(11)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CTL_PHY_DEVICE_LSI RT_BIT(12)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CTL_PHY_DEVICE_ATAPI RT_BIT(13)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT1_CTL_PHY_DEVICE_SEP RT_BIT(14)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * SAS I/O unit page 2 - Read/Write
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageSASIOUnit2
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view - variable. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[1];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptExtendedConfigurationPageHeader ExtHeader;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Device numbers per enclosure */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8NumDevsPerEnclosure;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Boot device wait time */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8BootDeviceWaitTime;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Maximum number of persistent Bus and target ID mappings */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16MaxPersistentIDs;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Number of persistent IDs used */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16NumPersistentIDsUsed;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Status */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Status;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flags */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Flags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Maximum number of physical mapped IDs */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16MaxNumPhysicalMappedIDs;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageSASIOUnit2, *PMptConfigurationPageSASIOUnit2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageSASIOUnit2, 20);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT2_STATUS_PERSISTENT_MAP_TBL_FULL RT_BIT(0)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT2_STATUS_PERSISTENT_MAP_DISABLED RT_BIT(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT2_STATUS_PERSISTENT_ENC_DEV_UNMAPPED RT_BIT(2)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT2_STATUS_PERSISTENT_DEV_LIMIT_EXCEEDED RT_BIT(3)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT2_FLAGS_PERSISTENT_MAP_DISABLE RT_BIT(0)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT2_FLAGS_PERSISTENT_PHYS_MAP_MODE_SET(x) ((x & 0x7) << 1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT2_FLAGS_PERSISTENT_PHYS_MAP_MODE_GET(x) ((x >> 1) & 0x7)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT2_FLAGS_PERSISTENT_PHYS_MAP_MODE_NO 0x0
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT2_FLAGS_PERSISTENT_PHYS_MAP_MODE_DIRECT_ATTACHED 0x1
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT2_FLAGS_PERSISTENT_PHYS_MAP_MODE_ENC 0x2
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT2_FLAGS_PERSISTENT_PHYS_MAP_MODE_HOST 0x7
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT2_FLAGS_RESERVE_TARGET_ID_ZERO RT_BIT(4)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_SASIOUNIT2_FLAGS_START_SLOT_NUMBER_ONE RT_BIT(5)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * SAS I/O unit page 3 - Read/Write
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageSASIOUnit3
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view - variable. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[1];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Field view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptExtendedConfigurationPageHeader ExtHeader;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MaxInvalidDwordCount;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32InvalidDwordCountTime;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MaxRunningDisparityErrorCount;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32RunningDisparityErrorTime;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MaxLossDwordSynchCount;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32LossDwordSynchCountTime;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32MaxPhysResetProblemCount;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32PhyResetProblemTime;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageSASIOUnit3, *PMptConfigurationPageSASIOUnit3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageSASIOUnit3, 44);
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * SAS PHY page 0 - Readonly
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack(1)
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef struct MptConfigurationPageSASPHY0
db328d9a0c557c268222858740db4860d4f22a95vboxsync{
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Union. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync union
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Byte view - variable. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t abPageData[1];
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Field view. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** The omnipresent header. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptExtendedConfigurationPageHeader ExtHeader;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Owner dev handle. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16OwnerDevHandle;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Reserved */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16Reserved0;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** SAS address */
db328d9a0c557c268222858740db4860d4f22a95vboxsync SASADDRESS SASAddress;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Attached device handle */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16AttachedDevHandle;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Attached phy identifier */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8AttachedPhyIdentifier;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Reserved */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Reserved1;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Attached device information */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t u32AttachedDeviceInfo;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Programmed link rate */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8ProgrammedLinkRate;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Hardware link rate */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8HwLinkRate;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Change count */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8ChangeCount;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Flags */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Flags;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Phy information */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t u32PhyInfo;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } fields;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } u;
db328d9a0c557c268222858740db4860d4f22a95vboxsync} MptConfigurationPageSASPHY0, *PMptConfigurationPageSASPHY0;
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack()
db328d9a0c557c268222858740db4860d4f22a95vboxsyncAssertCompileSize(MptConfigurationPageSASPHY0, 36);
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASPHY0_DEV_INFO_DEVICE_TYPE_SET(x) ((x) & 0x3)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASPHY0_DEV_INFO_DEVICE_TYPE_GET(x) ((x) & 0x3)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASPHY0_DEV_INFO_DEVICE_TYPE_NO 0x0
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASPHY0_DEV_INFO_DEVICE_TYPE_END 0x1
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASPHY0_DEV_INFO_DEVICE_TYPE_EDGE_EXPANDER 0x2
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASPHY0_DEV_INFO_DEVICE_TYPE_FANOUT_EXPANDER 0x3
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASPHY0_DEV_INFO_DEVICE_SMP_INITIATOR RT_BIT(4)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASPHY0_DEV_INFO_DEVICE_STP_INITIATOR RT_BIT(5)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASPHY0_DEV_INFO_DEVICE_SSP_INITIATOR RT_BIT(6)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASPHY0_DEV_INFO_DEVICE_SMP_TARGET RT_BIT(8)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASPHY0_DEV_INFO_DEVICE_STP_TARGET RT_BIT(9)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASPHY0_DEV_INFO_DEVICE_SSP_TARGET RT_BIT(10)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASPHY0_DEV_INFO_DEVICE_DIRECT_ATTACHED RT_BIT(11)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASPHY0_DEV_INFO_DEVICE_LSI RT_BIT(12)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASPHY0_DEV_INFO_DEVICE_ATAPI RT_BIT(13)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASPHY0_DEV_INFO_DEVICE_SEP RT_BIT(14)
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * SAS PHY page 1 - Readonly
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack(1)
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef struct MptConfigurationPageSASPHY1
db328d9a0c557c268222858740db4860d4f22a95vboxsync{
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Union. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync union
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Byte view - variable. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t abPageData[1];
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Field view. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** The omnipresent header. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptExtendedConfigurationPageHeader ExtHeader;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Reserved */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t u32Reserved0;
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t u32InvalidDwordCound;
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t u32RunningDisparityErrorCount;
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t u32LossDwordSynchCount;
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t u32PhyResetProblemCount;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } fields;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } u;
db328d9a0c557c268222858740db4860d4f22a95vboxsync} MptConfigurationPageSASPHY1, *PMptConfigurationPageSASPHY1;
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack()
db328d9a0c557c268222858740db4860d4f22a95vboxsyncAssertCompileSize(MptConfigurationPageSASPHY1, 28);
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * SAS Device page 0 - Readonly
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack(1)
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef struct MptConfigurationPageSASDevice0
db328d9a0c557c268222858740db4860d4f22a95vboxsync{
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Union. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync union
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Byte view - variable. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t abPageData[1];
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Field view. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** The omnipresent header. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptExtendedConfigurationPageHeader ExtHeader;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Slot number */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16Slot;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Enclosure handle. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16EnclosureHandle;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** SAS address */
db328d9a0c557c268222858740db4860d4f22a95vboxsync SASADDRESS SASAddress;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Parent device handle */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16ParentDevHandle;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Phy number */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8PhyNum;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Access status */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8AccessStatus;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Device handle */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16DevHandle;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Target ID */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8TargetID;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Bus */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Bus;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Device info */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t u32DeviceInfo;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Flags */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16Flags;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Physical port */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8PhysicalPort;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Reserved */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Reserved0;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } fields;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } u;
db328d9a0c557c268222858740db4860d4f22a95vboxsync} MptConfigurationPageSASDevice0, *PMptConfigurationPageSASDevice0;
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack()
db328d9a0c557c268222858740db4860d4f22a95vboxsyncAssertCompileSize(MptConfigurationPageSASDevice0, 36);
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_STATUS_NO_ERRORS (0x00)
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_DEV_INFO_DEVICE_TYPE_SET(x) ((x) & 0x3)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_DEV_INFO_DEVICE_TYPE_GET(x) ((x) & 0x3)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_DEV_INFO_DEVICE_TYPE_NO 0x0
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_DEV_INFO_DEVICE_TYPE_END 0x1
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_DEV_INFO_DEVICE_TYPE_EDGE_EXPANDER 0x2
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_DEV_INFO_DEVICE_TYPE_FANOUT_EXPANDER 0x3
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_DEV_INFO_DEVICE_SMP_INITIATOR RT_BIT(4)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_DEV_INFO_DEVICE_STP_INITIATOR RT_BIT(5)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_DEV_INFO_DEVICE_SSP_INITIATOR RT_BIT(6)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_DEV_INFO_DEVICE_SMP_TARGET RT_BIT(8)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_DEV_INFO_DEVICE_STP_TARGET RT_BIT(9)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_DEV_INFO_DEVICE_SSP_TARGET RT_BIT(10)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_DEV_INFO_DEVICE_DIRECT_ATTACHED RT_BIT(11)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_DEV_INFO_DEVICE_LSI RT_BIT(12)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_DEV_INFO_DEVICE_ATAPI RT_BIT(13)
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_DEV_INFO_DEVICE_SEP RT_BIT(14)
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_FLAGS_DEVICE_PRESENT (RT_BIT(0))
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_FLAGS_DEVICE_MAPPED_TO_BUS_AND_TARGET_ID (RT_BIT(1))
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGICSCSI_SASDEVICE0_FLAGS_DEVICE_MAPPING_PERSISTENT (RT_BIT(2))
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * SAS Device page 1 - Readonly
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack(1)
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef struct MptConfigurationPageSASDevice1
db328d9a0c557c268222858740db4860d4f22a95vboxsync{
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Union. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync union
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Byte view - variable. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t abPageData[1];
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Field view. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** The omnipresent header. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptExtendedConfigurationPageHeader ExtHeader;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Reserved */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t u32Reserved0;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** SAS address */
db328d9a0c557c268222858740db4860d4f22a95vboxsync SASADDRESS SASAddress;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Reserved */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t u32Reserved;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Device handle */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16DevHandle;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Target ID */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8TargetID;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Bus */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Bus;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Initial REgister device FIS */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t au32InitialRegDeviceFIS[5];
db328d9a0c557c268222858740db4860d4f22a95vboxsync } fields;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } u;
db328d9a0c557c268222858740db4860d4f22a95vboxsync} MptConfigurationPageSASDevice1, *PMptConfigurationPageSASDevice1;
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack()
db328d9a0c557c268222858740db4860d4f22a95vboxsyncAssertCompileSize(MptConfigurationPageSASDevice1, 48);
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * SAS Device page 2 - Read/Write persistent
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack(1)
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef struct MptConfigurationPageSASDevice2
db328d9a0c557c268222858740db4860d4f22a95vboxsync{
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Union. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync union
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Byte view - variable. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t abPageData[1];
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Field view. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** The omnipresent header. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptExtendedConfigurationPageHeader ExtHeader;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Physical identifier */
db328d9a0c557c268222858740db4860d4f22a95vboxsync SASADDRESS SASAddress;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Enclosure mapping */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t u32EnclosureMapping;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } fields;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } u;
db328d9a0c557c268222858740db4860d4f22a95vboxsync} MptConfigurationPageSASDevice2, *PMptConfigurationPageSASDevice2;
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack()
db328d9a0c557c268222858740db4860d4f22a95vboxsyncAssertCompileSize(MptConfigurationPageSASDevice2, 20);
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * A device entitiy containing all pages.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef struct MptSASDevice
db328d9a0c557c268222858740db4860d4f22a95vboxsync{
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Pointer to the next device if any. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct MptSASDevice *pNext;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Pointer to the previous device if any. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct MptSASDevice *pPrev;
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageSASDevice0 SASDevicePage0;
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageSASDevice1 SASDevicePage1;
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageSASDevice2 SASDevicePage2;
db328d9a0c557c268222858740db4860d4f22a95vboxsync} MptSASDevice, *PMptSASDevice;
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * SAS Expander page 0 - Readonly
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack(1)
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef struct MptConfigurationPageSASExpander0
db328d9a0c557c268222858740db4860d4f22a95vboxsync{
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Union. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync union
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Byte view - variable. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t abPageData[1];
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Field view. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** The omnipresent header. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptExtendedConfigurationPageHeader ExtHeader;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Physical port */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8PhysicalPort;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Reserved */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Reserved0;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Enclosure handle */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16EnclosureHandle;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** SAS address */
db328d9a0c557c268222858740db4860d4f22a95vboxsync SASADDRESS SASAddress;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Discovery status */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t u32DiscoveryStatus;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Device handle. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16DevHandle;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Parent device handle */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16ParentDevHandle;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Expander change count */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16ExpanderChangeCount;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Expander route indexes */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16ExpanderRouteIndexes;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Number of PHys in this expander */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8NumPhys;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** SAS level */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8SASLevel;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Flags */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Flags;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Reserved */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Reserved1;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } fields;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } u;
db328d9a0c557c268222858740db4860d4f22a95vboxsync} MptConfigurationPageSASExpander0, *PMptConfigurationPageSASExpander0;
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack()
db328d9a0c557c268222858740db4860d4f22a95vboxsyncAssertCompileSize(MptConfigurationPageSASExpander0, 36);
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * SAS Expander page 1 - Readonly
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack(1)
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef struct MptConfigurationPageSASExpander1
db328d9a0c557c268222858740db4860d4f22a95vboxsync{
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Union. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync union
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Byte view - variable. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t abPageData[1];
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Field view. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** The omnipresent header. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptExtendedConfigurationPageHeader ExtHeader;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Physical port */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8PhysicalPort;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Reserved */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Reserved0[3];
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Number of PHYs */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8NumPhys;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Number of the Phy the information in this page is for. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Phy;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Number of routing table entries */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16NumTableEntriesProgrammed;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Programmed link rate */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8ProgrammedLinkRate;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Hardware link rate */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8HwLinkRate;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Attached device handle */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16AttachedDevHandle;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Phy information */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t u32PhyInfo;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Attached device information */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t u32AttachedDeviceInfo;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Owner device handle. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint16_t u16OwnerDevHandle;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Change count */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8ChangeCount;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Negotiated link rate */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8NegotiatedLinkRate;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Phy identifier */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8PhyIdentifier;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Attached phy identifier */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8AttachedPhyIdentifier;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Reserved */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8Reserved1;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Discovery information */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint8_t u8DiscoveryInfo;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Reserved */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t u32Reserved;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } fields;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } u;
db328d9a0c557c268222858740db4860d4f22a95vboxsync} MptConfigurationPageSASExpander1, *PMptConfigurationPageSASExpander1;
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack()
db328d9a0c557c268222858740db4860d4f22a95vboxsyncAssertCompileSize(MptConfigurationPageSASExpander1, 40);
db328d9a0c557c268222858740db4860d4f22a95vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Structure of all supported pages for the SCSI SPI controller.
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Used to load the device state from older versions.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef struct MptConfigurationPagesSupported_SSM_V2
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing0 ManufacturingPage0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing1 ManufacturingPage1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing2 ManufacturingPage2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing3 ManufacturingPage3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing4 ManufacturingPage4;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOUnit0 IOUnitPage0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOUnit1 IOUnitPage1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOUnit2 IOUnitPage2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOUnit3 IOUnitPage3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOC0 IOCPage0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOC1 IOCPage1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOC2 IOCPage2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOC3 IOCPage3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOC4 IOCPage4;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOC6 IOCPage6;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageSCSISPIPort0 SCSISPIPortPage0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageSCSISPIPort1 SCSISPIPortPage1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageSCSISPIPort2 SCSISPIPortPage2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } aPortPages[1]; /* Currently only one port supported. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageSCSISPIDevice0 SCSISPIDevicePage0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageSCSISPIDevice1 SCSISPIDevicePage1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageSCSISPIDevice2 SCSISPIDevicePage2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageSCSISPIDevice3 SCSISPIDevicePage3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } aDevicePages[LSILOGICSCSI_PCI_SPI_DEVICES_MAX];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } aBuses[1]; /* Only one bus at the moment. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync} MptConfigurationPagesSupported_SSM_V2, *PMptConfigurationPagesSupported_SSM_V2;
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef struct MptConfigurationPagesSpi
db328d9a0c557c268222858740db4860d4f22a95vboxsync{
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageSCSISPIPort0 SCSISPIPortPage0;
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageSCSISPIPort1 SCSISPIPortPage1;
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageSCSISPIPort2 SCSISPIPortPage2;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } aPortPages[1]; /* Currently only one port supported. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync struct
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageSCSISPIDevice0 SCSISPIDevicePage0;
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageSCSISPIDevice1 SCSISPIDevicePage1;
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageSCSISPIDevice2 SCSISPIDevicePage2;
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageSCSISPIDevice3 SCSISPIDevicePage3;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } aDevicePages[LSILOGICSCSI_PCI_SPI_DEVICES_MAX];
db328d9a0c557c268222858740db4860d4f22a95vboxsync } aBuses[1]; /* Only one bus at the moment. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync} MptConfigurationPagesSpi, *PMptConfigurationPagesSpi;
db328d9a0c557c268222858740db4860d4f22a95vboxsync
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsynctypedef struct MptPHY
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync{
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync MptConfigurationPageSASPHY0 SASPHYPage0;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync MptConfigurationPageSASPHY1 SASPHYPage1;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync} MptPHY, *PMptPHY;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack(1)
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef struct MptConfigurationPagesSas
db328d9a0c557c268222858740db4860d4f22a95vboxsync{
171f7694ec7932516e3b96aafac975853e3fe754vboxsync /** Size of the manufacturing page 7 */
171f7694ec7932516e3b96aafac975853e3fe754vboxsync uint32_t cbManufacturingPage7;
171f7694ec7932516e3b96aafac975853e3fe754vboxsync /** Pointer to the manufacturing page 7 */
171f7694ec7932516e3b96aafac975853e3fe754vboxsync PMptConfigurationPageManufacturing7 pManufacturingPage7;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Size of the I/O unit page 0 */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint32_t cbSASIOUnitPage0;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Pointer to the I/O unit page 0 */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync PMptConfigurationPageSASIOUnit0 pSASIOUnitPage0;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Size of the I/O unit page 1 */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint32_t cbSASIOUnitPage1;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Pointer to the I/O unit page 1 */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync PMptConfigurationPageSASIOUnit1 pSASIOUnitPage1;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** I/O unit page 2 */
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageSASIOUnit2 SASIOUnitPage2;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** I/O unit page 3 */
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageSASIOUnit3 SASIOUnitPage3;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Number of PHYs in the array. */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync uint32_t cPHYs;
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync /** Pointer to an array of per PHYS pages. */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync R3PTRTYPE(PMptPHY) paPHYs;
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Number of devices detected. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync uint32_t cDevices;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Pointer to the first SAS device. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync R3PTRTYPE(PMptSASDevice) pSASDeviceHead;
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Pointer to the last SAS device. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync R3PTRTYPE(PMptSASDevice) pSASDeviceTail;
db328d9a0c557c268222858740db4860d4f22a95vboxsync} MptConfigurationPagesSas, *PMptConfigurationPagesSas;
db328d9a0c557c268222858740db4860d4f22a95vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Structure of all supported pages for both controllers.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef struct MptConfigurationPagesSupported
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing0 ManufacturingPage0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing1 ManufacturingPage1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing2 ManufacturingPage2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing3 ManufacturingPage3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing4 ManufacturingPage4;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing5 ManufacturingPage5;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing6 ManufacturingPage6;
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageManufacturing8 ManufacturingPage8;
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPageManufacturing9 ManufacturingPage9;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing10 ManufacturingPage10;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOUnit0 IOUnitPage0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOUnit1 IOUnitPage1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOUnit2 IOUnitPage2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOUnit3 IOUnitPage3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOUnit4 IOUnitPage4;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOC0 IOCPage0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOC1 IOCPage1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOC2 IOCPage2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOC3 IOCPage3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOC4 IOCPage4;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageIOC6 IOCPage6;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /* BIOS page 0 is not described */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageBIOS1 BIOSPage1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageBIOS2 BIOSPage2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /* BIOS page 3 is not described */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageBIOS4 BIOSPage4;
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Controller dependent data. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync union
db328d9a0c557c268222858740db4860d4f22a95vboxsync {
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPagesSpi SpiPages;
db328d9a0c557c268222858740db4860d4f22a95vboxsync MptConfigurationPagesSas SasPages;
db328d9a0c557c268222858740db4860d4f22a95vboxsync } u;
db328d9a0c557c268222858740db4860d4f22a95vboxsync} MptConfigurationPagesSupported, *PMptConfigurationPagesSupported;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync/**
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync * Initializes a page header.
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync#define MPT_CONFIG_PAGE_HEADER_INIT(pg, type, nr, flags) \
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync (pg)->u.fields.Header.u8PageType = flags; \
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync (pg)->u.fields.Header.u8PageNumber = nr; \
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync (pg)->u.fields.Header.u8PageLength = sizeof(type) / 4
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync#define MPT_CONFIG_PAGE_HEADER_INIT_MANUFACTURING(pg, type, nr, flags) \
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync MPT_CONFIG_PAGE_HEADER_INIT(pg, type, nr, flags | MPT_CONFIGURATION_PAGE_TYPE_MANUFACTURING)
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync#define MPT_CONFIG_PAGE_HEADER_INIT_IO_UNIT(pg, type, nr, flags) \
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync MPT_CONFIG_PAGE_HEADER_INIT(pg, type, nr, flags | MPT_CONFIGURATION_PAGE_TYPE_IO_UNIT)
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync#define MPT_CONFIG_PAGE_HEADER_INIT_IOC(pg, type, nr, flags) \
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync MPT_CONFIG_PAGE_HEADER_INIT(pg, type, nr, flags | MPT_CONFIGURATION_PAGE_TYPE_IOC)
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync#define MPT_CONFIG_PAGE_HEADER_INIT_BIOS(pg, type, nr, flags) \
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync MPT_CONFIG_PAGE_HEADER_INIT(pg, type, nr, flags | MPT_CONFIGURATION_PAGE_TYPE_BIOS)
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync/**
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync * Initializes a extended page header.
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync */
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync#define MPT_CONFIG_EXTENDED_PAGE_HEADER_INIT(pg, cb, nr, flags, exttype) \
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync (pg)->u.fields.ExtHeader.u8PageType = flags | MPT_CONFIGURATION_PAGE_TYPE_EXTENDED; \
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync (pg)->u.fields.ExtHeader.u8PageNumber = nr; \
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync (pg)->u.fields.ExtHeader.u8ExtPageType = exttype; \
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync (pg)->u.fields.ExtHeader.u16ExtPageLength = cb / 4
082180a39ac3c7041b0e7f70e77c735a55baec15vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Possible SG element types.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncenum MPTSGENTRYTYPE
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MPTSGENTRYTYPE_TRANSACTION_CONTEXT = 0x00,
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MPTSGENTRYTYPE_SIMPLE = 0x01,
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MPTSGENTRYTYPE_CHAIN = 0x03
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync};
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Register interface.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Defined states that the SCSI controller can have.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef enum LSILOGICSTATE
db328d9a0c557c268222858740db4860d4f22a95vboxsync{
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Reset state. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync LSILOGICSTATE_RESET = 0x00,
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Ready state. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync LSILOGICSTATE_READY = 0x01,
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Operational state. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync LSILOGICSTATE_OPERATIONAL = 0x02,
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Fault state. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync LSILOGICSTATE_FAULT = 0x04,
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** 32bit size hack */
db328d9a0c557c268222858740db4860d4f22a95vboxsync LSILOGICSTATE_32BIT_HACK = 0x7fffffff
db328d9a0c557c268222858740db4860d4f22a95vboxsync} LSILOGICSTATE;
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Which entity needs to initialize the controller
db328d9a0c557c268222858740db4860d4f22a95vboxsync * to get into the operational state.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsynctypedef enum LSILOGICWHOINIT
db328d9a0c557c268222858740db4860d4f22a95vboxsync{
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Not initialized. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync LSILOGICWHOINIT_NOT_INITIALIZED = 0x00,
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** System BIOS. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync LSILOGICWHOINIT_SYSTEM_BIOS = 0x01,
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** ROM Bios. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync LSILOGICWHOINIT_ROM_BIOS = 0x02,
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** PCI Peer. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync LSILOGICWHOINIT_PCI_PEER = 0x03,
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Host driver. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync LSILOGICWHOINIT_HOST_DRIVER = 0x04,
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** Manufacturing. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync LSILOGICWHOINIT_MANUFACTURING = 0x05,
db328d9a0c557c268222858740db4860d4f22a95vboxsync /** 32bit size hack. */
db328d9a0c557c268222858740db4860d4f22a95vboxsync LSILOGICWHOINIT_32BIT_HACK = 0x7fffffff
db328d9a0c557c268222858740db4860d4f22a95vboxsync} LSILOGICWHOINIT;
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync/**
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync * Doorbell state.
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync */
f08660f50942b28845eef9b24ee7168db1aefa27vboxsynctypedef enum LSILOGICDOORBELLSTATE
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync{
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync /** Invalid value. */
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync LSILOGICDOORBELLSTATE_INVALID = 0,
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync /** Doorbell not in use. */
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync LSILOGICDOORBELLSTATE_NOT_IN_USE,
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync /** Reply frame removal, transfer number of entries, low 16bits. */
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync LSILOGICDOORBELLSTATE_RFR_FRAME_COUNT_LOW,
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync /** Reply frame removal, transfer number of entries, high 16bits. */
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync LSILOGICDOORBELLSTATE_RFR_FRAME_COUNT_HIGH,
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync /** Reply frame removal, remove next free frame, low part. */
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync LSILOGICDOORBELLSTATE_RFR_NEXT_FRAME_LOW,
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync /** Reply frame removal, remove next free frame, high part. */
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync LSILOGICDOORBELLSTATE_RFR_NEXT_FRAME_HIGH,
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync /** Function handshake. */
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync LSILOGICDOORBELLSTATE_FN_HANDSHAKE,
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync /** 32bit hack. */
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync LSILOGICDOORBELLSTATE_32BIT_HACK = 0x7fffffff
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync} LSILOGICDOORBELLSTATE;
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync/** Pointer to a doorbell state. */
f08660f50942b28845eef9b24ee7168db1aefa27vboxsynctypedef LSILOGICDOORBELLSTATE *PLSILOGICDOORBELLSTATE;
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * IOC status codes.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_IOCSTATUS_SUCCESS 0x0000
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_IOCSTATUS_INVALID_FUNCTION 0x0001
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_IOCSTATUS_BUSY 0x0002
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_IOCSTATUS_INVALID_SGL 0x0003
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_IOCSTATUS_INTERNAL_ERROR 0x0004
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_IOCSTATUS_RESERVED 0x0005
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_IOCSTATUS_INSUFFICIENT_RESOURCES 0x0006
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_IOCSTATUS_INVALID_FIELD 0x0007
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_IOCSTATUS_INVALID_STATE 0x0008
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_IOCSTATUS_OP_STATE_NOT_SUPPOTED 0x0009
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Size of the I/O and MMIO space.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_PCI_SPACE_IO_SIZE 256
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_PCI_SPACE_MEM_SIZE 128 * _1K
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Doorbell register - Used to get the status of the controller and
db328d9a0c557c268222858740db4860d4f22a95vboxsync * initialise it.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_REG_DOORBELL 0x00
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_DOORBELL_SET_STATE(enmState) (((enmState) & 0x0f) << 28)
f08660f50942b28845eef9b24ee7168db1aefa27vboxsync# define LSILOGIC_REG_DOORBELL_SET_USED(enmDoorbell) (((enmDoorbell != LSILOGICDOORBELLSTATE_NOT_IN_USE) ? 1 : 0) << 27)
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_DOORBELL_SET_WHOINIT(enmWhoInit) (((enmWhoInit) & 0x07) << 24)
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_DOORBELL_SET_FAULT_CODE(u16Code) (u16Code)
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_DOORBELL_GET_FUNCTION(x) (((x) & 0xff000000) >> 24)
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_DOORBELL_GET_SIZE(x) (((x) & 0x00ff0000) >> 16)
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Functions which can be passed through the system doorbell.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_DOORBELL_FUNCTION_IOC_MSG_UNIT_RESET 0x40
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_DOORBELL_FUNCTION_IO_UNIT_RESET 0x41
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_DOORBELL_FUNCTION_HANDSHAKE 0x42
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_DOORBELL_FUNCTION_REPLY_FRAME_REMOVAL 0x43
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Write sequence register for the diagnostic register.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_REG_WRITE_SEQUENCE 0x04
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Diagnostic register - used to reset the controller.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_REG_HOST_DIAGNOSTIC 0x08
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_HOST_DIAGNOSTIC_DIAG_MEM_ENABLE (RT_BIT(0))
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_HOST_DIAGNOSTIC_DISABLE_ARM (RT_BIT(1))
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_HOST_DIAGNOSTIC_RESET_ADAPTER (RT_BIT(2))
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_HOST_DIAGNOSTIC_DIAG_RW_ENABLE (RT_BIT(4))
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_HOST_DIAGNOSTIC_RESET_HISTORY (RT_BIT(5))
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_HOST_DIAGNOSTIC_FLASH_BAD_SIG (RT_BIT(6))
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_HOST_DIAGNOSTIC_DRWE (RT_BIT(7))
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_HOST_DIAGNOSTIC_PREVENT_IOC_BOOT (RT_BIT(9))
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_HOST_DIAGNOSTIC_CLEAR_FLASH_BAD_SIG (RT_BIT(10))
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_REG_TEST_BASE_ADDRESS 0x0c
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_REG_DIAG_RW_DATA 0x10
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_REG_DIAG_RW_ADDRESS 0x14
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Interrupt status register.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_REG_HOST_INTR_STATUS 0x30
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_HOST_INTR_STATUS_W_MASK (RT_BIT(3))
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_HOST_INTR_STATUS_DOORBELL_STS (RT_BIT(31))
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_HOST_INTR_STATUS_REPLY_INTR (RT_BIT(3))
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_HOST_INTR_STATUS_SYSTEM_DOORBELL (RT_BIT(0))
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Interrupt mask register.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_REG_HOST_INTR_MASK 0x34
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_HOST_INTR_MASK_W_MASK (RT_BIT(0) | RT_BIT(3) | RT_BIT(8) | RT_BIT(9))
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_HOST_INTR_MASK_IRQ_ROUTING (RT_BIT(8) | RT_BIT(9))
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_HOST_INTR_MASK_DOORBELL RT_BIT(0)
db328d9a0c557c268222858740db4860d4f22a95vboxsync# define LSILOGIC_REG_HOST_INTR_MASK_REPLY RT_BIT(3)
db328d9a0c557c268222858740db4860d4f22a95vboxsync
db328d9a0c557c268222858740db4860d4f22a95vboxsync/**
db328d9a0c557c268222858740db4860d4f22a95vboxsync * Queue registers.
db328d9a0c557c268222858740db4860d4f22a95vboxsync */
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_REG_REQUEST_QUEUE 0x40
db328d9a0c557c268222858740db4860d4f22a95vboxsync#define LSILOGIC_REG_REPLY_QUEUE 0x44
db328d9a0c557c268222858740db4860d4f22a95vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#endif /* __DEVLSILOGICSCSI_H__ */