Commit b130b0d5 authored by Suganath prabu Subramani's avatar Suganath prabu Subramani Committed by Martin K. Petersen

mpt3sas: Added support for high port count HBA variants.

Updated hardware description headers with MPI v2.6 and
mpt3sas_pci_table[] with vendor_ids, device_ids of Cutlass and Intruder
HBA which have support for 4 ports.
Signed-off-by: default avatarSuganath prabu Subramani <suganath-prabu.subramani@avagotech.com>
Signed-off-by: default avatarChaitra P B <chaitra.basappa@avagotech.com>
Reviewed-by: default avatarTomas Henzl <thenzl@redhat.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 8038e645
/* /*
* Copyright (c) 2000-2014 LSI Corporation. * Copyright 2000-2015 Avago Technologies. All rights reserved.
* *
* *
* Name: mpi2.h * Name: mpi2.h
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
* scatter/gather formats. * scatter/gather formats.
* Creation Date: June 21, 2006 * Creation Date: June 21, 2006
* *
* mpi2.h Version: 02.00.35 * mpi2.h Version: 02.00.37
* *
* NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25 * NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25
* prefix are for use only on MPI v2.5 products, and must not be used * prefix are for use only on MPI v2.5 products, and must not be used
...@@ -92,6 +92,12 @@ ...@@ -92,6 +92,12 @@
* 12-05-13 02.00.33 Bumped MPI2_HEADER_VERSION_UNIT. * 12-05-13 02.00.33 Bumped MPI2_HEADER_VERSION_UNIT.
* 01-08-14 02.00.34 Bumped MPI2_HEADER_VERSION_UNIT * 01-08-14 02.00.34 Bumped MPI2_HEADER_VERSION_UNIT
* 06-13-14 02.00.35 Bumped MPI2_HEADER_VERSION_UNIT. * 06-13-14 02.00.35 Bumped MPI2_HEADER_VERSION_UNIT.
* 11-18-14 02.00.36 Updated copyright information.
* Bumped MPI2_HEADER_VERSION_UNIT.
* 03-xx-15 02.00.37 Bumped MPI2_HEADER_VERSION_UNIT.
* Added Scratchpad registers to
* MPI2_SYSTEM_INTERFACE_REGS.
* Added MPI2_DIAG_SBR_RELOAD.
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
...@@ -124,6 +130,12 @@ ...@@ -124,6 +130,12 @@
MPI25_VERSION_MINOR) MPI25_VERSION_MINOR)
#define MPI2_VERSION_02_05 (0x0205) #define MPI2_VERSION_02_05 (0x0205)
/*minor version for MPI v2.6 compatible products */
#define MPI26_VERSION_MINOR (0x06)
#define MPI26_VERSION ((MPI2_VERSION_MAJOR << MPI2_VERSION_MAJOR_SHIFT) | \
MPI26_VERSION_MINOR)
#define MPI2_VERSION_02_06 (0x0206)
/*Unit and Dev versioning for this MPI header set */ /*Unit and Dev versioning for this MPI header set */
#define MPI2_HEADER_VERSION_UNIT (0x23) #define MPI2_HEADER_VERSION_UNIT (0x23)
#define MPI2_HEADER_VERSION_DEV (0x00) #define MPI2_HEADER_VERSION_DEV (0x00)
...@@ -179,10 +191,12 @@ typedef volatile struct _MPI2_SYSTEM_INTERFACE_REGS { ...@@ -179,10 +191,12 @@ typedef volatile struct _MPI2_SYSTEM_INTERFACE_REGS {
U32 HCBSize; /*0x74 */ U32 HCBSize; /*0x74 */
U32 HCBAddressLow; /*0x78 */ U32 HCBAddressLow; /*0x78 */
U32 HCBAddressHigh; /*0x7C */ U32 HCBAddressHigh; /*0x7C */
U32 Reserved6[16]; /*0x80 */ U32 Reserved6[12]; /*0x80 */
U32 Scratchpad[4]; /*0xB0 */
U32 RequestDescriptorPostLow; /*0xC0 */ U32 RequestDescriptorPostLow; /*0xC0 */
U32 RequestDescriptorPostHigh; /*0xC4 */ U32 RequestDescriptorPostHigh; /*0xC4 */
U32 Reserved7[14]; /*0xC8 */ U32 AtomicRequestDescriptorPost;/*0xC8 */
U32 Reserved7[13]; /*0xCC */
} MPI2_SYSTEM_INTERFACE_REGS, } MPI2_SYSTEM_INTERFACE_REGS,
*PTR_MPI2_SYSTEM_INTERFACE_REGS, *PTR_MPI2_SYSTEM_INTERFACE_REGS,
Mpi2SystemInterfaceRegs_t, Mpi2SystemInterfaceRegs_t,
...@@ -224,6 +238,8 @@ typedef volatile struct _MPI2_SYSTEM_INTERFACE_REGS { ...@@ -224,6 +238,8 @@ typedef volatile struct _MPI2_SYSTEM_INTERFACE_REGS {
*/ */
#define MPI2_HOST_DIAGNOSTIC_OFFSET (0x00000008) #define MPI2_HOST_DIAGNOSTIC_OFFSET (0x00000008)
#define MPI2_DIAG_SBR_RELOAD (0x00002000)
#define MPI2_DIAG_BOOT_DEVICE_SELECT_MASK (0x00001800) #define MPI2_DIAG_BOOT_DEVICE_SELECT_MASK (0x00001800)
#define MPI2_DIAG_BOOT_DEVICE_SELECT_DEFAULT (0x00000000) #define MPI2_DIAG_BOOT_DEVICE_SELECT_DEFAULT (0x00000000)
#define MPI2_DIAG_BOOT_DEVICE_SELECT_HCDW (0x00000800) #define MPI2_DIAG_BOOT_DEVICE_SELECT_HCDW (0x00000800)
...@@ -298,10 +314,19 @@ typedef volatile struct _MPI2_SYSTEM_INTERFACE_REGS { ...@@ -298,10 +314,19 @@ typedef volatile struct _MPI2_SYSTEM_INTERFACE_REGS {
#define MPI2_HCB_ADDRESS_HIGH_OFFSET (0x0000007C) #define MPI2_HCB_ADDRESS_HIGH_OFFSET (0x0000007C)
/* /*
*Offsets for the Request Queue *Offsets for the Scratchpad registers
*/
#define MPI26_SCRATCHPAD0_OFFSET (0x000000B0)
#define MPI26_SCRATCHPAD1_OFFSET (0x000000B4)
#define MPI26_SCRATCHPAD2_OFFSET (0x000000B8)
#define MPI26_SCRATCHPAD3_OFFSET (0x000000BC)
/*
*Offsets for the Request Descriptor Post Queue
*/ */
#define MPI2_REQUEST_DESCRIPTOR_POST_LOW_OFFSET (0x000000C0) #define MPI2_REQUEST_DESCRIPTOR_POST_LOW_OFFSET (0x000000C0)
#define MPI2_REQUEST_DESCRIPTOR_POST_HIGH_OFFSET (0x000000C4) #define MPI2_REQUEST_DESCRIPTOR_POST_HIGH_OFFSET (0x000000C4)
#define MPI26_ATOMIC_REQUEST_DESCRIPTOR_POST_OFFSET (0x000000C8)
/*Hard Reset delay timings */ /*Hard Reset delay timings */
#define MPI2_HARD_RESET_PCIE_FIRST_READ_DELAY_MICRO_SEC (50000) #define MPI2_HARD_RESET_PCIE_FIRST_READ_DELAY_MICRO_SEC (50000)
...@@ -329,7 +354,8 @@ typedef struct _MPI2_DEFAULT_REQUEST_DESCRIPTOR { ...@@ -329,7 +354,8 @@ typedef struct _MPI2_DEFAULT_REQUEST_DESCRIPTOR {
*pMpi2DefaultRequestDescriptor_t; *pMpi2DefaultRequestDescriptor_t;
/*defines for the RequestFlags field */ /*defines for the RequestFlags field */
#define MPI2_REQ_DESCRIPT_FLAGS_TYPE_MASK (0x0E) #define MPI2_REQ_DESCRIPT_FLAGS_TYPE_MASK (0x1E)
#define MPI2_REQ_DESCRIPT_FLAGS_TYPE_RSHIFT (1)
#define MPI2_REQ_DESCRIPT_FLAGS_SCSI_IO (0x00) #define MPI2_REQ_DESCRIPT_FLAGS_SCSI_IO (0x00)
#define MPI2_REQ_DESCRIPT_FLAGS_SCSI_TARGET (0x02) #define MPI2_REQ_DESCRIPT_FLAGS_SCSI_TARGET (0x02)
#define MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY (0x06) #define MPI2_REQ_DESCRIPT_FLAGS_HIGH_PRIORITY (0x06)
...@@ -337,7 +363,7 @@ typedef struct _MPI2_DEFAULT_REQUEST_DESCRIPTOR { ...@@ -337,7 +363,7 @@ typedef struct _MPI2_DEFAULT_REQUEST_DESCRIPTOR {
#define MPI2_REQ_DESCRIPT_FLAGS_RAID_ACCELERATOR (0x0A) #define MPI2_REQ_DESCRIPT_FLAGS_RAID_ACCELERATOR (0x0A)
#define MPI25_REQ_DESCRIPT_FLAGS_FAST_PATH_SCSI_IO (0x0C) #define MPI25_REQ_DESCRIPT_FLAGS_FAST_PATH_SCSI_IO (0x0C)
#define MPI2_REQ_DESCRIPT_FLAGS_IOC_FIFO_MARKER (0x01) #define MPI2_REQ_DESCRIPT_FLAGS_IOC_FIFO_MARKER (0x01)
/*High Priority Request Descriptor */ /*High Priority Request Descriptor */
typedef struct _MPI2_HIGH_PRIORITY_REQUEST_DESCRIPTOR { typedef struct _MPI2_HIGH_PRIORITY_REQUEST_DESCRIPTOR {
...@@ -408,6 +434,33 @@ typedef union _MPI2_REQUEST_DESCRIPTOR_UNION { ...@@ -408,6 +434,33 @@ typedef union _MPI2_REQUEST_DESCRIPTOR_UNION {
Mpi2RequestDescriptorUnion_t, Mpi2RequestDescriptorUnion_t,
*pMpi2RequestDescriptorUnion_t; *pMpi2RequestDescriptorUnion_t;
/*Atomic Request Descriptors */
/*
* All Atomic Request Descriptors have the same format, so the following
* structure is used for all Atomic Request Descriptors:
* Atomic Default Request Descriptor
* Atomic High Priority Request Descriptor
* Atomic SCSI IO Request Descriptor
* Atomic SCSI Target Request Descriptor
* Atomic RAID Accelerator Request Descriptor
* Atomic Fast Path SCSI IO Request Descriptor
*/
/*Atomic Request Descriptor */
typedef struct _MPI26_ATOMIC_REQUEST_DESCRIPTOR {
U8 RequestFlags; /* 0x00 */
U8 MSIxIndex; /* 0x01 */
U16 SMID; /* 0x02 */
} MPI26_ATOMIC_REQUEST_DESCRIPTOR,
*PTR_MPI26_ATOMIC_REQUEST_DESCRIPTOR,
Mpi26AtomicRequestDescriptor_t,
*pMpi26AtomicRequestDescriptor_t;
/*for the RequestFlags field, use the same
*defines as MPI2_DEFAULT_REQUEST_DESCRIPTOR
*/
/*Reply Descriptors */ /*Reply Descriptors */
/*Default Reply Descriptor */ /*Default Reply Descriptor */
...@@ -548,6 +601,7 @@ typedef union _MPI2_REPLY_DESCRIPTORS_UNION { ...@@ -548,6 +601,7 @@ typedef union _MPI2_REPLY_DESCRIPTORS_UNION {
#define MPI2_FUNCTION_SCSI_ENCLOSURE_PROCESSOR (0x18) #define MPI2_FUNCTION_SCSI_ENCLOSURE_PROCESSOR (0x18)
#define MPI2_FUNCTION_SMP_PASSTHROUGH (0x1A) #define MPI2_FUNCTION_SMP_PASSTHROUGH (0x1A)
#define MPI2_FUNCTION_SAS_IO_UNIT_CONTROL (0x1B) #define MPI2_FUNCTION_SAS_IO_UNIT_CONTROL (0x1B)
#define MPI2_FUNCTION_IO_UNIT_CONTROL (0x1B)
#define MPI2_FUNCTION_SATA_PASSTHROUGH (0x1C) #define MPI2_FUNCTION_SATA_PASSTHROUGH (0x1C)
#define MPI2_FUNCTION_DIAG_BUFFER_POST (0x1D) #define MPI2_FUNCTION_DIAG_BUFFER_POST (0x1D)
#define MPI2_FUNCTION_DIAG_RELEASE (0x1E) #define MPI2_FUNCTION_DIAG_RELEASE (0x1E)
...@@ -587,6 +641,7 @@ typedef union _MPI2_REPLY_DESCRIPTORS_UNION { ...@@ -587,6 +641,7 @@ typedef union _MPI2_REPLY_DESCRIPTORS_UNION {
#define MPI2_IOCSTATUS_INVALID_FIELD (0x0007) #define MPI2_IOCSTATUS_INVALID_FIELD (0x0007)
#define MPI2_IOCSTATUS_INVALID_STATE (0x0008) #define MPI2_IOCSTATUS_INVALID_STATE (0x0008)
#define MPI2_IOCSTATUS_OP_STATE_NOT_SUPPORTED (0x0009) #define MPI2_IOCSTATUS_OP_STATE_NOT_SUPPORTED (0x0009)
#define MPI2_IOCSTATUS_INSUFFICIENT_POWER (0x000A)
/**************************************************************************** /****************************************************************************
* Config IOCStatus values * Config IOCStatus values
...@@ -1045,7 +1100,7 @@ typedef union _MPI2_IEEE_SGE_CHAIN_UNION { ...@@ -1045,7 +1100,7 @@ typedef union _MPI2_IEEE_SGE_CHAIN_UNION {
Mpi2IeeeSgeChainUnion_t, Mpi2IeeeSgeChainUnion_t,
*pMpi2IeeeSgeChainUnion_t; *pMpi2IeeeSgeChainUnion_t;
/*MPI25_IEEE_SGE_CHAIN64 is for MPI v2.5 products only */ /*MPI25_IEEE_SGE_CHAIN64 is for MPI v2.5 and later */
typedef struct _MPI25_IEEE_SGE_CHAIN64 { typedef struct _MPI25_IEEE_SGE_CHAIN64 {
U64 Address; U64 Address;
U32 Length; U32 Length;
...@@ -1098,6 +1153,11 @@ typedef union _MPI25_SGE_IO_UNION { ...@@ -1098,6 +1153,11 @@ typedef union _MPI25_SGE_IO_UNION {
#define MPI2_IEEE_SGE_FLAGS_SIMPLE_ELEMENT (0x00) #define MPI2_IEEE_SGE_FLAGS_SIMPLE_ELEMENT (0x00)
#define MPI2_IEEE_SGE_FLAGS_CHAIN_ELEMENT (0x80) #define MPI2_IEEE_SGE_FLAGS_CHAIN_ELEMENT (0x80)
/*Next Segment Format */
#define MPI26_IEEE_SGE_FLAGS_NSF_MASK (0x1C)
#define MPI26_IEEE_SGE_FLAGS_NSF_MPI_IEEE (0x00)
/*Data Location Address Space */ /*Data Location Address Space */
#define MPI2_IEEE_SGE_FLAGS_ADDR_MASK (0x03) #define MPI2_IEEE_SGE_FLAGS_ADDR_MASK (0x03)
...@@ -1108,6 +1168,7 @@ typedef union _MPI25_SGE_IO_UNION { ...@@ -1108,6 +1168,7 @@ typedef union _MPI25_SGE_IO_UNION {
#define MPI2_IEEE_SGE_FLAGS_SYSTEMPLBPCI_ADDR (0x03) #define MPI2_IEEE_SGE_FLAGS_SYSTEMPLBPCI_ADDR (0x03)
#define MPI2_IEEE_SGE_FLAGS_SYSTEMPLBCPI_ADDR \ #define MPI2_IEEE_SGE_FLAGS_SYSTEMPLBCPI_ADDR \
(MPI2_IEEE_SGE_FLAGS_SYSTEMPLBPCI_ADDR) (MPI2_IEEE_SGE_FLAGS_SYSTEMPLBPCI_ADDR)
#define MPI26_IEEE_SGE_FLAGS_IOCCTL_ADDR (0x02)
/**************************************************************************** /****************************************************************************
* IEEE SGE operation Macros * IEEE SGE operation Macros
...@@ -1166,6 +1227,7 @@ typedef union _MPI2_SGE_IO_UNION { ...@@ -1166,6 +1227,7 @@ typedef union _MPI2_SGE_IO_UNION {
#define MPI2_SGLFLAGS_SYSTEM_ADDRESS_SPACE (0x00) #define MPI2_SGLFLAGS_SYSTEM_ADDRESS_SPACE (0x00)
#define MPI2_SGLFLAGS_IOCDDR_ADDRESS_SPACE (0x04) #define MPI2_SGLFLAGS_IOCDDR_ADDRESS_SPACE (0x04)
#define MPI2_SGLFLAGS_IOCPLB_ADDRESS_SPACE (0x08) #define MPI2_SGLFLAGS_IOCPLB_ADDRESS_SPACE (0x08)
#define MPI26_SGLFLAGS_IOCPLB_ADDRESS_SPACE (0x08)
#define MPI2_SGLFLAGS_IOCPLBNTA_ADDRESS_SPACE (0x0C) #define MPI2_SGLFLAGS_IOCPLBNTA_ADDRESS_SPACE (0x0C)
/*values for SGL Type subfield */ /*values for SGL Type subfield */
#define MPI2_SGLFLAGS_SGL_TYPE_MASK (0x03) #define MPI2_SGLFLAGS_SGL_TYPE_MASK (0x03)
......
This diff is collapsed.
/* /*
* Copyright (c) 2000-2014 LSI Corporation. * Copyright 2000-2015 Avago Technologies. All rights reserved.
* *
* *
* Name: mpi2_init.h * Name: mpi2_init.h
* Title: MPI SCSI initiator mode messages and structures * Title: MPI SCSI initiator mode messages and structures
* Creation Date: June 23, 2006 * Creation Date: June 23, 2006
* *
* mpi2_init.h Version: 02.00.15 * mpi2_init.h Version: 02.00.17
* *
* NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25 * NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25
* prefix are for use only on MPI v2.5 products, and must not be used * prefix are for use only on MPI v2.5 products, and must not be used
...@@ -46,6 +46,10 @@ ...@@ -46,6 +46,10 @@
* 07-10-12 02.00.14 Added MPI2_SCSIIO_CONTROL_SHIFT_DATADIRECTION. * 07-10-12 02.00.14 Added MPI2_SCSIIO_CONTROL_SHIFT_DATADIRECTION.
* 04-09-13 02.00.15 Added SCSIStatusQualifier field to MPI2_SCSI_IO_REPLY, * 04-09-13 02.00.15 Added SCSIStatusQualifier field to MPI2_SCSI_IO_REPLY,
* replacing the Reserved4 field. * replacing the Reserved4 field.
* 11-18-14 02.00.16 Updated copyright information.
* 03-xx-15 02.00.17 Updated for MPI v2.6.
* Added MPI2_SEP_REQ_SLOTSTATUS_DEV_OFF and
* MPI2_SEP_REPLY_SLOTSTATUS_DEV_OFF.
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
...@@ -128,6 +132,7 @@ typedef struct _MPI2_SCSI_IO_REQUEST { ...@@ -128,6 +132,7 @@ typedef struct _MPI2_SCSI_IO_REQUEST {
#define MPI2_SCSIIO_MSGFLAGS_IOCDDR_SENSE_ADDR (0x04) #define MPI2_SCSIIO_MSGFLAGS_IOCDDR_SENSE_ADDR (0x04)
#define MPI2_SCSIIO_MSGFLAGS_IOCPLB_SENSE_ADDR (0x08) #define MPI2_SCSIIO_MSGFLAGS_IOCPLB_SENSE_ADDR (0x08)
#define MPI2_SCSIIO_MSGFLAGS_IOCPLBNTA_SENSE_ADDR (0x0C) #define MPI2_SCSIIO_MSGFLAGS_IOCPLBNTA_SENSE_ADDR (0x0C)
#define MPI26_SCSIIO_MSGFLAGS_IOCCTL_SENSE_ADDR (0x08)
/*SCSI IO SGLFlags bits */ /*SCSI IO SGLFlags bits */
...@@ -228,7 +233,7 @@ typedef union _MPI25_SCSI_IO_CDB_UNION { ...@@ -228,7 +233,7 @@ typedef union _MPI25_SCSI_IO_CDB_UNION {
} MPI25_SCSI_IO_CDB_UNION, *PTR_MPI25_SCSI_IO_CDB_UNION, } MPI25_SCSI_IO_CDB_UNION, *PTR_MPI25_SCSI_IO_CDB_UNION,
Mpi25ScsiIoCdb_t, *pMpi25ScsiIoCdb_t; Mpi25ScsiIoCdb_t, *pMpi25ScsiIoCdb_t;
/*MPI v2.5 SCSI IO Request Message */ /*MPI v2.5/2.6 SCSI IO Request Message */
typedef struct _MPI25_SCSI_IO_REQUEST { typedef struct _MPI25_SCSI_IO_REQUEST {
U16 DevHandle; /*0x00 */ U16 DevHandle; /*0x00 */
U8 ChainOffset; /*0x02 */ U8 ChainOffset; /*0x02 */
...@@ -302,12 +307,14 @@ typedef struct _MPI25_SCSI_IO_REQUEST { ...@@ -302,12 +307,14 @@ typedef struct _MPI25_SCSI_IO_REQUEST {
#define MPI25_SCSIIO_NUM_SGLOFFSETS (4) #define MPI25_SCSIIO_NUM_SGLOFFSETS (4)
/*defines for the IoFlags field */ /*defines for the IoFlags field */
#define MPI25_SCSIIO_IOFLAGS_IO_PATH_MASK (0xC000) #define MPI25_SCSIIO_IOFLAGS_IO_PATH_MASK (0xC000)
#define MPI25_SCSIIO_IOFLAGS_NORMAL_PATH (0x0000) #define MPI25_SCSIIO_IOFLAGS_NORMAL_PATH (0x0000)
#define MPI25_SCSIIO_IOFLAGS_FAST_PATH (0x4000) #define MPI25_SCSIIO_IOFLAGS_FAST_PATH (0x4000)
#define MPI26_SCSIIO_IOFLAGS_ESCAPE_PASSTHROUGH (0x2000)
#define MPI25_SCSIIO_IOFLAGS_LARGE_CDB (0x1000) #define MPI25_SCSIIO_IOFLAGS_LARGE_CDB (0x1000)
#define MPI25_SCSIIO_IOFLAGS_BIDIRECTIONAL (0x0800) #define MPI25_SCSIIO_IOFLAGS_BIDIRECTIONAL (0x0800)
#define MPI26_SCSIIO_IOFLAGS_PORT_REQUEST (0x0400)
#define MPI25_SCSIIO_IOFLAGS_CDBLENGTH_MASK (0x01FF) #define MPI25_SCSIIO_IOFLAGS_CDBLENGTH_MASK (0x01FF)
/*MPI v2.5 defines for the EEDPFlags bits */ /*MPI v2.5 defines for the EEDPFlags bits */
...@@ -512,6 +519,7 @@ typedef struct _MPI2_SEP_REQUEST { ...@@ -512,6 +519,7 @@ typedef struct _MPI2_SEP_REQUEST {
#define MPI2_SEP_REQ_FLAGS_ENCLOSURE_SLOT_ADDRESS (0x01) #define MPI2_SEP_REQ_FLAGS_ENCLOSURE_SLOT_ADDRESS (0x01)
/*SlotStatus defines */ /*SlotStatus defines */
#define MPI2_SEP_REQ_SLOTSTATUS_DEV_OFF (0x00080000)
#define MPI2_SEP_REQ_SLOTSTATUS_REQUEST_REMOVE (0x00040000) #define MPI2_SEP_REQ_SLOTSTATUS_REQUEST_REMOVE (0x00040000)
#define MPI2_SEP_REQ_SLOTSTATUS_IDENTIFY_REQUEST (0x00020000) #define MPI2_SEP_REQ_SLOTSTATUS_IDENTIFY_REQUEST (0x00020000)
#define MPI2_SEP_REQ_SLOTSTATUS_REBUILD_STOPPED (0x00000200) #define MPI2_SEP_REQ_SLOTSTATUS_REBUILD_STOPPED (0x00000200)
...@@ -547,6 +555,7 @@ typedef struct _MPI2_SEP_REPLY { ...@@ -547,6 +555,7 @@ typedef struct _MPI2_SEP_REPLY {
Mpi2SepReply_t, *pMpi2SepReply_t; Mpi2SepReply_t, *pMpi2SepReply_t;
/*SlotStatus defines */ /*SlotStatus defines */
#define MPI2_SEP_REPLY_SLOTSTATUS_DEV_OFF (0x00080000)
#define MPI2_SEP_REPLY_SLOTSTATUS_REMOVE_READY (0x00040000) #define MPI2_SEP_REPLY_SLOTSTATUS_REMOVE_READY (0x00040000)
#define MPI2_SEP_REPLY_SLOTSTATUS_IDENTIFY_REQUEST (0x00020000) #define MPI2_SEP_REPLY_SLOTSTATUS_IDENTIFY_REQUEST (0x00020000)
#define MPI2_SEP_REPLY_SLOTSTATUS_REBUILD_STOPPED (0x00000200) #define MPI2_SEP_REPLY_SLOTSTATUS_REBUILD_STOPPED (0x00000200)
......
This diff is collapsed.
/* /*
* Copyright (c) 2000-2014 LSI Corporation. * Copyright 2000-2014 Avago Technologies. All rights reserved.
* *
* *
* Name: mpi2_raid.h * Name: mpi2_raid.h
* Title: MPI Integrated RAID messages and structures * Title: MPI Integrated RAID messages and structures
* Creation Date: April 26, 2007 * Creation Date: April 26, 2007
* *
* mpi2_raid.h Version: 02.00.10 * mpi2_raid.h Version: 02.00.11
* *
* Version History * Version History
* --------------- * ---------------
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
* 07-26-12 02.00.09 Added ElapsedSeconds field to MPI2_RAID_VOL_INDICATOR. * 07-26-12 02.00.09 Added ElapsedSeconds field to MPI2_RAID_VOL_INDICATOR.
* Added MPI2_RAID_VOL_FLAGS_ELAPSED_SECONDS_VALID define. * Added MPI2_RAID_VOL_FLAGS_ELAPSED_SECONDS_VALID define.
* 04-17-13 02.00.10 Added MPI25_RAID_ACTION_ADATA_ALLOW_PI. * 04-17-13 02.00.10 Added MPI25_RAID_ACTION_ADATA_ALLOW_PI.
* 11-18-14 02.00.11 Updated copyright information.
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
......
/* /*
* Copyright (c) 2000-2014 LSI Corporation. * Copyright 2000-2015 Avago Technologies. All rights reserved.
* *
* *
* Name: mpi2_sas.h * Name: mpi2_sas.h
* Title: MPI Serial Attached SCSI structures and definitions * Title: MPI Serial Attached SCSI structures and definitions
* Creation Date: February 9, 2007 * Creation Date: February 9, 2007
* *
* mpi2_sas.h Version: 02.00.08 * mpi2_sas.h Version: 02.00.10
* *
* NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25 * NOTE: Names (typedefs, defines, etc.) beginning with an MPI25 or Mpi25
* prefix are for use only on MPI v2.5 products, and must not be used * prefix are for use only on MPI v2.5 products, and must not be used
...@@ -32,6 +32,9 @@ ...@@ -32,6 +32,9 @@
* Passthrough Request message. * Passthrough Request message.
* 08-19-13 02.00.08 Made MPI2_SAS_OP_TRANSMIT_PORT_SELECT_SIGNAL obsolete * 08-19-13 02.00.08 Made MPI2_SAS_OP_TRANSMIT_PORT_SELECT_SIGNAL obsolete
* for anything newer than MPI v2.0. * for anything newer than MPI v2.0.
* 11-18-14 02.00.09 Updated copyright information.
* 03-xx-145 02.00.10 Updated for MPI v2.6.
* Added MPI2_SATA_PT_REQ_PT_FLAGS_FPDMA.
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
...@@ -183,6 +186,7 @@ typedef struct _MPI2_SATA_PASSTHROUGH_REQUEST { ...@@ -183,6 +186,7 @@ typedef struct _MPI2_SATA_PASSTHROUGH_REQUEST {
/*values for PassthroughFlags field */ /*values for PassthroughFlags field */
#define MPI2_SATA_PT_REQ_PT_FLAGS_EXECUTE_DIAG (0x0100) #define MPI2_SATA_PT_REQ_PT_FLAGS_EXECUTE_DIAG (0x0100)
#define MPI2_SATA_PT_REQ_PT_FLAGS_FPDMA (0x0040)
#define MPI2_SATA_PT_REQ_PT_FLAGS_DMA (0x0020) #define MPI2_SATA_PT_REQ_PT_FLAGS_DMA (0x0020)
#define MPI2_SATA_PT_REQ_PT_FLAGS_PIO (0x0010) #define MPI2_SATA_PT_REQ_PT_FLAGS_PIO (0x0010)
#define MPI2_SATA_PT_REQ_PT_FLAGS_UNSPECIFIED_VU (0x0004) #define MPI2_SATA_PT_REQ_PT_FLAGS_UNSPECIFIED_VU (0x0004)
...@@ -216,6 +220,8 @@ typedef struct _MPI2_SATA_PASSTHROUGH_REPLY { ...@@ -216,6 +220,8 @@ typedef struct _MPI2_SATA_PASSTHROUGH_REPLY {
/**************************************************************************** /****************************************************************************
* SAS IO Unit Control messages * SAS IO Unit Control messages
* (MPI v2.5 and earlier only.
* Replaced by IO Unit Control messages in MPI v2.6 and later.)
****************************************************************************/ ****************************************************************************/
/*SAS IO Unit Control Request Message */ /*SAS IO Unit Control Request Message */
......
/* /*
* Copyright (c) 2000-2014 LSI Corporation. * Copyright 2000-2014 Avago Technologies. All rights reserved.
* *
* *
* Name: mpi2_tool.h * Name: mpi2_tool.h
* Title: MPI diagnostic tool structures and definitions * Title: MPI diagnostic tool structures and definitions
* Creation Date: March 26, 2007 * Creation Date: March 26, 2007
* *
* mpi2_tool.h Version: 02.00.12 * mpi2_tool.h Version: 02.00.13
* *
* Version History * Version History
* --------------- * ---------------
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
* it uses MPI Chain SGE as well as MPI Simple SGE. * it uses MPI Chain SGE as well as MPI Simple SGE.
* 08-19-13 02.00.11 Added MPI2_TOOLBOX_TEXT_DISPLAY_TOOL and related info. * 08-19-13 02.00.11 Added MPI2_TOOLBOX_TEXT_DISPLAY_TOOL and related info.
* 01-08-14 02.00.12 Added MPI2_TOOLBOX_CLEAN_BIT26_PRODUCT_SPECIFIC. * 01-08-14 02.00.12 Added MPI2_TOOLBOX_CLEAN_BIT26_PRODUCT_SPECIFIC.
* 11-18-14 02.00.13 Updated copyright information.
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
......
/* /*
* Copyright (c) 2000-2014 LSI Corporation. * Copyright 2000-2014 Avago Technologies. All rights reserved.
* *
* *
* Name: mpi2_type.h * Name: mpi2_type.h
* Title: MPI basic type definitions * Title: MPI basic type definitions
* Creation Date: August 16, 2006 * Creation Date: August 16, 2006
* *
* mpi2_type.h Version: 02.00.00 * mpi2_type.h Version: 02.00.01
* *
* Version History * Version History
* --------------- * ---------------
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
* Date Version Description * Date Version Description
* -------- -------- ------------------------------------------------------ * -------- -------- ------------------------------------------------------
* 04-30-07 02.00.00 Corresponds to Fusion-MPT MPI Specification Rev A. * 04-30-07 02.00.00 Corresponds to Fusion-MPT MPI Specification Rev A.
* 11-18-14 02.00.01 Updated copyright information.
* -------------------------------------------------------------------------- * --------------------------------------------------------------------------
*/ */
......
...@@ -395,6 +395,9 @@ _base_sas_ioc_info(struct MPT3SAS_ADAPTER *ioc, MPI2DefaultReply_t *mpi_reply, ...@@ -395,6 +395,9 @@ _base_sas_ioc_info(struct MPT3SAS_ADAPTER *ioc, MPI2DefaultReply_t *mpi_reply,
case MPI2_IOCSTATUS_INSUFFICIENT_RESOURCES: case MPI2_IOCSTATUS_INSUFFICIENT_RESOURCES:
desc = "insufficient resources"; desc = "insufficient resources";
break; break;
case MPI2_IOCSTATUS_INSUFFICIENT_POWER:
desc = "insufficient power";
break;
case MPI2_IOCSTATUS_INVALID_FIELD: case MPI2_IOCSTATUS_INVALID_FIELD:
desc = "invalid field"; desc = "invalid field";
break; break;
...@@ -1348,6 +1351,7 @@ _base_build_zero_len_sge_ieee(struct MPT3SAS_ADAPTER *ioc, void *paddr) ...@@ -1348,6 +1351,7 @@ _base_build_zero_len_sge_ieee(struct MPT3SAS_ADAPTER *ioc, void *paddr)
u8 sgl_flags = (MPI2_IEEE_SGE_FLAGS_SIMPLE_ELEMENT | u8 sgl_flags = (MPI2_IEEE_SGE_FLAGS_SIMPLE_ELEMENT |
MPI2_IEEE_SGE_FLAGS_SYSTEM_ADDR | MPI2_IEEE_SGE_FLAGS_SYSTEM_ADDR |
MPI25_IEEE_SGE_FLAGS_END_OF_LIST); MPI25_IEEE_SGE_FLAGS_END_OF_LIST);
_base_add_sg_single_ieee(paddr, sgl_flags, 0, 0, -1); _base_add_sg_single_ieee(paddr, sgl_flags, 0, 0, -1);
} }
...@@ -5226,6 +5230,7 @@ mpt3sas_base_attach(struct MPT3SAS_ADAPTER *ioc) ...@@ -5226,6 +5230,7 @@ mpt3sas_base_attach(struct MPT3SAS_ADAPTER *ioc)
ioc->build_zero_len_sge = &_base_build_zero_len_sge; ioc->build_zero_len_sge = &_base_build_zero_len_sge;
break; break;
case MPI25_VERSION: case MPI25_VERSION:
case MPI26_VERSION:
/* /*
* In SAS3.0, * In SAS3.0,
* SCSI_IO, SMP_PASSTHRU, SATA_PASSTHRU, Target Assist, and * SCSI_IO, SMP_PASSTHRU, SATA_PASSTHRU, Target Assist, and
......
...@@ -410,7 +410,7 @@ mpt3sas_ctl_event_callback(struct MPT3SAS_ADAPTER *ioc, u8 msix_index, ...@@ -410,7 +410,7 @@ mpt3sas_ctl_event_callback(struct MPT3SAS_ADAPTER *ioc, u8 msix_index,
* @ioc: per adapter object * @ioc: per adapter object
* @iocpp: The ioc pointer is returned in this. * @iocpp: The ioc pointer is returned in this.
* @mpi_version: will be MPI2_VERSION for mpt2ctl ioctl device & * @mpi_version: will be MPI2_VERSION for mpt2ctl ioctl device &
* MPI25_VERSION for mpt3ctl ioctl device. * MPI25_VERSION | MPI26_VERSION for mpt3ctl ioctl device.
* *
* Return (-1) means error, else ioc_number. * Return (-1) means error, else ioc_number.
*/ */
...@@ -419,6 +419,7 @@ _ctl_verify_adapter(int ioc_number, struct MPT3SAS_ADAPTER **iocpp, ...@@ -419,6 +419,7 @@ _ctl_verify_adapter(int ioc_number, struct MPT3SAS_ADAPTER **iocpp,
int mpi_version) int mpi_version)
{ {
struct MPT3SAS_ADAPTER *ioc; struct MPT3SAS_ADAPTER *ioc;
int version = 0;
/* global ioc lock to protect controller on list operations */ /* global ioc lock to protect controller on list operations */
spin_lock(&gioc_lock); spin_lock(&gioc_lock);
list_for_each_entry(ioc, &mpt3sas_ioc_list, list) { list_for_each_entry(ioc, &mpt3sas_ioc_list, list) {
...@@ -427,8 +428,21 @@ _ctl_verify_adapter(int ioc_number, struct MPT3SAS_ADAPTER **iocpp, ...@@ -427,8 +428,21 @@ _ctl_verify_adapter(int ioc_number, struct MPT3SAS_ADAPTER **iocpp,
/* Check whether this ioctl command is from right /* Check whether this ioctl command is from right
* ioctl device or not, if not continue the search. * ioctl device or not, if not continue the search.
*/ */
if (ioc->hba_mpi_version_belonged != mpi_version) version = ioc->hba_mpi_version_belonged;
continue; /* MPI25_VERSION and MPI26_VERSION uses same ioctl
* device.
*/
if (mpi_version == (MPI25_VERSION | MPI26_VERSION)) {
if ((version == MPI25_VERSION) ||
(version == MPI26_VERSION))
goto out;
else
continue;
} else {
if (version != mpi_version)
continue;
}
out:
spin_unlock(&gioc_lock); spin_unlock(&gioc_lock);
*iocpp = ioc; *iocpp = ioc;
return ioc_number; return ioc_number;
...@@ -1053,6 +1067,7 @@ _ctl_getiocinfo(struct MPT3SAS_ADAPTER *ioc, void __user *arg) ...@@ -1053,6 +1067,7 @@ _ctl_getiocinfo(struct MPT3SAS_ADAPTER *ioc, void __user *arg)
strcat(karg.driver_version, MPT2SAS_DRIVER_VERSION); strcat(karg.driver_version, MPT2SAS_DRIVER_VERSION);
break; break;
case MPI25_VERSION: case MPI25_VERSION:
case MPI26_VERSION:
karg.adapter_type = MPT3_IOCTL_INTERFACE_SAS3; karg.adapter_type = MPT3_IOCTL_INTERFACE_SAS3;
strcat(karg.driver_version, MPT3SAS_DRIVER_VERSION); strcat(karg.driver_version, MPT3SAS_DRIVER_VERSION);
break; break;
...@@ -2203,7 +2218,7 @@ _ctl_compat_mpt_command(struct MPT3SAS_ADAPTER *ioc, unsigned cmd, ...@@ -2203,7 +2218,7 @@ _ctl_compat_mpt_command(struct MPT3SAS_ADAPTER *ioc, unsigned cmd,
* @arg - user space data buffer * @arg - user space data buffer
* @compat - handles 32 bit applications in 64bit os * @compat - handles 32 bit applications in 64bit os
* @mpi_version: will be MPI2_VERSION for mpt2ctl ioctl device & * @mpi_version: will be MPI2_VERSION for mpt2ctl ioctl device &
* MPI25_VERSION for mpt3ctl ioctl device. * MPI25_VERSION | MPI26_VERSION for mpt3ctl ioctl device.
*/ */
static long static long
_ctl_ioctl_main(struct file *file, unsigned int cmd, void __user *arg, _ctl_ioctl_main(struct file *file, unsigned int cmd, void __user *arg,
...@@ -2341,10 +2356,12 @@ _ctl_ioctl(struct file *file, unsigned int cmd, unsigned long arg) ...@@ -2341,10 +2356,12 @@ _ctl_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
{ {
long ret; long ret;
/* pass MPI25_VERSION value, to indicate that this ioctl cmd /* pass MPI25_VERSION | MPI26_VERSION value,
* to indicate that this ioctl cmd
* came from mpt3ctl ioctl device. * came from mpt3ctl ioctl device.
*/ */
ret = _ctl_ioctl_main(file, cmd, (void __user *)arg, 0, MPI25_VERSION); ret = _ctl_ioctl_main(file, cmd, (void __user *)arg, 0,
MPI25_VERSION | MPI26_VERSION);
return ret; return ret;
} }
...@@ -2379,7 +2396,8 @@ _ctl_ioctl_compat(struct file *file, unsigned cmd, unsigned long arg) ...@@ -2379,7 +2396,8 @@ _ctl_ioctl_compat(struct file *file, unsigned cmd, unsigned long arg)
{ {
long ret; long ret;
ret = _ctl_ioctl_main(file, cmd, (void __user *)arg, 1, MPI25_VERSION); ret = _ctl_ioctl_main(file, cmd, (void __user *)arg, 1,
MPI25_VERSION | MPI26_VERSION);
return ret; return ret;
} }
......
...@@ -1589,10 +1589,16 @@ scsih_get_resync(struct device *dev) ...@@ -1589,10 +1589,16 @@ scsih_get_resync(struct device *dev)
percent_complete = 0; percent_complete = 0;
out: out:
if (ioc->hba_mpi_version_belonged == MPI2_VERSION)
switch (ioc->hba_mpi_version_belonged) {
case MPI2_VERSION:
raid_set_resync(mpt2sas_raid_template, dev, percent_complete); raid_set_resync(mpt2sas_raid_template, dev, percent_complete);
if (ioc->hba_mpi_version_belonged == MPI25_VERSION) break;
case MPI25_VERSION:
case MPI26_VERSION:
raid_set_resync(mpt3sas_raid_template, dev, percent_complete); raid_set_resync(mpt3sas_raid_template, dev, percent_complete);
break;
}
} }
/** /**
...@@ -1650,10 +1656,15 @@ scsih_get_state(struct device *dev) ...@@ -1650,10 +1656,15 @@ scsih_get_state(struct device *dev)
break; break;
} }
out: out:
if (ioc->hba_mpi_version_belonged == MPI2_VERSION) switch (ioc->hba_mpi_version_belonged) {
case MPI2_VERSION:
raid_set_state(mpt2sas_raid_template, dev, state); raid_set_state(mpt2sas_raid_template, dev, state);
if (ioc->hba_mpi_version_belonged == MPI25_VERSION) break;
case MPI25_VERSION:
case MPI26_VERSION:
raid_set_state(mpt3sas_raid_template, dev, state); raid_set_state(mpt3sas_raid_template, dev, state);
break;
}
} }
/** /**
...@@ -1682,12 +1693,17 @@ _scsih_set_level(struct MPT3SAS_ADAPTER *ioc, ...@@ -1682,12 +1693,17 @@ _scsih_set_level(struct MPT3SAS_ADAPTER *ioc,
break; break;
} }
if (ioc->hba_mpi_version_belonged == MPI2_VERSION) switch (ioc->hba_mpi_version_belonged) {
case MPI2_VERSION:
raid_set_level(mpt2sas_raid_template, raid_set_level(mpt2sas_raid_template,
&sdev->sdev_gendev, level); &sdev->sdev_gendev, level);
if (ioc->hba_mpi_version_belonged == MPI25_VERSION) break;
case MPI25_VERSION:
case MPI26_VERSION:
raid_set_level(mpt3sas_raid_template, raid_set_level(mpt3sas_raid_template,
&sdev->sdev_gendev, level); &sdev->sdev_gendev, level);
break;
}
} }
...@@ -4084,6 +4100,9 @@ _scsih_scsi_ioc_info(struct MPT3SAS_ADAPTER *ioc, struct scsi_cmnd *scmd, ...@@ -4084,6 +4100,9 @@ _scsih_scsi_ioc_info(struct MPT3SAS_ADAPTER *ioc, struct scsi_cmnd *scmd,
case MPI2_IOCSTATUS_EEDP_APP_TAG_ERROR: case MPI2_IOCSTATUS_EEDP_APP_TAG_ERROR:
desc_ioc_state = "eedp app tag error"; desc_ioc_state = "eedp app tag error";
break; break;
case MPI2_IOCSTATUS_INSUFFICIENT_POWER:
desc_ioc_state = "insufficient power";
break;
default: default:
desc_ioc_state = "unknown"; desc_ioc_state = "unknown";
break; break;
...@@ -4609,6 +4628,7 @@ _scsih_io_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index, u32 reply) ...@@ -4609,6 +4628,7 @@ _scsih_io_done(struct MPT3SAS_ADAPTER *ioc, u16 smid, u8 msix_index, u32 reply)
case MPI2_IOCSTATUS_INVALID_STATE: case MPI2_IOCSTATUS_INVALID_STATE:
case MPI2_IOCSTATUS_SCSI_IO_DATA_ERROR: case MPI2_IOCSTATUS_SCSI_IO_DATA_ERROR:
case MPI2_IOCSTATUS_SCSI_TASK_MGMT_FAILED: case MPI2_IOCSTATUS_SCSI_TASK_MGMT_FAILED:
case MPI2_IOCSTATUS_INSUFFICIENT_POWER:
default: default:
scmd->result = DID_SOFT_ERROR << 16; scmd->result = DID_SOFT_ERROR << 16;
break; break;
...@@ -8391,7 +8411,8 @@ static struct raid_function_template mpt3sas_raid_functions = { ...@@ -8391,7 +8411,8 @@ static struct raid_function_template mpt3sas_raid_functions = {
* @pdev: PCI device struct * @pdev: PCI device struct
* *
* return MPI2_VERSION for SAS 2.0 HBA devices, * return MPI2_VERSION for SAS 2.0 HBA devices,
* MPI25_VERSION for SAS 3.0 HBA devices. * MPI25_VERSION for SAS 3.0 HBA devices, and
* MPI26 VERSION for Cutlass & Invader SAS 3.0 HBA devices
*/ */
u16 u16
_scsih_determine_hba_mpi_version(struct pci_dev *pdev) _scsih_determine_hba_mpi_version(struct pci_dev *pdev)
...@@ -8423,6 +8444,17 @@ _scsih_determine_hba_mpi_version(struct pci_dev *pdev) ...@@ -8423,6 +8444,17 @@ _scsih_determine_hba_mpi_version(struct pci_dev *pdev)
case MPI25_MFGPAGE_DEVID_SAS3108_5: case MPI25_MFGPAGE_DEVID_SAS3108_5:
case MPI25_MFGPAGE_DEVID_SAS3108_6: case MPI25_MFGPAGE_DEVID_SAS3108_6:
return MPI25_VERSION; return MPI25_VERSION;
case MPI26_MFGPAGE_DEVID_SAS3216:
case MPI26_MFGPAGE_DEVID_SAS3224:
case MPI26_MFGPAGE_DEVID_SAS3316_1:
case MPI26_MFGPAGE_DEVID_SAS3316_2:
case MPI26_MFGPAGE_DEVID_SAS3316_3:
case MPI26_MFGPAGE_DEVID_SAS3316_4:
case MPI26_MFGPAGE_DEVID_SAS3324_1:
case MPI26_MFGPAGE_DEVID_SAS3324_2:
case MPI26_MFGPAGE_DEVID_SAS3324_3:
case MPI26_MFGPAGE_DEVID_SAS3324_4:
return MPI26_VERSION;
} }
return 0; return 0;
} }
...@@ -8456,7 +8488,8 @@ _scsih_probe(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -8456,7 +8488,8 @@ _scsih_probe(struct pci_dev *pdev, const struct pci_device_id *id)
/* Enumerate only SAS 3.0 HBA's if hbas_to_enumerate is two, /* Enumerate only SAS 3.0 HBA's if hbas_to_enumerate is two,
* for other generation HBA's return with -ENODEV * for other generation HBA's return with -ENODEV
*/ */
if ((hbas_to_enumerate == 2) && (hba_mpi_version != MPI25_VERSION)) if ((hbas_to_enumerate == 2) && (!(hba_mpi_version == MPI25_VERSION
|| hba_mpi_version == MPI26_VERSION)))
return -ENODEV; return -ENODEV;
switch (hba_mpi_version) { switch (hba_mpi_version) {
...@@ -8478,6 +8511,7 @@ _scsih_probe(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -8478,6 +8511,7 @@ _scsih_probe(struct pci_dev *pdev, const struct pci_device_id *id)
ioc->mfg_pg10_hide_flag = MFG_PAGE10_EXPOSE_ALL_DISKS; ioc->mfg_pg10_hide_flag = MFG_PAGE10_EXPOSE_ALL_DISKS;
break; break;
case MPI25_VERSION: case MPI25_VERSION:
case MPI26_VERSION:
/* Use mpt3sas driver host template for SAS 3.0 HBA's */ /* Use mpt3sas driver host template for SAS 3.0 HBA's */
shost = scsi_host_alloc(&mpt3sas_driver_template, shost = scsi_host_alloc(&mpt3sas_driver_template,
sizeof(struct MPT3SAS_ADAPTER)); sizeof(struct MPT3SAS_ADAPTER));
...@@ -8488,7 +8522,9 @@ _scsih_probe(struct pci_dev *pdev, const struct pci_device_id *id) ...@@ -8488,7 +8522,9 @@ _scsih_probe(struct pci_dev *pdev, const struct pci_device_id *id)
ioc->hba_mpi_version_belonged = hba_mpi_version; ioc->hba_mpi_version_belonged = hba_mpi_version;
ioc->id = mpt3_ids++; ioc->id = mpt3_ids++;
sprintf(ioc->driver_name, "%s", MPT3SAS_DRIVER_NAME); sprintf(ioc->driver_name, "%s", MPT3SAS_DRIVER_NAME);
if (pdev->revision >= SAS3_PCI_DEVICE_C0_REVISION) if ((ioc->hba_mpi_version_belonged == MPI25_VERSION &&
pdev->revision >= SAS3_PCI_DEVICE_C0_REVISION) ||
(ioc->hba_mpi_version_belonged == MPI26_VERSION))
ioc->msix96_vector = 1; ioc->msix96_vector = 1;
break; break;
default: default:
...@@ -8866,6 +8902,28 @@ static const struct pci_device_id mpt3sas_pci_table[] = { ...@@ -8866,6 +8902,28 @@ static const struct pci_device_id mpt3sas_pci_table[] = {
PCI_ANY_ID, PCI_ANY_ID }, PCI_ANY_ID, PCI_ANY_ID },
{ MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3108_6, { MPI2_MFGPAGE_VENDORID_LSI, MPI25_MFGPAGE_DEVID_SAS3108_6,
PCI_ANY_ID, PCI_ANY_ID }, PCI_ANY_ID, PCI_ANY_ID },
/* Cutlass ~ 3216 and 3224 */
{ MPI2_MFGPAGE_VENDORID_LSI, MPI26_MFGPAGE_DEVID_SAS3216,
PCI_ANY_ID, PCI_ANY_ID },
{ MPI2_MFGPAGE_VENDORID_LSI, MPI26_MFGPAGE_DEVID_SAS3224,
PCI_ANY_ID, PCI_ANY_ID },
/* Intruder ~ 3316 and 3324 */
{ MPI2_MFGPAGE_VENDORID_LSI, MPI26_MFGPAGE_DEVID_SAS3316_1,
PCI_ANY_ID, PCI_ANY_ID },
{ MPI2_MFGPAGE_VENDORID_LSI, MPI26_MFGPAGE_DEVID_SAS3316_2,
PCI_ANY_ID, PCI_ANY_ID },
{ MPI2_MFGPAGE_VENDORID_LSI, MPI26_MFGPAGE_DEVID_SAS3316_3,
PCI_ANY_ID, PCI_ANY_ID },
{ MPI2_MFGPAGE_VENDORID_LSI, MPI26_MFGPAGE_DEVID_SAS3316_4,
PCI_ANY_ID, PCI_ANY_ID },
{ MPI2_MFGPAGE_VENDORID_LSI, MPI26_MFGPAGE_DEVID_SAS3324_1,
PCI_ANY_ID, PCI_ANY_ID },
{ MPI2_MFGPAGE_VENDORID_LSI, MPI26_MFGPAGE_DEVID_SAS3324_2,
PCI_ANY_ID, PCI_ANY_ID },
{ MPI2_MFGPAGE_VENDORID_LSI, MPI26_MFGPAGE_DEVID_SAS3324_3,
PCI_ANY_ID, PCI_ANY_ID },
{ MPI2_MFGPAGE_VENDORID_LSI, MPI26_MFGPAGE_DEVID_SAS3324_4,
PCI_ANY_ID, PCI_ANY_ID },
{0} /* Terminating entry */ {0} /* Terminating entry */
}; };
MODULE_DEVICE_TABLE(pci, mpt3sas_pci_table); MODULE_DEVICE_TABLE(pci, mpt3sas_pci_table);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment