DevLsiLogicSCSI.h revision 171f7694ec7932516e3b96aafac975853e3fe754
248c89033c87fed7229aa29bbbc4f4698fb13687vboxsync * VBox storage devices: LsiLogic LSI53c1030 SCSI controller - Defines and structures.
248c89033c87fed7229aa29bbbc4f4698fb13687vboxsync * Copyright (C) 2006-2009 Sun Microsystems, Inc.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * available from http://www.virtualbox.org. This file is free software;
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * you can redistribute it and/or modify it under the terms of the GNU
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * General Public License (GPL) as published by the Free Software
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * additional information or have any questions.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * I/O port registered in the ISA compatible range to let the BIOS access
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync * the controller.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync#define LSILOGICSCSI_REQUEST_QUEUE_DEPTH_DEFAULT 1024
c10a6f0c7041e4d1ee50ad38425aab9d43c55522vboxsync/** Equal for all devices */
c10a6f0c7041e4d1ee50ad38425aab9d43c55522vboxsync/** SPI SCSI controller (LSI53C1030) */
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync#define LSILOGICSCSI_PCI_SPI_SUBSYSTEM_VENDOR_ID (0x1000)
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync#define LSILOGICSCSI_PCI_SPI_DEVICES_MAX (LSILOGICSCSI_PCI_SPI_BUSES_MAX*LSILOGICSCSI_PCI_SPI_DEVICES_PER_BUS_MAX)
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync/** SAS SCSI controller (SAS1068 PCI-X Fusion-MPT SAS) */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync#define LSILOGICSCSI_PCI_SAS_SUBSYSTEM_VENDOR_ID (0x1000)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync#define LSILOGICSCSI_PCI_SAS_DEVICES_MAX (LSILOGICSCSI_PCI_SAS_PORTS_MAX * LSILOGICSCSI_PCI_SAS_DEVICES_PER_PORT_MAX)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * A SAS address.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** 64bit view. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** 32bit view. */
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync /** 16bit view. */
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync /** Byte view. */
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync * Possible device types we support.
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync /** SPI SCSI controller (PCI dev id 0x0030) */
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync /** SAS SCSI controller (PCI dev id 0x0054) */
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync /** 32bit hack */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * A simple SG element for a 64bit adress.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Length of the buffer this entry describes. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Flag whether this element is the end of the list. */
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** Flag whether the address is 32bit or 64bits wide. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Flag whether this buffer contains data to be transfered or is the destination. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Flag whether this is a local address or a system address. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Element type. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Flag whether this is the last element of the buffer. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Flag whether this is the last element of the current segment. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Lower 32bits of the address of the data buffer. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Upper 32bits of the address of the data buffer. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * A simple SG element for a 32bit adress.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Length of the buffer this entry describes. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Flag whether this element is the end of the list. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Flag whether the address is 32bit or 64bits wide. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Flag whether this buffer contains data to be transfered or is the destination. */
248c89033c87fed7229aa29bbbc4f4698fb13687vboxsync /** Flag whether this is a local address or a system address. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Element type. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Flag whether this is the last element of the buffer. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Flag whether this is the last element of the current segment. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Lower 32bits of the address of the data buffer. */
b4d7b4dbcc45b8bde7502aa129440d92d7ffd038vboxsync * A chain SG element.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Size of the segment. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** Offset in 32bit words of the next chain element in the segment
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync * identified by this element. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** Reserved. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** Flag whether the address is 32bit or 64bits wide. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** Reserved. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** Flag whether this is a local address or a system address. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** Element type. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** Flag whether this is the last element of the buffer. */
3fb3de312d1ff675e0f7cc62a7d46cbb1d5d9353vboxsync /** Lower 32bits of the address of the data buffer. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** Upper 32bits of the address of the data buffer. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync * MPT Fusion message header - Common for all message frames.
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync * This is filled in by the guest.
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** Function dependent data. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** Chain offset. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** The function code. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** Function dependent data. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** Message flags. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** Message context - Unique ID from the guest unmodified by the device. */
3fb3de312d1ff675e0f7cc62a7d46cbb1d5d9353vboxsync/** Defined function codes found in the message header. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync#define MPT_MESSAGE_HDR_FUNCTION_SCSI_IO_REQUEST (0x00)
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync#define MPT_MESSAGE_HDR_FUNCTION_SCSI_TASK_MGMT (0x01)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync#define MPT_MESSAGE_HDR_FUNCTION_EVENT_NOTIFICATION (0x07)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync#define MPT_MESSAGE_HDR_FUNCTION_TARGET_CMD_BUFFER_POST (0x0A)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync#define MPT_MESSAGE_HDR_FUNCTION_TARGET_ASSIST (0x0B)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync#define MPT_MESSAGE_HDR_FUNCTION_TARGET_STATUS_SEND (0x0C)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync#define MPT_MESSAGE_HDR_FUNCTION_TARGET_MODE_ABORT (0x0D)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Function names
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsyncstatic const char * const g_apszMPTFunctionNames[] =
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync "SCSI I/O Request",
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync "SCSI Task Management",
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync "IOC Init",
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync "IOC Facts",
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync "Port Facts",
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync "Port Enable",
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync "Event Notification",
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync "Event Ack",
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync "Firmware Download"
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Default reply message.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Send from the device to the guest upon completion of a request.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Function dependent data. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Length of the message in 32bit DWords. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Function which completed. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Function dependent. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message flags. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message context given in the request. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Function dependent status code. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Status of the IOC. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Additional log info. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * IO controller init request.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Which system send this init request. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Chain offset in the SG list. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Function to execute. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Flags */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Maximum number of devices the driver can handle. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Maximum number of buses the driver can handle. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message flags. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message context ID. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reply frame size. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Upper 32bit part of the 64bit address the message frames are in.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * That means all frames must be in the same 4GB segment. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Upper 32bit of the sense buffer. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync * IO controller init reply.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Which subsystem send this init request. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Reserved */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Message length */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Function. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Flags */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Maximum number of devices the driver can handle. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Maximum number of busses the driver can handle. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message flags. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Message context ID */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Reserved */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** IO controller status. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** IO controller log information. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * IO controller facts request.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Chain offset in SG list. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Function number. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message flags. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message context ID. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * IO controller facts reply.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message version. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message length. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Function number. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** IO controller number */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message flags. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message context ID. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** IO controller exceptions */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** IO controller status. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** IO controller log information. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Maximum chain depth. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** The current value of the WhoInit field. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Block size. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Flags. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Depth of the reply queue. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Size of a request frame. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Product ID. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Current value of the high 32bit MFA address. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Global credits - Number of entries allocated to queues */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Number of ports on the IO controller */
b8bb9c9f6b8ebfd0a7d6df0c0289f9fe80241750vboxsync /** Event state. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Current value of the high 32bit sense buffer address. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Current reply frame size. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Maximum number of devices. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Maximum number of buses. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Size of the firmware image. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Firmware version */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Port facts request
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message length. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Function number. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Port number to get facts for. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message flags. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message context ID. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Port facts reply.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message length. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Function number. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Port number the facts are for. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Message flags. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message context ID. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** IO controller status. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** IO controller log information. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Port type */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Maximum number of devices on this port. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** SCSI ID of this port on the attached bus. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Protocol flags. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Maxmimum number of target command buffers which can be posted to this port at a time. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Maximum number of target IDs that remain persistent between power/reset cycles. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Maximum number of LAN buckets. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Reserved. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Port Enable request.
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Reserved. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Message length. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Function number. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Port number to enable. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message flags. */
c10a6f0c7041e4d1ee50ad38425aab9d43c55522vboxsync /** Message context ID. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Port enable reply.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message length. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Function number. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Port number which was enabled. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message flags. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message context ID. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** IO controller status */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** IO controller log information. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Event notification request.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Switch - Turns event notification on and off. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Chain offset. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Function number. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message flags. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message context ID. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync} MptEventNotificationRequest, *PMptEventNotificationRequest;
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Event notification reply.
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Event data length. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message length. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Function number. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Ack required. */
c99b597540585068d22dde4c9f74730305f24097vboxsync /** Message flags. */
c99b597540585068d22dde4c9f74730305f24097vboxsync /** Message context ID. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** IO controller status. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** IO controller log information. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Notification event. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Event context. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Event data. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync} MptEventNotificationReply, *PMptEventNotificationReply;
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * SCSI IO Request
c99b597540585068d22dde4c9f74730305f24097vboxsync /** Target ID */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Bus number */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Chain offset */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Function number. */
b8bb9c9f6b8ebfd0a7d6df0c0289f9fe80241750vboxsync /** CDB length. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Sense buffer length. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Rserved */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Message flags. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Message context ID. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Control values. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** The CDB. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Data length. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Sense buffer low 32bit address. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync#define MPT_SCSIIO_REQUEST_CONTROL_TXDIR_GET(x) (((x) & 0x3000000) >> 24)
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync#define MPT_SCSIIO_REQUEST_CONTROL_TXDIR_WRITE (0x1)
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync * SCSI IO error reply.
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Target ID */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Bus number */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Message length. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Function number. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** CDB length */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Sense buffer length */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Message flags */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message context ID */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** SCSI status. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** SCSI state */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** IO controller status */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** IO controller log information */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Transfer count */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Sense count */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Response information */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync#define MPT_SCSI_IO_ERROR_SCSI_STATE_AUTOSENSE_VALID (0x01)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync#define MPT_SCSI_IO_ERROR_SCSI_STATE_TERMINATED (0x08)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * IOC status codes sepcific to the SCSI I/O error reply.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync#define MPT_SCSI_IO_ERROR_IOCSTATUS_INVALID_BUS (0x0041)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync#define MPT_SCSI_IO_ERROR_IOCSTATUS_INVALID_TARGETID (0x0042)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync#define MPT_SCSI_IO_ERROR_IOCSTATUS_DEVICE_NOT_THERE (0x0043)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * SCSI task management request.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Target ID */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Bus number */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Chain offset */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Function number */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Task type */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message flags */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message context ID */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Task message context ID. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync} MptSCSITaskManagementRequest, *PMptSCSITaskManagementRequest;
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsyncAssertCompileSize(MptSCSITaskManagementRequest, 52);
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * SCSI task management reply.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Target ID */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Bus number */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message length */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Function number */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Task type */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message flags */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message context ID */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** IO controller status */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** IO controller log information */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Termination count */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync} MptSCSITaskManagementReply, *PMptSCSITaskManagementReply;
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Page address for SAS expander page types.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsynctypedef union MptConfigurationPageAddressSASExpander
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync} MptConfigurationPageAddressSASExpander, *PMptConfigurationPageAddressSASExpander;
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Page address for SAS device page types.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync} MptConfigurationPageAddressSASDevice, *PMptConfigurationPageAddressSASDevice;
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Page address for SAS PHY page types.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync} MptConfigurationPageAddressSASPHY, *PMptConfigurationPageAddressSASPHY;
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Page address for SAS Enclosure page types.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsynctypedef struct MptConfigurationPageAddressSASEnclosure
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync} MptConfigurationPageAddressSASEnclosure, *PMptConfigurationPageAddressSASEnclosure;
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Union of all possible address types.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** 32bit view. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Port number to get the configuration page for. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Target ID to get the configuration page for. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Bus number to get the configuration page for. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync MptConfigurationPageAddressSASExpander SASExpander;
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync MptConfigurationPageAddressSASEnclosure SASEnclosure;
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync} MptConfigurationPageAddress, *PMptConfigurationPageAddress;
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync#define MPT_CONFIGURATION_PAGE_ADDRESS_GET_SAS_FORM(x) (((x).u32PageAddress >> 28) & 0x0f)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Configuration request
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Action code. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Chain offset. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Function number. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Extended page length. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Extended page type */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message flags. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** Message context ID. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Version number of the page. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Length of the page in 32bit Dwords. */
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** Page number to access. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Type of the page beeing accessed. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Page type dependent address. */
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync /** Simple SG element describing the buffer. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync} MptConfigurationRequest, *PMptConfigurationRequest;
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync/** Possible action codes. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync#define MPT_CONFIGURATION_REQUEST_ACTION_HEADER (0x00)
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync#define MPT_CONFIGURATION_REQUEST_ACTION_READ_CURRENT (0x01)
b8bb9c9f6b8ebfd0a7d6df0c0289f9fe80241750vboxsync#define MPT_CONFIGURATION_REQUEST_ACTION_WRITE_CURRENT (0x02)
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync#define MPT_CONFIGURATION_REQUEST_ACTION_READ_DEFAULT (0x03)
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync#define MPT_CONFIGURATION_REQUEST_ACTION_DEFAULT (0x04)
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync#define MPT_CONFIGURATION_REQUEST_ACTION_READ_NVRAM (0x05)
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync#define MPT_CONFIGURATION_REQUEST_ACTION_WRITE_NVRAM (0x06)
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync/** Page type codes. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync#define MPT_CONFIGURATION_REQUEST_PAGE_TYPE_IO_UNIT (0x00)
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync#define MPT_CONFIGURATION_REQUEST_PAGE_TYPE_IOC (0x01)
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync#define MPT_CONFIGURATION_REQUEST_PAGE_TYPE_BIOS (0x02)
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync#define MPT_CONFIGURATION_REQUEST_PAGE_TYPE_SCSI_PORT (0x03)
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync#define MPT_CONFIGURATION_REQUEST_PAGE_TYPE_EXTENDED (0x0F)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Configuration reply.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Action code. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Message length. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Function number. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Extended page length. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Extended page type */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Message flags. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Message context ID. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Reserved. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** I/O controller status. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** I/O controller log information. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Version number of the page. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Length of the page in 32bit Dwords. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Page number to access. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Type of the page beeing accessed. */
d3b1b01528fe21777281edf167f8deca06f86e39vboxsync/** Additional I/O controller status codes for the configuration reply. */
d3b1b01528fe21777281edf167f8deca06f86e39vboxsync#define MPT_IOCSTATUS_CONFIG_INVALID_ACTION (0x0020)
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync * Union of all possible request messages.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Union of all possible reply messages.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** 16bit view. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync * Configuration Page attributes.
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync#define MPT_CONFIGURATION_PAGE_ATTRIBUTE_READONLY (0x00)
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync#define MPT_CONFIGURATION_PAGE_ATTRIBUTE_CHANGEABLE (0x10)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync#define MPT_CONFIGURATION_PAGE_ATTRIBUTE_PERSISTENT (0x20)
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync#define MPT_CONFIGURATION_PAGE_ATTRIBUTE_PERSISTENT_READONLY (0x30)
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync#define MPT_CONFIGURATION_PAGE_ATTRIBUTE_GET(u8PageType) ((u8PageType) & 0xf0)
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync * Configuration Page types.
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_SCSI_SPI_PORT (0x03)
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_SCSI_SPI_DEVICE (0x04)
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_MANUFACTURING (0x09)
0dd3967035b8a02985920baa57f948dc542b9388vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_GET(u8PageType) ((u8PageType) & 0x0f)
0dd3967035b8a02985920baa57f948dc542b9388vboxsync * Extented page types.
0dd3967035b8a02985920baa57f948dc542b9388vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_EXTENDED_SASIOUNIT (0x10)
0dd3967035b8a02985920baa57f948dc542b9388vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_EXTENDED_SASEXPANDER (0x11)
0dd3967035b8a02985920baa57f948dc542b9388vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_EXTENDED_SASDEVICE (0x12)
6475559a7e0e52892efbab4fbdedc879f6866109vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_EXTENDED_SASPHYS (0x13)
6475559a7e0e52892efbab4fbdedc879f6866109vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_EXTENDED_LOG (0x14)
6475559a7e0e52892efbab4fbdedc879f6866109vboxsync#define MPT_CONFIGURATION_PAGE_TYPE_EXTENDED_ENCLOSURE (0x15)
6475559a7e0e52892efbab4fbdedc879f6866109vboxsync * Configuration Page header - Common to all pages.
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Version of the page. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** The length of the page in 32bit D-Words. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Number of the page. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Type of the page. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync} MptConfigurationPageHeader, *PMptConfigurationPageHeader;
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync * Extended configuration page header - Common to all extended pages.
f75c6db919d277952ca03b7acf643e5e3ac96cafvboxsync /** Version of the page. */
0dd3967035b8a02985920baa57f948dc542b9388vboxsync /** Reserved. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Number of the page. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Type of the page. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Extended page length. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Extended page type. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Reserved */
3c6306a66deef467e3c13483dd6529e1e1c6b822vboxsync} MptExtendedConfigurationPageHeader, *PMptExtendedConfigurationPageHeader;
f75c6db919d277952ca03b7acf643e5e3ac96cafvboxsyncAssertCompileSize(MptExtendedConfigurationPageHeader, 8);
f75c6db919d277952ca03b7acf643e5e3ac96cafvboxsync * Manufacturing page 0. - Readonly.
f75c6db919d277952ca03b7acf643e5e3ac96cafvboxsync /** Union. */
f75c6db919d277952ca03b7acf643e5e3ac96cafvboxsync /** Byte view. */
0c80e8c5ac4249337af378ff41c60033c9fff59fvboxsync /** Field view. */
f75c6db919d277952ca03b7acf643e5e3ac96cafvboxsync /** The omnipresent header. */
805a319b88bdf29b369da48402c58897a5e8b65dvboxsync /** Name of the chip. */
805a319b88bdf29b369da48402c58897a5e8b65dvboxsync /** Chip revision. */
805a319b88bdf29b369da48402c58897a5e8b65dvboxsync /** Board name. */
805a319b88bdf29b369da48402c58897a5e8b65dvboxsync /** Board assembly. */
805a319b88bdf29b369da48402c58897a5e8b65dvboxsync /** Board tracer number. */
0c80e8c5ac4249337af378ff41c60033c9fff59fvboxsync} MptConfigurationPageManufacturing0, *PMptConfigurationPageManufacturing0;
805a319b88bdf29b369da48402c58897a5e8b65dvboxsyncAssertCompileSize(MptConfigurationPageManufacturing0, 76);
805a319b88bdf29b369da48402c58897a5e8b65dvboxsync * Manufacturing page 1. - Readonly Persistent.
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Union */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Byte view */
3c6306a66deef467e3c13483dd6529e1e1c6b822vboxsync /** Field view */
805a319b88bdf29b369da48402c58897a5e8b65dvboxsync /** The omnipresent header. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** VPD info - don't know what belongs here so all zero. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync} MptConfigurationPageManufacturing1, *PMptConfigurationPageManufacturing1;
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsyncAssertCompileSize(MptConfigurationPageManufacturing1, 260);
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Manufacturing page 2. - Readonly.
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync /** Union. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Byte view. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Field view. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** The omnipresent header. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** PCI Device ID. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** PCI Revision ID. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Reserved. */
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync /** Hardware specific settings... */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync} MptConfigurationPageManufacturing2, *PMptConfigurationPageManufacturing2;
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsyncAssertCompileSize(MptConfigurationPageManufacturing2, 8);
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync * Manufacturing page 3. - Readonly.
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Union. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Byte view. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Field view. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** The omnipresent header. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** PCI Device ID. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** PCI Revision ID. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Reserved. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Chip specific settings... */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync} MptConfigurationPageManufacturing3, *PMptConfigurationPageManufacturing3;
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsyncAssertCompileSize(MptConfigurationPageManufacturing3, 8);
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * Manufacturing page 4. - Readonly.
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync /** Union. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Byte view. */
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** Field view. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** The omnipresent header. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** Reserved. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** InfoOffset0. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Info size. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** InfoOffset1. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Info size. */
5050fc8de0b121eab1b738d7c1007cde4903284dvboxsync /** Size of the inquiry data. */
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** Reserved. */
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** Inquiry data. */
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** IS volume settings. */
3c6306a66deef467e3c13483dd6529e1e1c6b822vboxsync /** IME volume settings. */
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** IM volume settings. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync} MptConfigurationPageManufacturing4, *PMptConfigurationPageManufacturing4;
f75c6db919d277952ca03b7acf643e5e3ac96cafvboxsyncAssertCompileSize(MptConfigurationPageManufacturing4, 84);
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync * Manufacturing page 5 - Readonly.
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Union. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Byte view. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Field view. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** The omnipresent header. */
0dd3967035b8a02985920baa57f948dc542b9388vboxsync /** Base WWID. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Flags */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Number of ForceWWID fields in this page. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Reserved */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Reserved */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** ForceWWID entries Maximum of 8 because the SAS controller doesn't has more */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync} MptConfigurationPageManufacturing5, *PMptConfigurationPageManufacturing5;
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsyncAssertCompileSize(MptConfigurationPageManufacturing5, 24+64);
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync * Manufacturing page 6 - Readonly.
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** Union. */
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** Byte view. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Field view. */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** The omnipresent header. */
b4d7b4dbcc45b8bde7502aa129440d92d7ffd038vboxsync /** Product specific data - 0 for now */
ffb50166c9adb4ae583b914d405197035cf890advboxsync} MptConfigurationPageManufacturing6, *PMptConfigurationPageManufacturing6;
ffb50166c9adb4ae583b914d405197035cf890advboxsyncAssertCompileSize(MptConfigurationPageManufacturing6, 4);
ffb50166c9adb4ae583b914d405197035cf890advboxsync * Manufacutring page 7 - PHY element.
ffb50166c9adb4ae583b914d405197035cf890advboxsynctypedef struct MptConfigurationPageManufacturing7PHY
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** Pinout */
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** Connector name */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Location */
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** reserved */
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** Slot */
ffb50166c9adb4ae583b914d405197035cf890advboxsync} MptConfigurationPageManufacturing7PHY, *PMptConfigurationPageManufacturing7PHY;
ffb50166c9adb4ae583b914d405197035cf890advboxsyncAssertCompileSize(MptConfigurationPageManufacturing7PHY, 24);
ffb50166c9adb4ae583b914d405197035cf890advboxsync * Manufacturing page 7 - Readonly.
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync /** Union. */
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** Byte view. */
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** Field view. */
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync /** The omnipresent header. */
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync /** Reserved */
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync /** Flags */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Enclosure name */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Nummber of PHYs */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** Reserved */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync /** PHY list for the SAS controller - variable depending on the number of ports */
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync} MptConfigurationPageManufacturing7, *PMptConfigurationPageManufacturing7;
ffb50166c9adb4ae583b914d405197035cf890advboxsyncAssertCompileSize(MptConfigurationPageManufacturing7, 36+sizeof(MptConfigurationPageManufacturing7PHY));
ffb50166c9adb4ae583b914d405197035cf890advboxsync#define LSILOGICSCSI_MANUFACTURING7_GET_SIZE(ports) (sizeof(MptConfigurationPageManufacturing7) + ((ports) - 1) * sizeof(MptConfigurationPageManufacturing7PHY))
ffb50166c9adb4ae583b914d405197035cf890advboxsync/** Flags for the flags field */
ffb50166c9adb4ae583b914d405197035cf890advboxsync#define LSILOGICSCSI_MANUFACTURING7_FLAGS_USE_PROVIDED_INFORMATION RT_BIT(0)
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync/** Flags for the pinout field */
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_UNKNOWN RT_BIT(0)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_SFF8482 RT_BIT(1)
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_SFF8470_LANE1 RT_BIT(8)
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_SFF8470_LANE2 RT_BIT(9)
c89333d3e41e439ed9e74768000edc399d3e72e6vboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_SFF8470_LANE3 RT_BIT(10)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_SFF8470_LANE4 RT_BIT(11)
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_SFF8484_LANE1 RT_BIT(16)
ffb50166c9adb4ae583b914d405197035cf890advboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_SFF8484_LANE2 RT_BIT(17)
ffb50166c9adb4ae583b914d405197035cf890advboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_SFF8484_LANE3 RT_BIT(18)
ffb50166c9adb4ae583b914d405197035cf890advboxsync#define LSILOGICSCSI_MANUFACTURING7_PINOUT_SFF8484_LANE4 RT_BIT(19)
ffb50166c9adb4ae583b914d405197035cf890advboxsync/** Flags for the location field */
ffb50166c9adb4ae583b914d405197035cf890advboxsync#define LSILOGICSCSI_MANUFACTURING7_LOCATION_UNKNOWN 0x01
ffb50166c9adb4ae583b914d405197035cf890advboxsync#define LSILOGICSCSI_MANUFACTURING7_LOCATION_INTERNAL 0x02
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync#define LSILOGICSCSI_MANUFACTURING7_LOCATION_EXTERNAL 0x04
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync#define LSILOGICSCSI_MANUFACTURING7_LOCATION_SWITCHABLE 0x08
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync#define LSILOGICSCSI_MANUFACTURING7_LOCATION_AUTO 0x10
ffb50166c9adb4ae583b914d405197035cf890advboxsync#define LSILOGICSCSI_MANUFACTURING7_LOCATION_NOT_PRESENT 0x20
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync#define LSILOGICSCSI_MANUFACTURING7_LOCATION_NOT_CONNECTED 0x80
ffb50166c9adb4ae583b914d405197035cf890advboxsync * Manufacturing page 8 - Readonly.
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** Union. */
750df3fe104e01cadbc3d5bd20243055d283d4e5vboxsync /** Byte view. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Field view. */
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** The omnipresent header. */
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** Product specific information */
6475559a7e0e52892efbab4fbdedc879f6866109vboxsync} MptConfigurationPageManufacturing8, *PMptConfigurationPageManufacturing8;
6475559a7e0e52892efbab4fbdedc879f6866109vboxsyncAssertCompileSize(MptConfigurationPageManufacturing8, 4);
6475559a7e0e52892efbab4fbdedc879f6866109vboxsync * Manufacturing page 9 - Readonly.
6475559a7e0e52892efbab4fbdedc879f6866109vboxsync /** Union. */
6475559a7e0e52892efbab4fbdedc879f6866109vboxsync /** Byte view. */
ffb50166c9adb4ae583b914d405197035cf890advboxsync /** Field view. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** The omnipresent header. */
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsync /** Product specific information */
6475559a7e0e52892efbab4fbdedc879f6866109vboxsync} MptConfigurationPageManufacturing9, *PMptConfigurationPageManufacturing9;
462e60a19d02a99b2b1a5c08dff74bb0808d707cvboxsyncAssertCompileSize(MptConfigurationPageManufacturing9, 4);
6475559a7e0e52892efbab4fbdedc879f6866109vboxsync * Manufacturing page 10 - Readonly.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Union. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Byte view. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Field view. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** The omnipresent header. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Product specific information */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync} MptConfigurationPageManufacturing10, *PMptConfigurationPageManufacturing10;
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsyncAssertCompileSize(MptConfigurationPageManufacturing10, 4);
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync * IO Unit page 0. - Readonly.
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Union. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Byte view. */
553a2f0d8ef91a6dad8de4eef206ff093af53a5dvboxsync /** Field view. */
} fields;
#pragma pack()
typedef struct MptConfigurationPageIOUnit1
} fields;
#pragma pack()
typedef struct MptConfigurationPageIOUnit2AdapterOrdering
#pragma pack()
typedef struct MptConfigurationPageIOUnit2
} fields;
#pragma pack()
typedef struct MptConfigurationPageIOUnit3
} fields;
#pragma pack()
typedef struct MptConfigurationPageIOUnit4
} fields;
#pragma pack()
typedef struct MptConfigurationPageIOC0
} fields;
#pragma pack()
typedef struct MptConfigurationPageIOC1
} fields;
#pragma pack()
typedef struct MptConfigurationPageIOC2
} fields;
#pragma pack()
typedef struct MptConfigurationPageIOC3
} fields;
#pragma pack()
typedef struct MptConfigurationPageIOC4
} fields;
#pragma pack()
typedef struct MptConfigurationPageIOC6
} fields;
#pragma pack()
typedef struct MptConfigurationPageBIOS1
} fields;
#pragma pack()
typedef struct MptConfigurationPageBIOS2
} BootDevice;
} fields;
#pragma pack()
typedef struct MptConfigurationPageBIOS4
} fields;
#pragma pack()
typedef struct MptConfigurationPageSCSISPIPort0
} fields;
#pragma pack()
typedef struct MptConfigurationPageSCSISPIPort1
} fields;
#pragma pack()
typedef struct MptDeviceSettings
#pragma pack()
typedef struct MptConfigurationPageSCSISPIPort2
} fields;
#pragma pack()
typedef struct MptConfigurationPageSCSISPIDevice0
} fields;
#pragma pack()
typedef struct MptConfigurationPageSCSISPIDevice1
} fields;
#pragma pack()
typedef struct MptConfigurationPageSCSISPIDevice2
} fields;
#pragma pack()
typedef struct MptConfigurationPageSCSISPIDevice3
} fields;
#pragma pack()
typedef struct MptConfigurationPageSASIOUnit0PHY
#pragma pack()
typedef struct MptConfigurationPageSASIOUnit0
} fields;
#pragma pack()
AssertCompileSize(MptConfigurationPageSASIOUnit0, 8+2+2+1+3+sizeof(MptConfigurationPageSASIOUnit0PHY));
#define LSILOGICSCSI_SASIOUNIT0_GET_SIZE(ports) (sizeof(MptConfigurationPageSASIOUnit0) + ((ports) - 1) * sizeof(MptConfigurationPageSASIOUnit0PHY))
typedef struct MptConfigurationPageSASIOUnit1PHY
#pragma pack()
typedef struct MptConfigurationPageSASIOUnit1
} fields;
#pragma pack()
#define LSILOGICSCSI_SASIOUNIT1_GET_SIZE(ports) (sizeof(MptConfigurationPageSASIOUnit1) + ((ports) - 1) * sizeof(MptConfigurationPageSASIOUnit1PHY))
typedef struct MptConfigurationPageSASIOUnit2
} fields;
#pragma pack()
typedef struct MptConfigurationPageSASIOUnit3
} fields;
#pragma pack()
typedef struct MptConfigurationPageSASPHY0
} fields;
#pragma pack()
typedef struct MptConfigurationPageSASPHY1
} fields;
#pragma pack()
typedef struct MptConfigurationPageSASDevice0
} fields;
#pragma pack()
typedef struct MptConfigurationPageSASDevice1
} fields;
#pragma pack()
typedef struct MptConfigurationPageSASDevice2
} fields;
#pragma pack()
typedef struct MptSASDevice
typedef struct MptConfigurationPageSASExpander0
} fields;
#pragma pack()
typedef struct MptConfigurationPageSASExpander1
} fields;
#pragma pack()
typedef struct MptConfigurationPagesSupported_SSM_V2
typedef struct MptConfigurationPagesSpi
typedef struct MptPHY
typedef struct MptConfigurationPagesSas
#pragma pack()
typedef struct MptConfigurationPagesSupported
enum MPTSGENTRYTYPE
typedef enum LSILOGICSTATE
typedef enum LSILOGICWHOINIT