DevLsiLogicSCSI.h revision 7b57f6ec6175ce1ee53e1ea49c24ff06f3723379
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/* $Id$ */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/** @file
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * VBox storage devices: LsiLogic LSI53c1030 SCSI controller - Defines and structures.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/*
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Copyright (C) 2006-2009 Sun Microsystems, Inc.
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 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * additional information or have any questions.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#ifndef __DEVLSILOGICSCSI_H__
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define __DEVLSILOGICSCSI_H__
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#include <iprt/stdint.h>
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/*
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * I/O port registered in the ISA compatible range to let the BIOS access
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * the controller.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGIC_ISA_IO_PORT 0x340
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_REQUEST_QUEUE_DEPTH_DEFAULT 1024
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_REPLY_QUEUE_DEPTH_DEFAULT 128
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)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SAS_PORTS_MAX 8
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SAS_DEVICES_PER_PORT_MAX 1
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGICSCSI_PCI_SAS_DEVICES_MAX (LSILOGICSCSI_PCI_SAS_PORTS_MAX * LSILOGICSCSI_PCI_SAS_DEVICES_MAX)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/** Maximum number of devices for both types */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGIC_DEVICES_MAX LSILOGICSCSI_PCI_SPI_DEVICES_MAX
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/** The current saved state version. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGIC_SAVED_STATE_VERSION 2
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/** The saved state version used by VirtualBox 3.0 and earlier. It does not
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * include the device config part. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define LSILOGIC_SAVED_STATE_VERSION_VBOX_30 1
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/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * A simple SG element for a 64bit adress.
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;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether this buffer contains data to be transfered 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/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * A simple SG element for a 32bit adress.
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;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether this buffer contains data to be transfered 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)
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;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Maxmimum 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
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;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Rserved */
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/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * IOC status codes sepcific 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
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;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Type of the page beeing accessed. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PageType;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Page type dependent address. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** 32bit view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32PageAddress;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Port number to get the configuration page for. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PortNumber;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved[3];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } MPIPortNumber;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Target ID to get the configuration page for. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8TargetID;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Bus number to get the configuration page for. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Bus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved[2];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } BusAndTargetId;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync 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)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_REQUEST_ACTION_READ_DEFAULT (0x03)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_REQUEST_ACTION_DEFAULT (0x04)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_REQUEST_ACTION_READ_NVRAM (0x05)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_REQUEST_ACTION_WRITE_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;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved2[3];
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;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Type of the page beeing 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;
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;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptReplyUnion, *PMptReplyUnion;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
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)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_GET(u8PageType) ((u8PageType) & 0x0f)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
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{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** The omnipresent header. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageHeader Header;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** VPD info - don't know what belongs here so all zero. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abVPDInfo[256];
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
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Manufacturing page 7 - Readonly.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack(1)
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPageManufacturing7
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Union. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync union
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Byte view. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t abPageData[228];
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];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Nummber of PHYs */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8NumPhys;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t au8Reserved[3];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** PHY list for the SAS controller */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Pinout */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32Pinout;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Connector name */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t szConnector[16];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Location */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Location;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Slot */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Slot;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } aPHYs[LSILOGICSCSI_PCI_SAS_PORTS_MAX];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageManufacturing7, *PMptConfigurationPageManufacturing7;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageManufacturing7, 36+(LSILOGICSCSI_PCI_SAS_PORTS_MAX * 24));
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;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Total ammount 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 */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint64_t u64SASAddress;
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;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Flag whether this port is information unit trnafsers 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;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Slew reate controler. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u3SlewRateControler: 3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Primary drive strength controler. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync unsigned u3PrimaryDriveStrengthControl: 3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Secondary drive strength controler. */
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
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;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Nvdata version persisent */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16NvdataVersionPersistent;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Number of physical ports */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8NumPhys;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t au8Reserved[3];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Content for each physical port */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Port number */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Port;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Port flags */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PortFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Phy flags */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PhyFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** negotiated link rate */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8NegotiatedLinkRate;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Controller phy device info */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32ControllerPhyDeviceInfo;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Attached device handle */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16AttachedDevHandle;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Controller device handle */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16ControllerDevHandle;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Discovery status */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32DiscoveryStatus;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } aPHY[LSILOGICSCSI_PCI_SAS_PORTS_MAX];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageSASIOUnit0, *PMptConfigurationPageSASIOUnit0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageSASIOUnit0, 8+2+2+1+3+(LSILOGICSCSI_PCI_SAS_PORTS_MAX*16));
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
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;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Content for each physical port */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync struct
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync {
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Port number */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8Port;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Port flags */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PortFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Phy flags */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8PhyFlags;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Max link rate */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint8_t u8MaxLinkRate;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Controller phy device info */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint32_t u32ControllerPhyDeviceInfo;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Maximum target port connect time */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16MaxTargetPortConnectTime;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync /** Reserved */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync uint16_t u16Reserved;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } aPHY[LSILOGICSCSI_PCI_SAS_PORTS_MAX];
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } fields;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync } u;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPageSASIOUnit1, *PMptConfigurationPageSASIOUnit1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#pragma pack()
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsyncAssertCompileSize(MptConfigurationPageSASIOUnit1, 8+12+(LSILOGICSCSI_PCI_SAS_PORTS_MAX*12));
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
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Structure of all supported pages for the SCSI SPI controller.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPagesSupportedSpi
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. */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPagesSupportedSpi, *PMptConfigurationPagesSupportedSpi;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync/**
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync * Structure of all supported pages for the SCSI SAS controller.
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync */
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsynctypedef struct MptConfigurationPagesSupportedSas
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync{
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing0 ManufacturingPage0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing1 ManufacturingPage1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing2 ManufacturingPage2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing3 ManufacturingPage3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing4 ManufacturingPage4;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing5 ManufacturingPage5;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing6 ManufacturingPage6;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing7 ManufacturingPage7;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageManufacturing9 ManufacturingPage8;
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;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageSASIOUnit0 SASIOUnitPage0;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageSASIOUnit1 SASIOUnitPage1;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageSASIOUnit2 SASIOUnitPage2;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync MptConfigurationPageSASIOUnit3 SASIOUnitPage3;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync} MptConfigurationPagesSupportedSas, *PMptConfigurationPagesSupportedSas;
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync
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
7b57f6ec6175ce1ee53e1ea49c24ff06f3723379vboxsync#endif /* __DEVLSILOGICSCSI_H__ */