diff options
Diffstat (limited to 'drivers/scsi/mpt2sas/mpi')
| -rw-r--r-- | drivers/scsi/mpt2sas/mpi/mpi2.h | 43 | ||||
| -rw-r--r-- | drivers/scsi/mpt2sas/mpi/mpi2_cnfg.h | 347 | ||||
| -rw-r--r-- | drivers/scsi/mpt2sas/mpi/mpi2_history.txt | 381 | ||||
| -rw-r--r-- | drivers/scsi/mpt2sas/mpi/mpi2_init.h | 24 | ||||
| -rw-r--r-- | drivers/scsi/mpt2sas/mpi/mpi2_ioc.h | 178 | ||||
| -rw-r--r-- | drivers/scsi/mpt2sas/mpi/mpi2_raid.h | 79 | ||||
| -rw-r--r-- | drivers/scsi/mpt2sas/mpi/mpi2_sas.h | 14 | ||||
| -rw-r--r-- | drivers/scsi/mpt2sas/mpi/mpi2_tool.h | 70 | ||||
| -rw-r--r-- | drivers/scsi/mpt2sas/mpi/mpi2_type.h | 2 | 
9 files changed, 643 insertions, 495 deletions
diff --git a/drivers/scsi/mpt2sas/mpi/mpi2.h b/drivers/scsi/mpt2sas/mpi/mpi2.h index 4b1c2f0350f..7b14a015c90 100644 --- a/drivers/scsi/mpt2sas/mpi/mpi2.h +++ b/drivers/scsi/mpt2sas/mpi/mpi2.h @@ -1,5 +1,5 @@  /* - *  Copyright (c) 2000-2010 LSI Corporation. + *  Copyright (c) 2000-2013 LSI Corporation.   *   *   *           Name:  mpi2.h @@ -8,7 +8,7 @@   *                  scatter/gather formats.   *  Creation Date:  June 21, 2006   * - *  mpi2.h Version:  02.00.15 + *  mpi2.h Version:  02.00.28   *   *  Version History   *  --------------- @@ -61,6 +61,23 @@   *                      Added define for MPI2_FUNCTION_PWR_MGMT_CONTROL.   *                      Added defines for product-specific range of message   *                      function codes, 0xF0 to 0xFF. + *  05-12-10  02.00.16  Bumped MPI2_HEADER_VERSION_UNIT. + *                      Added alternative defines for the SGE Direction bit. + *  08-11-10  02.00.17  Bumped MPI2_HEADER_VERSION_UNIT. + *  11-10-10  02.00.18  Bumped MPI2_HEADER_VERSION_UNIT. + *                      Added MPI2_IEEE_SGE_FLAGS_SYSTEMPLBCPI_ADDR define. + *  02-23-11  02.00.19  Bumped MPI2_HEADER_VERSION_UNIT. + *                      Added MPI2_FUNCTION_SEND_HOST_MESSAGE. + *  03-09-11  02.00.20  Bumped MPI2_HEADER_VERSION_UNIT. + *  05-25-11  02.00.21  Bumped MPI2_HEADER_VERSION_UNIT. + *  08-24-11  02.00.22  Bumped MPI2_HEADER_VERSION_UNIT. + *  11-18-11  02.00.23  Bumped MPI2_HEADER_VERSION_UNIT. + *  02-06-12  02.00.24  Bumped MPI2_HEADER_VERSION_UNIT. + *  03-29-12  02.00.25  Bumped MPI2_HEADER_VERSION_UNIT. + *                      Added Hard Reset delay timings. + *  07-10-12  02.00.26  Bumped MPI2_HEADER_VERSION_UNIT. + *  07-26-12  02.00.27  Bumped MPI2_HEADER_VERSION_UNIT. + *  11-27-12  02.00.28  Bumped MPI2_HEADER_VERSION_UNIT.   *  --------------------------------------------------------------------------   */ @@ -86,7 +103,7 @@  #define MPI2_VERSION_02_00                  (0x0200)  /* versioning for this MPI header set */ -#define MPI2_HEADER_VERSION_UNIT            (0x0F) +#define MPI2_HEADER_VERSION_UNIT            (0x1C)  #define MPI2_HEADER_VERSION_DEV             (0x00)  #define MPI2_HEADER_VERSION_UNIT_MASK       (0xFF00)  #define MPI2_HEADER_VERSION_UNIT_SHIFT      (8) @@ -264,6 +281,11 @@ typedef volatile struct _MPI2_SYSTEM_INTERFACE_REGS  #define MPI2_REQUEST_DESCRIPTOR_POST_HIGH_OFFSET    (0x000000C4) +/* Hard Reset delay timings */ +#define MPI2_HARD_RESET_PCIE_FIRST_READ_DELAY_MICRO_SEC     (50000) +#define MPI2_HARD_RESET_PCIE_RESET_READ_WINDOW_MICRO_SEC    (255000) +#define MPI2_HARD_RESET_PCIE_SECOND_READ_DELAY_MICRO_SEC    (256000) +  /*****************************************************************************  *  *        Message Descriptors @@ -470,7 +492,7 @@ typedef union _MPI2_REPLY_DESCRIPTORS_UNION      MPI2_RAID_ACCELERATOR_SUCCESS_REPLY_DESCRIPTOR  RAIDAcceleratorSuccess;      U64                                             Words;  } MPI2_REPLY_DESCRIPTORS_UNION, MPI2_POINTER PTR_MPI2_REPLY_DESCRIPTORS_UNION, -  Mpi2ReplyDescriptorsUnion_t, MPI2_POINTER pMpi2ReplyDescriptorsUnion_t; +Mpi2ReplyDescriptorsUnion_t, MPI2_POINTER pMpi2ReplyDescriptorsUnion_t; @@ -510,6 +532,8 @@ typedef union _MPI2_REPLY_DESCRIPTORS_UNION  #define MPI2_FUNCTION_HOST_BASED_DISCOVERY_ACTION   (0x2F)  /* Power Management Control */  #define MPI2_FUNCTION_PWR_MGMT_CONTROL              (0x30) +/* Send Host Message */ +#define MPI2_FUNCTION_SEND_HOST_MESSAGE             (0x31)  /* beginning of product-specific range */  #define MPI2_FUNCTION_MIN_PRODUCT_SPECIFIC          (0xF0)  /* end of product-specific range */ @@ -929,6 +953,9 @@ typedef struct _MPI2_MPI_SGE_UNION  #define MPI2_SGE_FLAGS_IOC_TO_HOST              (0x00)  #define MPI2_SGE_FLAGS_HOST_TO_IOC              (0x04) +#define MPI2_SGE_FLAGS_DEST                     (MPI2_SGE_FLAGS_IOC_TO_HOST) +#define MPI2_SGE_FLAGS_SOURCE                   (MPI2_SGE_FLAGS_HOST_TO_IOC) +  /* Address Size */  #define MPI2_SGE_FLAGS_32_BIT_ADDRESSING        (0x00) @@ -1054,10 +1081,16 @@ typedef struct _MPI2_IEEE_SGE_UNION  #define MPI2_IEEE_SGE_FLAGS_ADDR_MASK           (0x03)  #define MPI2_IEEE_SGE_FLAGS_SYSTEM_ADDR         (0x00) +						/* IEEE Simple Element only */  #define MPI2_IEEE_SGE_FLAGS_IOCDDR_ADDR         (0x01) +						/* IEEE Simple Element only */  #define MPI2_IEEE_SGE_FLAGS_IOCPLB_ADDR         (0x02)  #define MPI2_IEEE_SGE_FLAGS_IOCPLBNTA_ADDR      (0x03) - +						/* IEEE Simple Element only */ +#define MPI2_IEEE_SGE_FLAGS_SYSTEMPLBPCI_ADDR   (0x03) +						/* IEEE Chain Element only */ +#define MPI2_IEEE_SGE_FLAGS_SYSTEMPLBCPI_ADDR   \ +	(MPI2_IEEE_SGE_FLAGS_SYSTEMPLBPCI_ADDR) /* typo in name */  /****************************************************************************  *  IEEE SGE operation Macros diff --git a/drivers/scsi/mpt2sas/mpi/mpi2_cnfg.h b/drivers/scsi/mpt2sas/mpi/mpi2_cnfg.h index e3728d736d8..88cb7f828bb 100644 --- a/drivers/scsi/mpt2sas/mpi/mpi2_cnfg.h +++ b/drivers/scsi/mpt2sas/mpi/mpi2_cnfg.h @@ -1,12 +1,12 @@  /* - *  Copyright (c) 2000-2010 LSI Corporation. + *  Copyright (c) 2000-2013 LSI Corporation.   *   *   *           Name:  mpi2_cnfg.h   *          Title:  MPI Configuration messages and pages   *  Creation Date:  November 10, 2006   * - *    mpi2_cnfg.h Version:  02.00.14 + *    mpi2_cnfg.h Version:  02.00.23   *   *  Version History   *  --------------- @@ -121,6 +121,36 @@   *                      Added MPI2_CONFIG_PAGE_SASIOUNIT_6 and related defines.   *                      Added MPI2_CONFIG_PAGE_SASIOUNIT_7 and related defines.   *                      Added MPI2_CONFIG_PAGE_SASIOUNIT_8 and related defines. + *  05-12-10  02.00.15  Added MPI2_RAIDVOL0_STATUS_FLAG_VOL_NOT_CONSISTENT + *                      define. + *                      Added MPI2_PHYSDISK0_INCOMPATIBLE_MEDIA_TYPE define. + *                      Added MPI2_SAS_NEG_LINK_RATE_UNSUPPORTED_PHY define. + *  08-11-10  02.00.16  Removed IO Unit Page 1 device path (multi-pathing) + *                      defines. + *  11-10-10  02.00.17  Added ReceptacleID field (replacing Reserved1) to + *                      MPI2_MANPAGE7_CONNECTOR_INFO and reworked defines for + *                      the Pinout field. + *                      Added BoardTemperature and BoardTemperatureUnits fields + *                      to MPI2_CONFIG_PAGE_IO_UNIT_7. + *                      Added MPI2_CONFIG_EXTPAGETYPE_EXT_MANUFACTURING define + *                      and MPI2_CONFIG_PAGE_EXT_MAN_PS structure. + *  02-23-11  02.00.18  Added ProxyVF_ID field to MPI2_CONFIG_REQUEST. + *                      Added IO Unit Page 8, IO Unit Page 9, + *                      and IO Unit Page 10. + *                      Added SASNotifyPrimitiveMasks field to + *                      MPI2_CONFIG_PAGE_IOC_7. + *  03-09-11  02.00.19  Fixed IO Unit Page 10 (to match the spec). + *  05-25-11  02.00.20  Cleaned up a few comments. + *  08-24-11  02.00.21  Marked the IO Unit Page 7 PowerManagementCapabilities + *                      for PCIe link as obsolete. + *                      Added SpinupFlags field containing a Disable Spin-up + *                      bit to the MPI2_SAS_IOUNIT4_SPINUP_GROUP fields of + *                      SAS IO Unit Page 4. + *  11-18-11  02.00.22  Added define MPI2_IOCPAGE6_CAP_FLAGS_4K_SECTORS_SUPPORT. + *                      Added UEFIVersion field to BIOS Page 1 and defined new + *                      BiosOptions bits. + *  11-27-12  02.00.23  Added MPI2_MANPAGE7_FLAG_EVENTREPLAY_SLOT_ORDER. + *			 Added MPI2_BIOSPAGE1_OPTIONS_MASK_OEM_ID.   *  --------------------------------------------------------------------------   */ @@ -204,6 +234,7 @@ typedef union _MPI2_CONFIG_EXT_PAGE_HEADER_UNION  #define MPI2_CONFIG_EXTPAGETYPE_DRIVER_MAPPING      (0x17)  #define MPI2_CONFIG_EXTPAGETYPE_SAS_PORT            (0x18)  #define MPI2_CONFIG_EXTPAGETYPE_ETHERNET            (0x19) +#define MPI2_CONFIG_EXTPAGETYPE_EXT_MANUFACTURING   (0x1A)  /***************************************************************************** @@ -315,7 +346,9 @@ typedef struct _MPI2_CONFIG_REQUEST      U8                      VP_ID;                      /* 0x08 */      U8                      VF_ID;                      /* 0x09 */      U16                     Reserved1;                  /* 0x0A */ -    U32                     Reserved2;                  /* 0x0C */ +	U8                      Reserved2;                  /* 0x0C */ +	U8                      ProxyVF_ID;                 /* 0x0D */ +	U16                     Reserved4;                  /* 0x0E */      U32                     Reserved3;                  /* 0x10 */      MPI2_CONFIG_PAGE_HEADER Header;                     /* 0x14 */      U32                     PageAddress;                /* 0x18 */ @@ -333,7 +366,7 @@ typedef struct _MPI2_CONFIG_REQUEST  #define MPI2_CONFIG_ACTION_PAGE_READ_NVRAM          (0x06)  #define MPI2_CONFIG_ACTION_PAGE_GET_CHANGEABLE      (0x07) -/* values for SGLFlags field are in the SGL section of mpi2.h */ +/* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */  /* Config Reply Message */ @@ -379,6 +412,8 @@ typedef struct _MPI2_CONFIG_REPLY  #define MPI2_MFGPAGE_DEVID_SAS2116_1                (0x0064)  #define MPI2_MFGPAGE_DEVID_SAS2116_2                (0x0065) +#define MPI2_MFGPAGE_DEVID_SSS6200                  (0x007E) +  #define MPI2_MFGPAGE_DEVID_SAS2208_1                (0x0080)  #define MPI2_MFGPAGE_DEVID_SAS2208_2                (0x0081)  #define MPI2_MFGPAGE_DEVID_SAS2208_3                (0x0082) @@ -390,6 +425,8 @@ typedef struct _MPI2_CONFIG_REPLY  #define MPI2_MFGPAGE_DEVID_SAS2308_3                (0x006E) + +  /* Manufacturing Page 0 */  typedef struct _MPI2_CONFIG_PAGE_MAN_0 @@ -602,23 +639,31 @@ typedef struct _MPI2_MANPAGE7_CONNECTOR_INFO      U32                         Pinout;                 /* 0x00 */      U8                          Connector[16];          /* 0x04 */      U8                          Location;               /* 0x14 */ -    U8                          Reserved1;              /* 0x15 */ +	U8                          ReceptacleID;           /* 0x15 */      U16                         Slot;                   /* 0x16 */      U32                         Reserved2;              /* 0x18 */  } MPI2_MANPAGE7_CONNECTOR_INFO, MPI2_POINTER PTR_MPI2_MANPAGE7_CONNECTOR_INFO,    Mpi2ManPage7ConnectorInfo_t, MPI2_POINTER pMpi2ManPage7ConnectorInfo_t;  /* defines for the Pinout field */ -#define MPI2_MANPAGE7_PINOUT_SFF_8484_L4                (0x00080000) -#define MPI2_MANPAGE7_PINOUT_SFF_8484_L3                (0x00040000) -#define MPI2_MANPAGE7_PINOUT_SFF_8484_L2                (0x00020000) -#define MPI2_MANPAGE7_PINOUT_SFF_8484_L1                (0x00010000) -#define MPI2_MANPAGE7_PINOUT_SFF_8470_L4                (0x00000800) -#define MPI2_MANPAGE7_PINOUT_SFF_8470_L3                (0x00000400) -#define MPI2_MANPAGE7_PINOUT_SFF_8470_L2                (0x00000200) -#define MPI2_MANPAGE7_PINOUT_SFF_8470_L1                (0x00000100) -#define MPI2_MANPAGE7_PINOUT_SFF_8482                   (0x00000002) -#define MPI2_MANPAGE7_PINOUT_CONNECTION_UNKNOWN         (0x00000001) +#define MPI2_MANPAGE7_PINOUT_LANE_MASK                  (0x0000FF00) +#define MPI2_MANPAGE7_PINOUT_LANE_SHIFT                 (8) + +#define MPI2_MANPAGE7_PINOUT_TYPE_MASK                  (0x000000FF) +#define MPI2_MANPAGE7_PINOUT_TYPE_UNKNOWN               (0x00) +#define MPI2_MANPAGE7_PINOUT_SATA_SINGLE                (0x01) +#define MPI2_MANPAGE7_PINOUT_SFF_8482                   (0x02) +#define MPI2_MANPAGE7_PINOUT_SFF_8486                   (0x03) +#define MPI2_MANPAGE7_PINOUT_SFF_8484                   (0x04) +#define MPI2_MANPAGE7_PINOUT_SFF_8087                   (0x05) +#define MPI2_MANPAGE7_PINOUT_SFF_8643_4I                (0x06) +#define MPI2_MANPAGE7_PINOUT_SFF_8643_8I                (0x07) +#define MPI2_MANPAGE7_PINOUT_SFF_8470                   (0x08) +#define MPI2_MANPAGE7_PINOUT_SFF_8088                   (0x09) +#define MPI2_MANPAGE7_PINOUT_SFF_8644_4X                (0x0A) +#define MPI2_MANPAGE7_PINOUT_SFF_8644_8X                (0x0B) +#define MPI2_MANPAGE7_PINOUT_SFF_8644_16X               (0x0C) +#define MPI2_MANPAGE7_PINOUT_SFF_8436                   (0x0D)  /* defines for the Location field */  #define MPI2_MANPAGE7_LOCATION_UNKNOWN                  (0x01) @@ -652,9 +697,10 @@ typedef struct _MPI2_CONFIG_PAGE_MAN_7    MPI2_POINTER PTR_MPI2_CONFIG_PAGE_MAN_7,    Mpi2ManufacturingPage7_t, MPI2_POINTER pMpi2ManufacturingPage7_t; -#define MPI2_MANUFACTURING7_PAGEVERSION                 (0x00) +#define MPI2_MANUFACTURING7_PAGEVERSION                 (0x01)  /* defines for the Flags field */ +#define MPI2_MANPAGE7_FLAG_EVENTREPLAY_SLOT_ORDER       (0x00000002)  #define MPI2_MANPAGE7_FLAG_USE_SLOT_INFO                (0x00000001) @@ -729,6 +775,7 @@ typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_1  /* IO Unit Page 1 Flags defines */  #define MPI2_IOUNITPAGE1_ENABLE_HOST_BASED_DISCOVERY    (0x00000800)  #define MPI2_IOUNITPAGE1_MASK_SATA_WRITE_CACHE          (0x00000600) +#define MPI2_IOUNITPAGE1_SATA_WRITE_CACHE_SHIFT         (9)  #define MPI2_IOUNITPAGE1_ENABLE_SATA_WRITE_CACHE        (0x00000000)  #define MPI2_IOUNITPAGE1_DISABLE_SATA_WRITE_CACHE       (0x00000200)  #define MPI2_IOUNITPAGE1_UNCHANGED_SATA_WRITE_CACHE     (0x00000400) @@ -736,8 +783,6 @@ typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_1  #define MPI2_IOUNITPAGE1_DISABLE_IR                     (0x00000040)  #define MPI2_IOUNITPAGE1_DISABLE_TASK_SET_FULL_HANDLING (0x00000020)  #define MPI2_IOUNITPAGE1_IR_USE_STATIC_VOLUME_ID        (0x00000004) -#define MPI2_IOUNITPAGE1_MULTI_PATHING                  (0x00000002) -#define MPI2_IOUNITPAGE1_SINGLE_PATHING                 (0x00000000)  /* IO Unit Page 3 */ @@ -840,11 +885,13 @@ typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_7 {      U16                     IOCTemperature;                         /* 0x10 */      U8                      IOCTemperatureUnits;                    /* 0x12 */      U8                      IOCSpeed;                               /* 0x13 */ -    U32                     Reserved3;                              /* 0x14 */ +	U16                     BoardTemperature;              /* 0x14 */ +	U8                      BoardTemperatureUnits;         /* 0x16 */ +	U8                      Reserved3;                     /* 0x17 */  } MPI2_CONFIG_PAGE_IO_UNIT_7, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_7,    Mpi2IOUnitPage7_t, MPI2_POINTER pMpi2IOUnitPage7_t; -#define MPI2_IOUNITPAGE7_PAGEVERSION                    (0x01) +#define MPI2_IOUNITPAGE7_PAGEVERSION                    (0x02)  /* defines for IO Unit Page 7 PCIeWidth field */  #define MPI2_IOUNITPAGE7_PCIE_WIDTH_X1              (0x01) @@ -869,9 +916,8 @@ typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_7 {  #define MPI2_IOUNITPAGE7_PMCAP_12_5_PCT_IOCSPEED    (0x00000400)  #define MPI2_IOUNITPAGE7_PMCAP_25_0_PCT_IOCSPEED    (0x00000200)  #define MPI2_IOUNITPAGE7_PMCAP_50_0_PCT_IOCSPEED    (0x00000100) -#define MPI2_IOUNITPAGE7_PMCAP_PCIE_WIDTH_CHANGE    (0x00000008) -#define MPI2_IOUNITPAGE7_PMCAP_PCIE_SPEED_CHANGE    (0x00000004) - +#define MPI2_IOUNITPAGE7_PMCAP_PCIE_WIDTH_CHANGE    (0x00000008) /* obsolete */ +#define MPI2_IOUNITPAGE7_PMCAP_PCIE_SPEED_CHANGE    (0x00000004) /* obsolete */  /* defines for IO Unit Page 7 IOCTemperatureUnits field */  #define MPI2_IOUNITPAGE7_IOC_TEMP_NOT_PRESENT       (0x00) @@ -884,6 +930,125 @@ typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_7 {  #define MPI2_IOUNITPAGE7_IOC_SPEED_QUARTER          (0x04)  #define MPI2_IOUNITPAGE7_IOC_SPEED_EIGHTH           (0x08) +/* defines for IO Unit Page 7 BoardTemperatureUnits field */ +#define MPI2_IOUNITPAGE7_BOARD_TEMP_NOT_PRESENT     (0x00) +#define MPI2_IOUNITPAGE7_BOARD_TEMP_FAHRENHEIT      (0x01) +#define MPI2_IOUNITPAGE7_BOARD_TEMP_CELSIUS         (0x02) + +/* IO Unit Page 8 */ + +#define MPI2_IOUNIT8_NUM_THRESHOLDS     (4) + +typedef struct _MPI2_IOUNIT8_SENSOR { +	U16                     Flags;                /* 0x00 */ +	U16                     Reserved1;            /* 0x02 */ +	U16 +		Threshold[MPI2_IOUNIT8_NUM_THRESHOLDS]; /* 0x04 */ +	U32                     Reserved2;            /* 0x0C */ +	U32                     Reserved3;            /* 0x10 */ +	U32                     Reserved4;            /* 0x14 */ +} MPI2_IOUNIT8_SENSOR, MPI2_POINTER PTR_MPI2_IOUNIT8_SENSOR, +Mpi2IOUnit8Sensor_t, MPI2_POINTER pMpi2IOUnit8Sensor_t; + +/* defines for IO Unit Page 8 Sensor Flags field */ +#define MPI2_IOUNIT8_SENSOR_FLAGS_T3_ENABLE         (0x0008) +#define MPI2_IOUNIT8_SENSOR_FLAGS_T2_ENABLE         (0x0004) +#define MPI2_IOUNIT8_SENSOR_FLAGS_T1_ENABLE         (0x0002) +#define MPI2_IOUNIT8_SENSOR_FLAGS_T0_ENABLE         (0x0001) + +/* + * Host code (drivers, BIOS, utilities, etc.) should leave this define set to + * one and check the value returned for NumSensors at runtime. + */ +#ifndef MPI2_IOUNITPAGE8_SENSOR_ENTRIES +#define MPI2_IOUNITPAGE8_SENSOR_ENTRIES     (1) +#endif + +typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_8 { +	MPI2_CONFIG_PAGE_HEADER Header;               /* 0x00 */ +	U32                     Reserved1;            /* 0x04 */ +	U32                     Reserved2;            /* 0x08 */ +	U8                      NumSensors;           /* 0x0C */ +	U8                      PollingInterval;      /* 0x0D */ +	U16                     Reserved3;            /* 0x0E */ +	MPI2_IOUNIT8_SENSOR +			Sensor[MPI2_IOUNITPAGE8_SENSOR_ENTRIES];/* 0x10 */ +} MPI2_CONFIG_PAGE_IO_UNIT_8, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_8, +Mpi2IOUnitPage8_t, MPI2_POINTER pMpi2IOUnitPage8_t; + +#define MPI2_IOUNITPAGE8_PAGEVERSION                    (0x00) + + +/* IO Unit Page 9 */ + +typedef struct _MPI2_IOUNIT9_SENSOR { +	U16                     CurrentTemperature;     /* 0x00 */ +	U16                     Reserved1;              /* 0x02 */ +	U8                      Flags;                  /* 0x04 */ +	U8                      Reserved2;              /* 0x05 */ +	U16                     Reserved3;              /* 0x06 */ +	U32                     Reserved4;              /* 0x08 */ +	U32                     Reserved5;              /* 0x0C */ +} MPI2_IOUNIT9_SENSOR, MPI2_POINTER PTR_MPI2_IOUNIT9_SENSOR, +Mpi2IOUnit9Sensor_t, MPI2_POINTER pMpi2IOUnit9Sensor_t; + +/* defines for IO Unit Page 9 Sensor Flags field */ +#define MPI2_IOUNIT9_SENSOR_FLAGS_TEMP_VALID        (0x01) + +/* + * Host code (drivers, BIOS, utilities, etc.) should leave this define set to + * one and check the value returned for NumSensors at runtime. + */ +#ifndef MPI2_IOUNITPAGE9_SENSOR_ENTRIES +#define MPI2_IOUNITPAGE9_SENSOR_ENTRIES     (1) +#endif + +typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_9 { +	MPI2_CONFIG_PAGE_HEADER Header;                /* 0x00 */ +	U32                     Reserved1;             /* 0x04 */ +	U32                     Reserved2;             /* 0x08 */ +	U8                      NumSensors;            /* 0x0C */ +	U8                      Reserved4;             /* 0x0D */ +	U16                     Reserved3;             /* 0x0E */ +	MPI2_IOUNIT9_SENSOR +			Sensor[MPI2_IOUNITPAGE9_SENSOR_ENTRIES];/* 0x10 */ +} MPI2_CONFIG_PAGE_IO_UNIT_9, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_9, +Mpi2IOUnitPage9_t, MPI2_POINTER pMpi2IOUnitPage9_t; + +#define MPI2_IOUNITPAGE9_PAGEVERSION                    (0x00) + + +/* IO Unit Page 10 */ + +typedef struct _MPI2_IOUNIT10_FUNCTION { +	U8                      CreditPercent;      /* 0x00 */ +	U8                      Reserved1;          /* 0x01 */ +	U16                     Reserved2;          /* 0x02 */ +} MPI2_IOUNIT10_FUNCTION, MPI2_POINTER PTR_MPI2_IOUNIT10_FUNCTION, +Mpi2IOUnit10Function_t, MPI2_POINTER pMpi2IOUnit10Function_t; + +/* + * Host code (drivers, BIOS, utilities, etc.) should leave this define set to + * one and check the value returned for NumFunctions at runtime. + */ +#ifndef MPI2_IOUNITPAGE10_FUNCTION_ENTRIES +#define MPI2_IOUNITPAGE10_FUNCTION_ENTRIES      (1) +#endif + +typedef struct _MPI2_CONFIG_PAGE_IO_UNIT_10 { +	MPI2_CONFIG_PAGE_HEADER Header;                    /* 0x00 */ +	U8                      NumFunctions;             /* 0x04 */ +	U8                      Reserved1;              /* 0x05 */ +	U16                     Reserved2;              /* 0x06 */ +	U32                     Reserved3;              /* 0x08 */ +	U32                     Reserved4;		/* 0x0C */ +	MPI2_IOUNIT10_FUNCTION +		Function[MPI2_IOUNITPAGE10_FUNCTION_ENTRIES];/* 0x10 */ +} MPI2_CONFIG_PAGE_IO_UNIT_10, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IO_UNIT_10, +Mpi2IOUnitPage10_t, MPI2_POINTER pMpi2IOUnitPage10_t; + +#define MPI2_IOUNITPAGE10_PAGEVERSION                   (0x01) +  /**************************************************************************** @@ -971,9 +1136,10 @@ typedef struct _MPI2_CONFIG_PAGE_IOC_6  } MPI2_CONFIG_PAGE_IOC_6, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IOC_6,    Mpi2IOCPage6_t, MPI2_POINTER pMpi2IOCPage6_t; -#define MPI2_IOCPAGE6_PAGEVERSION                       (0x04) +#define MPI2_IOCPAGE6_PAGEVERSION                       (0x05)  /* defines for IOC Page 6 CapabilitiesFlags */ +#define MPI2_IOCPAGE6_CAP_FLAGS_4K_SECTORS_SUPPORT      (0x00000020)  #define MPI2_IOCPAGE6_CAP_FLAGS_RAID10_SUPPORT          (0x00000010)  #define MPI2_IOCPAGE6_CAP_FLAGS_RAID1_SUPPORT           (0x00000008)  #define MPI2_IOCPAGE6_CAP_FLAGS_RAID1E_SUPPORT          (0x00000004) @@ -991,12 +1157,12 @@ typedef struct _MPI2_CONFIG_PAGE_IOC_7      U32                     Reserved1;                  /* 0x04 */      U32                     EventMasks[MPI2_IOCPAGE7_EVENTMASK_WORDS];/* 0x08 */      U16                     SASBroadcastPrimitiveMasks; /* 0x18 */ -    U16                     Reserved2;                  /* 0x1A */ +	U16                     SASNotifyPrimitiveMasks;    /* 0x1A */      U32                     Reserved3;                  /* 0x1C */  } MPI2_CONFIG_PAGE_IOC_7, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_IOC_7,    Mpi2IOCPage7_t, MPI2_POINTER pMpi2IOCPage7_t; -#define MPI2_IOCPAGE7_PAGEVERSION                       (0x01) +#define MPI2_IOCPAGE7_PAGEVERSION                       (0x02)  /* IOC Page 8 */ @@ -1044,24 +1210,32 @@ typedef struct _MPI2_CONFIG_PAGE_IOC_8  typedef struct _MPI2_CONFIG_PAGE_BIOS_1  { -    MPI2_CONFIG_PAGE_HEADER Header;                     /* 0x00 */ -    U32                     BiosOptions;                /* 0x04 */ -    U32                     IOCSettings;                /* 0x08 */ -    U32                     Reserved1;                  /* 0x0C */ -    U32                     DeviceSettings;             /* 0x10 */ -    U16                     NumberOfDevices;            /* 0x14 */ -    U16                     Reserved2;                  /* 0x16 */ -    U16                     IOTimeoutBlockDevicesNonRM; /* 0x18 */ -    U16                     IOTimeoutSequential;        /* 0x1A */ -    U16                     IOTimeoutOther;             /* 0x1C */ -    U16                     IOTimeoutBlockDevicesRM;    /* 0x1E */ +	MPI2_CONFIG_PAGE_HEADER Header;                     /* 0x00 */ +	U32                     BiosOptions;                /* 0x04 */ +	U32                     IOCSettings;                /* 0x08 */ +	U32                     Reserved1;                  /* 0x0C */ +	U32                     DeviceSettings;             /* 0x10 */ +	U16                     NumberOfDevices;            /* 0x14 */ +	U16                     UEFIVersion;                /* 0x16 */ +	U16                     IOTimeoutBlockDevicesNonRM; /* 0x18 */ +	U16                     IOTimeoutSequential;        /* 0x1A */ +	U16                     IOTimeoutOther;             /* 0x1C */ +	U16                     IOTimeoutBlockDevicesRM;    /* 0x1E */  } MPI2_CONFIG_PAGE_BIOS_1, MPI2_POINTER PTR_MPI2_CONFIG_PAGE_BIOS_1,    Mpi2BiosPage1_t, MPI2_POINTER pMpi2BiosPage1_t; -#define MPI2_BIOSPAGE1_PAGEVERSION                      (0x04) +#define MPI2_BIOSPAGE1_PAGEVERSION                      (0x05)  /* values for BIOS Page 1 BiosOptions field */ -#define MPI2_BIOSPAGE1_OPTIONS_DISABLE_BIOS             (0x00000001) +#define MPI2_BIOSPAGE1_OPTIONS_MASK_OEM_ID                  (0x000000F0) +#define MPI2_BIOSPAGE1_OPTIONS_LSI_OEM_ID                   (0x00000000) + +#define MPI2_BIOSPAGE1_OPTIONS_MASK_UEFI_HII_REGISTRATION   (0x00000006) +#define MPI2_BIOSPAGE1_OPTIONS_ENABLE_UEFI_HII              (0x00000000) +#define MPI2_BIOSPAGE1_OPTIONS_DISABLE_UEFI_HII             (0x00000002) +#define MPI2_BIOSPAGE1_OPTIONS_VERSION_CHECK_UEFI_HII       (0x00000004) + +#define MPI2_BIOSPAGE1_OPTIONS_DISABLE_BIOS                 (0x00000001)  /* values for BIOS Page 1 IOCSettings field */  #define MPI2_BIOSPAGE1_IOCSET_MASK_BOOT_PREFERENCE      (0x00030000) @@ -1088,6 +1262,13 @@ typedef struct _MPI2_CONFIG_PAGE_BIOS_1  #define MPI2_BIOSPAGE1_DEVSET_DISABLE_NON_RM_LUN        (0x00000002)  #define MPI2_BIOSPAGE1_DEVSET_DISABLE_OTHER_LUN         (0x00000001) +/* defines for BIOS Page 1 UEFIVersion field */ +#define MPI2_BIOSPAGE1_UEFI_VER_MAJOR_MASK              (0xFF00) +#define MPI2_BIOSPAGE1_UEFI_VER_MAJOR_SHIFT             (8) +#define MPI2_BIOSPAGE1_UEFI_VER_MINOR_MASK              (0x00FF) +#define MPI2_BIOSPAGE1_UEFI_VER_MINOR_SHIFT             (0) + +  /* BIOS Page 2 */ @@ -1347,6 +1528,7 @@ typedef struct _MPI2_CONFIG_PAGE_RAID_VOL_0  #define MPI2_RAIDVOL0_STATUS_FLAG_CAPACITY_EXPANSION        (0x00040000)  #define MPI2_RAIDVOL0_STATUS_FLAG_BACKGROUND_INIT           (0x00020000)  #define MPI2_RAIDVOL0_STATUS_FLAG_RESYNC_IN_PROGRESS        (0x00010000) +#define MPI2_RAIDVOL0_STATUS_FLAG_VOL_NOT_CONSISTENT        (0x00000080)  #define MPI2_RAIDVOL0_STATUS_FLAG_OCE_ALLOWED               (0x00000040)  #define MPI2_RAIDVOL0_STATUS_FLAG_BGI_COMPLETE              (0x00000020)  #define MPI2_RAIDVOL0_STATUS_FLAG_1E_OFFSET_MIRROR          (0x00000000) @@ -1469,11 +1651,15 @@ typedef struct _MPI2_CONFIG_PAGE_RD_PDISK_0  #define MPI2_PHYSDISK0_INCOMPATIBLE_MAX_LBA             (0x03)  #define MPI2_PHYSDISK0_INCOMPATIBLE_SATA_EXTENDED_CMD   (0x04)  #define MPI2_PHYSDISK0_INCOMPATIBLE_REMOVEABLE_MEDIA    (0x05) +#define MPI2_PHYSDISK0_INCOMPATIBLE_MEDIA_TYPE          (0x06)  #define MPI2_PHYSDISK0_INCOMPATIBLE_UNKNOWN             (0xFF)  /* PhysDiskAttributes defines */ +#define MPI2_PHYSDISK0_ATTRIB_MEDIA_MASK                (0x0C)  #define MPI2_PHYSDISK0_ATTRIB_SOLID_STATE_DRIVE         (0x08)  #define MPI2_PHYSDISK0_ATTRIB_HARD_DISK_DRIVE           (0x04) + +#define MPI2_PHYSDISK0_ATTRIB_PROTOCOL_MASK             (0x03)  #define MPI2_PHYSDISK0_ATTRIB_SAS_PROTOCOL              (0x02)  #define MPI2_PHYSDISK0_ATTRIB_SATA_PROTOCOL             (0x01) @@ -1545,6 +1731,7 @@ typedef struct _MPI2_CONFIG_PAGE_RD_PDISK_1  #define MPI2_SAS_NEG_LINK_RATE_SATA_OOB_COMPLETE        (0x03)  #define MPI2_SAS_NEG_LINK_RATE_PORT_SELECTOR            (0x04)  #define MPI2_SAS_NEG_LINK_RATE_SMP_RESET_IN_PROGRESS    (0x05) +#define MPI2_SAS_NEG_LINK_RATE_UNSUPPORTED_PHY          (0x06)  #define MPI2_SAS_NEG_LINK_RATE_1_5                      (0x08)  #define MPI2_SAS_NEG_LINK_RATE_3_0                      (0x09)  #define MPI2_SAS_NEG_LINK_RATE_6_0                      (0x0A) @@ -1571,6 +1758,7 @@ typedef struct _MPI2_CONFIG_PAGE_RD_PDISK_1  #define MPI2_SAS_PHYINFO_PHY_VACANT                     (0x80000000)  #define MPI2_SAS_PHYINFO_PHY_POWER_CONDITION_MASK       (0x18000000) +#define MPI2_SAS_PHYINFO_SHIFT_PHY_POWER_CONDITION      (27)  #define MPI2_SAS_PHYINFO_PHY_POWER_ACTIVE               (0x00000000)  #define MPI2_SAS_PHYINFO_PHY_POWER_PARTIAL              (0x08000000)  #define MPI2_SAS_PHYINFO_PHY_POWER_SLUMBER              (0x10000000) @@ -1810,10 +1998,14 @@ typedef struct _MPI2_SAS_IOUNIT4_SPINUP_GROUP  {      U8          MaxTargetSpinup;            /* 0x00 */      U8          SpinupDelay;                /* 0x01 */ -    U16         Reserved1;                  /* 0x02 */ +	U8          SpinupFlags;                /* 0x02 */ +	U8          Reserved1;                  /* 0x03 */  } MPI2_SAS_IOUNIT4_SPINUP_GROUP, MPI2_POINTER PTR_MPI2_SAS_IOUNIT4_SPINUP_GROUP,    Mpi2SasIOUnit4SpinupGroup_t, MPI2_POINTER pMpi2SasIOUnit4SpinupGroup_t; +/* defines for SAS IO Unit Page 4 SpinupFlags */ +#define MPI2_SASIOUNIT4_SPINUP_DISABLE_FLAG         (0x01) +  /*   * Host code (drivers, BIOS, utilities, etc.) should leave this define set to   * one and check the value returned for NumPhys at runtime. @@ -2032,18 +2224,39 @@ typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT_8 {  #define MPI2_SASIOUNITPAGE8_PAGEVERSION     (0x00)  /* defines for PowerManagementCapabilities field */ -#define MPI2_SASIOUNIT8_PM_HOST_PORT_WIDTH_MOD          (0x000001000) -#define MPI2_SASIOUNIT8_PM_HOST_SAS_SLUMBER_MODE        (0x000000800) -#define MPI2_SASIOUNIT8_PM_HOST_SAS_PARTIAL_MODE        (0x000000400) -#define MPI2_SASIOUNIT8_PM_HOST_SATA_SLUMBER_MODE       (0x000000200) -#define MPI2_SASIOUNIT8_PM_HOST_SATA_PARTIAL_MODE       (0x000000100) -#define MPI2_SASIOUNIT8_PM_IOUNIT_PORT_WIDTH_MOD        (0x000000010) -#define MPI2_SASIOUNIT8_PM_IOUNIT_SAS_SLUMBER_MODE      (0x000000008) -#define MPI2_SASIOUNIT8_PM_IOUNIT_SAS_PARTIAL_MODE      (0x000000004) -#define MPI2_SASIOUNIT8_PM_IOUNIT_SATA_SLUMBER_MODE     (0x000000002) -#define MPI2_SASIOUNIT8_PM_IOUNIT_SATA_PARTIAL_MODE     (0x000000001) - - +#define MPI2_SASIOUNIT8_PM_HOST_PORT_WIDTH_MOD          (0x00001000) +#define MPI2_SASIOUNIT8_PM_HOST_SAS_SLUMBER_MODE        (0x00000800) +#define MPI2_SASIOUNIT8_PM_HOST_SAS_PARTIAL_MODE        (0x00000400) +#define MPI2_SASIOUNIT8_PM_HOST_SATA_SLUMBER_MODE       (0x00000200) +#define MPI2_SASIOUNIT8_PM_HOST_SATA_PARTIAL_MODE       (0x00000100) +#define MPI2_SASIOUNIT8_PM_IOUNIT_PORT_WIDTH_MOD        (0x00000010) +#define MPI2_SASIOUNIT8_PM_IOUNIT_SAS_SLUMBER_MODE      (0x00000008) +#define MPI2_SASIOUNIT8_PM_IOUNIT_SAS_PARTIAL_MODE      (0x00000004) +#define MPI2_SASIOUNIT8_PM_IOUNIT_SATA_SLUMBER_MODE     (0x00000002) +#define MPI2_SASIOUNIT8_PM_IOUNIT_SATA_PARTIAL_MODE     (0x00000001) + + + +/* SAS IO Unit Page 16 */ + +typedef struct _MPI2_CONFIG_PAGE_SASIOUNIT16 { +	MPI2_CONFIG_EXTENDED_PAGE_HEADER  Header;                  /* 0x00 */ +	U64                         TimeStamp;                     /* 0x08 */ +	U32                         Reserved1;                     /* 0x10 */ +	U32                         Reserved2;                     /* 0x14 */ +	U32                         FastPathPendedRequests;        /* 0x18 */ +	U32                         FastPathUnPendedRequests;      /* 0x1C */ +	U32                         FastPathHostRequestStarts;     /* 0x20 */ +	U32                         FastPathFirmwareRequestStarts; /* 0x24 */ +	U32                         FastPathHostCompletions;       /* 0x28 */ +	U32                         FastPathFirmwareCompletions;   /* 0x2C */ +	U32                         NonFastPathRequestStarts;      /* 0x30 */ +	U32			    NonFastPathHostCompletions;    /* 0x30 */ +} MPI2_CONFIG_PAGE_SASIOUNIT16, +MPI2_POINTER PTR_MPI2_CONFIG_PAGE_SASIOUNIT16, +Mpi2SasIOUnitPage16_t, MPI2_POINTER pMpi2SasIOUnitPage16_t; + +#define MPI2_SASIOUNITPAGE16_PAGEVERSION    (0x00)  /**************************************************************************** @@ -2161,13 +2374,12 @@ typedef struct _MPI2_CONFIG_PAGE_EXPANDER_1  /* use MPI2_SAS_NEG_LINK_RATE_ defines for the NegotiatedLinkRate field */ -/* use MPI2_SAS_APHYINFO_ defines for AttachedPhyInfo field */ -  /* values for SAS Expander Page 1 DiscoveryInfo field */  #define MPI2_SAS_EXPANDER1_DISCINFO_BAD_PHY_DISABLED    (0x04)  #define MPI2_SAS_EXPANDER1_DISCINFO_LINK_STATUS_CHANGE  (0x02)  #define MPI2_SAS_EXPANDER1_DISCINFO_NO_ROUTING_ENTRIES  (0x01) +/* use MPI2_SAS_APHYINFO_ defines for AttachedPhyInfo field */  /****************************************************************************  *   SAS Device Config Pages @@ -2228,6 +2440,7 @@ typedef struct _MPI2_CONFIG_PAGE_SAS_DEV_0  /* see mpi2_sas.h for values for SAS Device Page 0 DeviceInfo values */  /* values for SAS Device Page 0 Flags field */ +#define MPI2_SAS_DEVICE0_FLAGS_UNAUTHORIZED_DEVICE          (0x8000)  #define MPI2_SAS_DEVICE0_FLAGS_SLUMBER_PM_CAPABLE           (0x1000)  #define MPI2_SAS_DEVICE0_FLAGS_PARTIAL_PM_CAPABLE           (0x0800)  #define MPI2_SAS_DEVICE0_FLAGS_SATA_ASYNCHRONOUS_NOTIFY     (0x0400) @@ -2286,6 +2499,8 @@ typedef struct _MPI2_CONFIG_PAGE_SAS_PHY_0  #define MPI2_SASPHY0_PAGEVERSION            (0x03) +/* use MPI2_SAS_APHYINFO_ defines for AttachedPhyInfo field */ +  /* use MPI2_SAS_PRATE_ defines for the ProgrammedLinkRate field */  /* use MPI2_SAS_HWRATE_ defines for the HwLinkRate field */ @@ -2293,12 +2508,10 @@ typedef struct _MPI2_CONFIG_PAGE_SAS_PHY_0  /* values for SAS PHY Page 0 Flags field */  #define MPI2_SAS_PHY0_FLAGS_SGPIO_DIRECT_ATTACH_ENC             (0x01) -/* use MPI2_SAS_APHYINFO_ defines for AttachedPhyInfo field */ +/* use MPI2_SAS_PHYINFO_ for the PhyInfo field */  /* use MPI2_SAS_NEG_LINK_RATE_ defines for the NegotiatedLinkRate field */ -/* use MPI2_SAS_PHYINFO_ for the PhyInfo field */ -  /* SAS PHY Page 1 */ @@ -2783,5 +2996,25 @@ typedef struct _MPI2_CONFIG_PAGE_ETHERNET_1 {  #define MPI2_ETHPG1_MS_DATA_RATE_1GBIT              (0x03) +/**************************************************************************** +*   Extended Manufacturing Config Pages +****************************************************************************/ + +/* + * Generic structure to use for product-specific extended manufacturing pages + * (currently Extended Manufacturing Page 40 through Extended Manufacturing + * Page 60). + */ + +typedef struct _MPI2_CONFIG_PAGE_EXT_MAN_PS { +	MPI2_CONFIG_EXTENDED_PAGE_HEADER    Header;                 /* 0x00 */ +	U32                                 ProductSpecificInfo;    /* 0x08 */ +}	MPI2_CONFIG_PAGE_EXT_MAN_PS, +	MPI2_POINTER PTR_MPI2_CONFIG_PAGE_EXT_MAN_PS, +	Mpi2ExtManufacturingPagePS_t, +	MPI2_POINTER pMpi2ExtManufacturingPagePS_t; + +/* PageVersion should be provided by product-specific code */ +  #endif diff --git a/drivers/scsi/mpt2sas/mpi/mpi2_history.txt b/drivers/scsi/mpt2sas/mpi/mpi2_history.txt deleted file mode 100644 index bd6c92b5fae..00000000000 --- a/drivers/scsi/mpt2sas/mpi/mpi2_history.txt +++ /dev/null @@ -1,381 +0,0 @@ - ============================== - Fusion-MPT MPI 2.0 Header File Change History - ============================== - - Copyright (c) 2000-2010 LSI Corporation. - - --------------------------------------- - Header Set Release Version:    02.00.14 - Header Set Release Date:       10-28-09 - --------------------------------------- - - Filename               Current version     Prior version - ----------             ---------------     ------------- - mpi2.h                 02.00.14            02.00.13 - mpi2_cnfg.h            02.00.13            02.00.12 - mpi2_init.h            02.00.08            02.00.07 - mpi2_ioc.h             02.00.13            02.00.12 - mpi2_raid.h            02.00.04            02.00.04 - mpi2_sas.h             02.00.03            02.00.02 - mpi2_targ.h            02.00.03            02.00.03 - mpi2_tool.h            02.00.04            02.00.04 - mpi2_type.h            02.00.00            02.00.00 - mpi2_ra.h              02.00.00            02.00.00 - mpi2_hbd.h             02.00.00 - mpi2_history.txt       02.00.14            02.00.13 - - - *  Date      Version   Description - *  --------  --------  ------------------------------------------------------ - -mpi2.h - *  04-30-07  02.00.00  Corresponds to Fusion-MPT MPI Specification Rev A. - *  06-04-07  02.00.01  Bumped MPI2_HEADER_VERSION_UNIT. - *  06-26-07  02.00.02  Bumped MPI2_HEADER_VERSION_UNIT. - *  08-31-07  02.00.03  Bumped MPI2_HEADER_VERSION_UNIT. - *                      Moved ReplyPostHostIndex register to offset 0x6C of the - *                      MPI2_SYSTEM_INTERFACE_REGS and modified the define for - *                      MPI2_REPLY_POST_HOST_INDEX_OFFSET. - *                      Added union of request descriptors. - *                      Added union of reply descriptors. - *  10-31-07  02.00.04  Bumped MPI2_HEADER_VERSION_UNIT. - *                      Added define for MPI2_VERSION_02_00. - *                      Fixed the size of the FunctionDependent5 field in the - *                      MPI2_DEFAULT_REPLY structure. - *  12-18-07  02.00.05  Bumped MPI2_HEADER_VERSION_UNIT. - *                      Removed the MPI-defined Fault Codes and extended the - *                      product specific codes up to 0xEFFF. - *                      Added a sixth key value for the WriteSequence register - *                      and changed the flush value to 0x0. - *                      Added message function codes for Diagnostic Buffer Post - *                      and Diagnsotic Release. - *                      New IOCStatus define: MPI2_IOCSTATUS_DIAGNOSTIC_RELEASED - *                      Moved MPI2_VERSION_UNION from mpi2_ioc.h. - *  02-29-08  02.00.06  Bumped MPI2_HEADER_VERSION_UNIT. - *  03-03-08  02.00.07  Bumped MPI2_HEADER_VERSION_UNIT. - *  05-21-08  02.00.08  Bumped MPI2_HEADER_VERSION_UNIT. - *                      Added #defines for marking a reply descriptor as unused. - *  06-27-08  02.00.09  Bumped MPI2_HEADER_VERSION_UNIT. - *  10-02-08  02.00.10  Bumped MPI2_HEADER_VERSION_UNIT. - *                      Moved LUN field defines from mpi2_init.h. - *  01-19-09  02.00.11  Bumped MPI2_HEADER_VERSION_UNIT. - *  05-06-09  02.00.12  Bumped MPI2_HEADER_VERSION_UNIT. - *                      In all request and reply descriptors, replaced VF_ID - *                      field with MSIxIndex field. - *                      Removed DevHandle field from - *                      MPI2_SCSI_IO_SUCCESS_REPLY_DESCRIPTOR and made those - *                      bytes reserved. - *                      Added RAID Accelerator functionality. - *  07-30-09  02.00.13  Bumped MPI2_HEADER_VERSION_UNIT. - *  10-28-09  02.00.14  Bumped MPI2_HEADER_VERSION_UNIT. - *                      Added MSI-x index mask and shift for Reply Post Host - *                      Index register. - *                      Added function code for Host Based Discovery Action. - *  -------------------------------------------------------------------------- - -mpi2_cnfg.h - *  04-30-07  02.00.00  Corresponds to Fusion-MPT MPI Specification Rev A. - *  06-04-07  02.00.01  Added defines for SAS IO Unit Page 2 PhyFlags. - *                      Added Manufacturing Page 11. - *                      Added MPI2_SAS_EXPANDER0_FLAGS_CONNECTOR_END_DEVICE - *                      define. - *  06-26-07  02.00.02  Adding generic structure for product-specific - *                      Manufacturing pages: MPI2_CONFIG_PAGE_MANUFACTURING_PS. - *                      Rework of BIOS Page 2 configuration page. - *                      Fixed MPI2_BIOSPAGE2_BOOT_DEVICE to be a union of the - *                      forms. - *                      Added configuration pages IOC Page 8 and Driver - *                      Persistent Mapping Page 0. - *  08-31-07  02.00.03  Modified configuration pages dealing with Integrated - *                      RAID (Manufacturing Page 4, RAID Volume Pages 0 and 1, - *                      RAID Physical Disk Pages 0 and 1, RAID Configuration - *                      Page 0). - *                      Added new value for AccessStatus field of SAS Device - *                      Page 0 (_SATA_NEEDS_INITIALIZATION). - *  10-31-07  02.00.04  Added missing SEPDevHandle field to - *                      MPI2_CONFIG_PAGE_SAS_ENCLOSURE_0. - *  12-18-07  02.00.05  Modified IO Unit Page 0 to use 32-bit version fields for - *                      NVDATA. - *                      Modified IOC Page 7 to use masks and added field for - *                      SASBroadcastPrimitiveMasks. - *                      Added MPI2_CONFIG_PAGE_BIOS_4. - *                      Added MPI2_CONFIG_PAGE_LOG_0. - *  02-29-08  02.00.06  Modified various names to make them 32-character unique. - *                      Added SAS Device IDs. - *                      Updated Integrated RAID configuration pages including - *                      Manufacturing Page 4, IOC Page 6, and RAID Configuration - *                      Page 0. - *  05-21-08  02.00.07  Added define MPI2_MANPAGE4_MIX_SSD_SAS_SATA. - *                      Added define MPI2_MANPAGE4_PHYSDISK_128MB_COERCION. - *                      Fixed define MPI2_IOCPAGE8_FLAGS_ENCLOSURE_SLOT_MAPPING. - *                      Added missing MaxNumRoutedSasAddresses field to - *                      MPI2_CONFIG_PAGE_EXPANDER_0. - *                      Added SAS Port Page 0. - *                      Modified structure layout for - *                      MPI2_CONFIG_PAGE_DRIVER_MAPPING_0. - *  06-27-08  02.00.08  Changed MPI2_CONFIG_PAGE_RD_PDISK_1 to use - *                      MPI2_RAID_PHYS_DISK1_PATH_MAX to size the array. - *  10-02-08  02.00.09  Changed MPI2_RAID_PGAD_CONFIGNUM_MASK from 0x0000FFFF - *                      to 0x000000FF. - *                      Added two new values for the Physical Disk Coercion Size - *                      bits in the Flags field of Manufacturing Page 4. - *                      Added product-specific Manufacturing pages 16 to 31. - *                      Modified Flags bits for controlling write cache on SATA - *                      drives in IO Unit Page 1. - *                      Added new bit to AdditionalControlFlags of SAS IO Unit - *                      Page 1 to control Invalid Topology Correction. - *                      Added SupportedPhysDisks field to RAID Volume Page 1 and - *                      added related defines. - *                      Added additional defines for RAID Volume Page 0 - *                      VolumeStatusFlags field. - *                      Modified meaning of RAID Volume Page 0 VolumeSettings - *                      define for auto-configure of hot-swap drives. - *                      Added PhysDiskAttributes field (and related defines) to - *                      RAID Physical Disk Page 0. - *                      Added MPI2_SAS_PHYINFO_PHY_VACANT define. - *                      Added three new DiscoveryStatus bits for SAS IO Unit - *                      Page 0 and SAS Expander Page 0. - *                      Removed multiplexing information from SAS IO Unit pages. - *                      Added BootDeviceWaitTime field to SAS IO Unit Page 4. - *                      Removed Zone Address Resolved bit from PhyInfo and from - *                      Expander Page 0 Flags field. - *                      Added two new AccessStatus values to SAS Device Page 0 - *                      for indicating routing problems. Added 3 reserved words - *                      to this page. - *  01-19-09  02.00.10  Fixed defines for GPIOVal field of IO Unit Page 3. - *                      Inserted missing reserved field into structure for IOC - *                      Page 6. - *                      Added more pending task bits to RAID Volume Page 0 - *                      VolumeStatusFlags defines. - *                      Added MPI2_PHYSDISK0_STATUS_FLAG_NOT_CERTIFIED define. - *                      Added a new DiscoveryStatus bit for SAS IO Unit Page 0 - *                      and SAS Expander Page 0 to flag a downstream initiator - *                      when in simplified routing mode. - *                      Removed SATA Init Failure defines for DiscoveryStatus - *                      fields of SAS IO Unit Page 0 and SAS Expander Page 0. - *                      Added MPI2_SAS_DEVICE0_ASTATUS_DEVICE_BLOCKED define. - *                      Added PortGroups, DmaGroup, and ControlGroup fields to - *                      SAS Device Page 0. - *  05-06-09  02.00.11  Added structures and defines for IO Unit Page 5 and IO - *                      Unit Page 6. - *                      Added expander reduced functionality data to SAS - *                      Expander Page 0. - *                      Added SAS PHY Page 2 and SAS PHY Page 3. - *  07-30-09  02.00.12  Added IO Unit Page 7. - *                      Added new device ids. - *                      Added SAS IO Unit Page 5. - *                      Added partial and slumber power management capable flags - *                      to SAS Device Page 0 Flags field. - *                      Added PhyInfo defines for power condition. - *                      Added Ethernet configuration pages. - *  10-28-09  02.00.13  Added MPI2_IOUNITPAGE1_ENABLE_HOST_BASED_DISCOVERY. - *                      Added SAS PHY Page 4 structure and defines. - *  -------------------------------------------------------------------------- - -mpi2_init.h - *  04-30-07  02.00.00  Corresponds to Fusion-MPT MPI Specification Rev A. - *  10-31-07  02.00.01  Fixed name for pMpi2SCSITaskManagementRequest_t. - *  12-18-07  02.00.02  Modified Task Management Target Reset Method defines. - *  02-29-08  02.00.03  Added Query Task Set and Query Unit Attention. - *  03-03-08  02.00.04  Fixed name of struct _MPI2_SCSI_TASK_MANAGE_REPLY. - *  05-21-08  02.00.05  Fixed typo in name of Mpi2SepRequest_t. - *  10-02-08  02.00.06  Removed Untagged and No Disconnect values from SCSI IO - *                      Control field Task Attribute flags. - *                      Moved LUN field defines to mpi2.h becasue they are - *                      common to many structures. - *  05-06-09  02.00.07  Changed task management type of Query Unit Attention to - *                      Query Asynchronous Event. - *                      Defined two new bits in the SlotStatus field of the SCSI - *                      Enclosure Processor Request and Reply. - *  10-28-09  02.00.08  Added defines for decoding the ResponseInfo bytes for - *                      both SCSI IO Error Reply and SCSI Task Management Reply. - *                      Added ResponseInfo field to MPI2_SCSI_TASK_MANAGE_REPLY. - *                      Added MPI2_SCSITASKMGMT_RSP_TM_OVERLAPPED_TAG define. - *  -------------------------------------------------------------------------- - -mpi2_ioc.h - *  04-30-07  02.00.00  Corresponds to Fusion-MPT MPI Specification Rev A. - *  06-04-07  02.00.01  In IOCFacts Reply structure, renamed MaxDevices to - *                      MaxTargets. - *                      Added TotalImageSize field to FWDownload Request. - *                      Added reserved words to FWUpload Request. - *  06-26-07  02.00.02  Added IR Configuration Change List Event. - *  08-31-07  02.00.03  Removed SystemReplyQueueDepth field from the IOCInit - *                      request and replaced it with - *                      ReplyDescriptorPostQueueDepth and ReplyFreeQueueDepth. - *                      Replaced the MinReplyQueueDepth field of the IOCFacts - *                      reply with MaxReplyDescriptorPostQueueDepth. - *                      Added MPI2_RDPQ_DEPTH_MIN define to specify the minimum - *                      depth for the Reply Descriptor Post Queue. - *                      Added SASAddress field to Initiator Device Table - *                      Overflow Event data. - *  10-31-07  02.00.04  Added ReasonCode MPI2_EVENT_SAS_INIT_RC_NOT_RESPONDING - *                      for SAS Initiator Device Status Change Event data. - *                      Modified Reason Code defines for SAS Topology Change - *                      List Event data, including adding a bit for PHY Vacant - *                      status, and adding a mask for the Reason Code. - *                      Added define for - *                      MPI2_EVENT_SAS_TOPO_ES_DELAY_NOT_RESPONDING. - *                      Added define for MPI2_EXT_IMAGE_TYPE_MEGARAID. - *  12-18-07  02.00.05  Added Boot Status defines for the IOCExceptions field of - *                      the IOCFacts Reply. - *                      Removed MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER define. - *                      Moved MPI2_VERSION_UNION to mpi2.h. - *                      Changed MPI2_EVENT_NOTIFICATION_REQUEST to use masks - *                      instead of enables, and added SASBroadcastPrimitiveMasks - *                      field. - *                      Added Log Entry Added Event and related structure. - *  02-29-08  02.00.06  Added define MPI2_IOCFACTS_CAPABILITY_INTEGRATED_RAID. - *                      Removed define MPI2_IOCFACTS_PROTOCOL_SMP_TARGET. - *                      Added MaxVolumes and MaxPersistentEntries fields to - *                      IOCFacts reply. - *                      Added ProtocalFlags and IOCCapabilities fields to - *                      MPI2_FW_IMAGE_HEADER. - *                      Removed MPI2_PORTENABLE_FLAGS_ENABLE_SINGLE_PORT. - *  03-03-08  02.00.07  Fixed MPI2_FW_IMAGE_HEADER by changing Reserved26 to - *                      a U16 (from a U32). - *                      Removed extra 's' from EventMasks name. - *  06-27-08  02.00.08  Fixed an offset in a comment. - *  10-02-08  02.00.09  Removed SystemReplyFrameSize from MPI2_IOC_INIT_REQUEST. - *                      Removed CurReplyFrameSize from MPI2_IOC_FACTS_REPLY and - *                      renamed MinReplyFrameSize to ReplyFrameSize. - *                      Added MPI2_IOCFACTS_EXCEPT_IR_FOREIGN_CONFIG_MAX. - *                      Added two new RAIDOperation values for Integrated RAID - *                      Operations Status Event data. - *                      Added four new IR Configuration Change List Event data - *                      ReasonCode values. - *                      Added two new ReasonCode defines for SAS Device Status - *                      Change Event data. - *                      Added three new DiscoveryStatus bits for the SAS - *                      Discovery event data. - *                      Added Multiplexing Status Change bit to the PhyStatus - *                      field of the SAS Topology Change List event data. - *                      Removed define for MPI2_INIT_IMAGE_BOOTFLAGS_XMEMCOPY. - *                      BootFlags are now product-specific. - *                      Added defines for the indivdual signature bytes - *                      for MPI2_INIT_IMAGE_FOOTER. - *  01-19-09  02.00.10  Added MPI2_IOCFACTS_CAPABILITY_EVENT_REPLAY define. - *                      Added MPI2_EVENT_SAS_DISC_DS_DOWNSTREAM_INITIATOR - *                      define. - *                      Added MPI2_EVENT_SAS_DEV_STAT_RC_SATA_INIT_FAILURE - *                      define. - *                      Removed MPI2_EVENT_SAS_DISC_DS_SATA_INIT_FAILURE define. - *  05-06-09  02.00.11  Added MPI2_IOCFACTS_CAPABILITY_RAID_ACCELERATOR define. - *                      Added MPI2_IOCFACTS_CAPABILITY_MSI_X_INDEX define. - *                      Added two new reason codes for SAS Device Status Change - *                      Event. - *                      Added new event: SAS PHY Counter. - *  07-30-09  02.00.12  Added GPIO Interrupt event define and structure. - *                      Added MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER define. - *                      Added new product id family for 2208. - *  10-28-09  02.00.13  Added HostMSIxVectors field to MPI2_IOC_INIT_REQUEST. - *                      Added MaxMSIxVectors field to MPI2_IOC_FACTS_REPLY. - *                      Added MinDevHandle field to MPI2_IOC_FACTS_REPLY. - *                      Added MPI2_IOCFACTS_CAPABILITY_HOST_BASED_DISCOVERY. - *                      Added MPI2_EVENT_HOST_BASED_DISCOVERY_PHY define. - *                      Added MPI2_EVENT_SAS_TOPO_ES_NO_EXPANDER define. - *                      Added Host Based Discovery Phy Event data. - *                      Added defines for ProductID Product field - *                      (MPI2_FW_HEADER_PID_). - *                      Modified values for SAS ProductID Family - *                      (MPI2_FW_HEADER_PID_FAMILY_). - *  -------------------------------------------------------------------------- - -mpi2_raid.h - *  04-30-07  02.00.00  Corresponds to Fusion-MPT MPI Specification Rev A. - *  08-31-07  02.00.01  Modifications to RAID Action request and reply, - *                      including the Actions and ActionData. - *  02-29-08  02.00.02  Added MPI2_RAID_ACTION_ADATA_DISABL_FULL_REBUILD. - *  05-21-08  02.00.03  Added MPI2_RAID_VOL_CREATION_NUM_PHYSDISKS so that - *                      the PhysDisk array in MPI2_RAID_VOLUME_CREATION_STRUCT - *                      can be sized by the build environment. - *  07-30-09  02.00.04  Added proper define for the Use Default Settings bit of - *                      VolumeCreationFlags and marked the old one as obsolete. - *  -------------------------------------------------------------------------- - -mpi2_sas.h - *  04-30-07  02.00.00  Corresponds to Fusion-MPT MPI Specification Rev A. - *  06-26-07  02.00.01  Added Clear All Persistent Operation to SAS IO Unit - *                      Control Request. - *  10-02-08  02.00.02  Added Set IOC Parameter Operation to SAS IO Unit Control - *                      Request. - *  10-28-09  02.00.03  Changed the type of SGL in MPI2_SATA_PASSTHROUGH_REQUEST - *                      to MPI2_SGE_IO_UNION since it supports chained SGLs. - *  -------------------------------------------------------------------------- - -mpi2_targ.h - *  04-30-07  02.00.00  Corresponds to Fusion-MPT MPI Specification Rev A. - *  08-31-07  02.00.01  Added Command Buffer Data Location Address Space bits to - *                      BufferPostFlags field of CommandBufferPostBase Request. - *  02-29-08  02.00.02  Modified various names to make them 32-character unique. - *  10-02-08  02.00.03  Removed NextCmdBufferOffset from - *                      MPI2_TARGET_CMD_BUF_POST_BASE_REQUEST. - *                      Target Status Send Request only takes a single SGE for - *                      response data. - *  -------------------------------------------------------------------------- - -mpi2_tool.h - *  04-30-07  02.00.00  Corresponds to Fusion-MPT MPI Specification Rev A. - *  12-18-07  02.00.01  Added Diagnostic Buffer Post and Diagnostic Release - *                      structures and defines. - *  02-29-08  02.00.02  Modified various names to make them 32-character unique. - *  05-06-09  02.00.03  Added ISTWI Read Write Tool and Diagnostic CLI Tool. - *  07-30-09  02.00.04  Added ExtendedType field to DiagnosticBufferPost request - *                      and reply messages. - *                      Added MPI2_DIAG_BUF_TYPE_EXTENDED. - *                      Incremented MPI2_DIAG_BUF_TYPE_COUNT. - *  -------------------------------------------------------------------------- - -mpi2_type.h - *  04-30-07  02.00.00  Corresponds to Fusion-MPT MPI Specification Rev A. - *  -------------------------------------------------------------------------- - -mpi2_ra.h - *  05-06-09  02.00.00  Initial version. - *  -------------------------------------------------------------------------- - -mpi2_hbd.h - *  10-28-09  02.00.00  Initial version. - *  -------------------------------------------------------------------------- - - -mpi2_history.txt         Parts list history - -Filename     02.00.14  02.00.13  02.00.12 -----------   --------  --------  -------- -mpi2.h       02.00.14  02.00.13  02.00.12 -mpi2_cnfg.h  02.00.13  02.00.12  02.00.11 -mpi2_init.h  02.00.08  02.00.07  02.00.07 -mpi2_ioc.h   02.00.13  02.00.12  02.00.11 -mpi2_raid.h  02.00.04  02.00.04  02.00.03 -mpi2_sas.h   02.00.03  02.00.02  02.00.02 -mpi2_targ.h  02.00.03  02.00.03  02.00.03 -mpi2_tool.h  02.00.04  02.00.04  02.00.03 -mpi2_type.h  02.00.00  02.00.00  02.00.00 -mpi2_ra.h    02.00.00  02.00.00  02.00.00 -mpi2_hbd.h   02.00.00 - -Filename     02.00.11  02.00.10  02.00.09  02.00.08  02.00.07  02.00.06 -----------   --------  --------  --------  --------  --------  -------- -mpi2.h       02.00.11  02.00.10  02.00.09  02.00.08  02.00.07  02.00.06 -mpi2_cnfg.h  02.00.10  02.00.09  02.00.08  02.00.07  02.00.06  02.00.06 -mpi2_init.h  02.00.06  02.00.06  02.00.05  02.00.05  02.00.04  02.00.03 -mpi2_ioc.h   02.00.10  02.00.09  02.00.08  02.00.07  02.00.07  02.00.06 -mpi2_raid.h  02.00.03  02.00.03  02.00.03  02.00.03  02.00.02  02.00.02 -mpi2_sas.h   02.00.02  02.00.02  02.00.01  02.00.01  02.00.01  02.00.01 -mpi2_targ.h  02.00.03  02.00.03  02.00.02  02.00.02  02.00.02  02.00.02 -mpi2_tool.h  02.00.02  02.00.02  02.00.02  02.00.02  02.00.02  02.00.02 -mpi2_type.h  02.00.00  02.00.00  02.00.00  02.00.00  02.00.00  02.00.00 - -Filename     02.00.05  02.00.04  02.00.03  02.00.02  02.00.01  02.00.00 -----------   --------  --------  --------  --------  --------  -------- -mpi2.h       02.00.05  02.00.04  02.00.03  02.00.02  02.00.01  02.00.00 -mpi2_cnfg.h  02.00.05  02.00.04  02.00.03  02.00.02  02.00.01  02.00.00 -mpi2_init.h  02.00.02  02.00.01  02.00.00  02.00.00  02.00.00  02.00.00 -mpi2_ioc.h   02.00.05  02.00.04  02.00.03  02.00.02  02.00.01  02.00.00 -mpi2_raid.h  02.00.01  02.00.01  02.00.01  02.00.00  02.00.00  02.00.00 -mpi2_sas.h   02.00.01  02.00.01  02.00.01  02.00.01  02.00.00  02.00.00 -mpi2_targ.h  02.00.01  02.00.01  02.00.01  02.00.00  02.00.00  02.00.00 -mpi2_tool.h  02.00.01  02.00.00  02.00.00  02.00.00  02.00.00  02.00.00 -mpi2_type.h  02.00.00  02.00.00  02.00.00  02.00.00  02.00.00  02.00.00 - diff --git a/drivers/scsi/mpt2sas/mpi/mpi2_init.h b/drivers/scsi/mpt2sas/mpi/mpi2_init.h index c4c99dfcb82..9d284dae655 100644 --- a/drivers/scsi/mpt2sas/mpi/mpi2_init.h +++ b/drivers/scsi/mpt2sas/mpi/mpi2_init.h @@ -1,12 +1,12 @@  /* - *  Copyright (c) 2000-2010 LSI Corporation. + *  Copyright (c) 2000-2013 LSI Corporation.   *   *   *           Name:  mpi2_init.h   *          Title:  MPI SCSI initiator mode messages and structures   *  Creation Date:  June 23, 2006   * - *    mpi2_init.h Version:  02.00.09 + *    mpi2_init.h Version:  02.00.14   *   *  Version History   *  --------------- @@ -21,7 +21,7 @@   *  05-21-08  02.00.05  Fixed typo in name of Mpi2SepRequest_t.   *  10-02-08  02.00.06  Removed Untagged and No Disconnect values from SCSI IO   *                      Control field Task Attribute flags. - *                      Moved LUN field defines to mpi2.h becasue they are + *                      Moved LUN field defines to mpi2.h because they are   *                      common to many structures.   *  05-06-09  02.00.07  Changed task management type of Query Unit Attention to   *                      Query Asynchronous Event. @@ -32,6 +32,11 @@   *                      Added ResponseInfo field to MPI2_SCSI_TASK_MANAGE_REPLY.   *                      Added MPI2_SCSITASKMGMT_RSP_TM_OVERLAPPED_TAG define.   *  02-10-10  02.00.09  Removed unused structure that had "#if 0" around it. + *  05-12-10  02.00.10  Added optional vendor-unique region to SCSI IO Request. + *  11-10-10  02.00.11  Added MPI2_SCSIIO_NUM_SGLOFFSETS define. + *  02-06-12  02.00.13  Added alternate defines for Task Priority / Command + *                      Priority to match SAM-4. + *  07-10-12  02.00.14  Added MPI2_SCSIIO_CONTROL_SHIFT_DATADIRECTION.   *  --------------------------------------------------------------------------   */ @@ -98,7 +103,13 @@ typedef struct _MPI2_SCSI_IO_REQUEST      U8                      LUN[8];                         /* 0x34 */      U32                     Control;                        /* 0x3C */      MPI2_SCSI_IO_CDB_UNION  CDB;                            /* 0x40 */ + +#ifdef MPI2_SCSI_IO_VENDOR_UNIQUE_REGION /* typically this is left undefined */ +	MPI2_SCSI_IO_VENDOR_UNIQUE VendorRegion; +#endif +      MPI2_SGE_IO_UNION       SGL;                            /* 0x60 */ +  } MPI2_SCSI_IO_REQUEST, MPI2_POINTER PTR_MPI2_SCSI_IO_REQUEST,    Mpi2SCSIIORequest_t, MPI2_POINTER pMpi2SCSIIORequest_t; @@ -132,6 +143,9 @@ typedef struct _MPI2_SCSI_IO_REQUEST  #define MPI2_SCSIIO_SGLFLAGS_SGL1_SHIFT             (4)  #define MPI2_SCSIIO_SGLFLAGS_SGL0_SHIFT             (0) +/* number of SGLOffset fields */ +#define MPI2_SCSIIO_NUM_SGLOFFSETS                  (4) +  /* SCSI IO IoFlags bits */  /* Large CDB Address Space */ @@ -176,6 +190,7 @@ typedef struct _MPI2_SCSI_IO_REQUEST  #define MPI2_SCSIIO_CONTROL_ADDCDBLEN_SHIFT     (26)  #define MPI2_SCSIIO_CONTROL_DATADIRECTION_MASK  (0x03000000) +#define MPI2_SCSIIO_CONTROL_SHIFT_DATADIRECTION (24)  #define MPI2_SCSIIO_CONTROL_NODATATRANSFER      (0x00000000)  #define MPI2_SCSIIO_CONTROL_WRITE               (0x01000000)  #define MPI2_SCSIIO_CONTROL_READ                (0x02000000) @@ -183,6 +198,9 @@ typedef struct _MPI2_SCSI_IO_REQUEST  #define MPI2_SCSIIO_CONTROL_TASKPRI_MASK        (0x00007800)  #define MPI2_SCSIIO_CONTROL_TASKPRI_SHIFT       (11) +/* alternate name for the previous field; called Command Priority in SAM-4 */ +#define MPI2_SCSIIO_CONTROL_CMDPRI_MASK         (0x00007800) +#define MPI2_SCSIIO_CONTROL_CMDPRI_SHIFT        (11)  #define MPI2_SCSIIO_CONTROL_TASKATTRIBUTE_MASK  (0x00000700)  #define MPI2_SCSIIO_CONTROL_SIMPLEQ             (0x00000000) diff --git a/drivers/scsi/mpt2sas/mpi/mpi2_ioc.h b/drivers/scsi/mpt2sas/mpi/mpi2_ioc.h index 495bedc4d1f..d159c5f24aa 100644 --- a/drivers/scsi/mpt2sas/mpi/mpi2_ioc.h +++ b/drivers/scsi/mpt2sas/mpi/mpi2_ioc.h @@ -1,12 +1,12 @@  /* - *  Copyright (c) 2000-2010 LSI Corporation. + *  Copyright (c) 2000-2013 LSI Corporation.   *   *   *           Name:  mpi2_ioc.h   *          Title:  MPI IOC, Port, Event, FW Download, and FW Upload messages   *  Creation Date:  October 11, 2006   * - *  mpi2_ioc.h Version:  02.00.14 + *  mpi2_ioc.h Version:  02.00.22   *   *  Version History   *  --------------- @@ -101,6 +101,26 @@   *  02-10-10  02.00.14  Added SAS Quiesce Event structure and defines.   *                      Added PowerManagementControl Request structures and   *                      defines. + *  05-12-10  02.00.15  Marked Task Set Full Event as obsolete. + *                      Added MPI2_EVENT_SAS_TOPO_LR_UNSUPPORTED_PHY define. + *  11-10-10  02.00.16  Added MPI2_FW_DOWNLOAD_ITYPE_MIN_PRODUCT_SPECIFIC. + *  02-23-11  02.00.17  Added SAS NOTIFY Primitive event, and added + *                      SASNotifyPrimitiveMasks field to + *                      MPI2_EVENT_NOTIFICATION_REQUEST. + *                      Added Temperature Threshold Event. + *                      Added Host Message Event. + *                      Added Send Host Message request and reply. + *  05-25-11  02.00.18  For Extended Image Header, added + *                      MPI2_EXT_IMAGE_TYPE_MIN_PRODUCT_SPECIFIC and + *                      MPI2_EXT_IMAGE_TYPE_MAX_PRODUCT_SPECIFIC defines. + *                      Deprecated MPI2_EXT_IMAGE_TYPE_MAX define. + *  08-24-11  02.00.19  Added PhysicalPort field to + *                      MPI2_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE structure. + *                      Marked MPI2_PM_CONTROL_FEATURE_PCIE_LINK as obsolete. + *  03-29-12  02.00.21  Added a product specific range to event values. + *  07-26-12  02.00.22  Added MPI2_IOCFACTS_EXCEPT_PARTIAL_MEMORY_FAILURE. + *                      Added ElapsedSeconds field to + *                      MPI2_EVENT_DATA_IR_OPERATION_STATUS.   *  --------------------------------------------------------------------------   */ @@ -267,6 +287,7 @@ typedef struct _MPI2_IOC_FACTS_REPLY  #define MPI2_IOCFACTS_HDRVERSION_DEV_SHIFT              (0)  /* IOCExceptions */ +#define MPI2_IOCFACTS_EXCEPT_PARTIAL_MEMORY_FAILURE     (0x0200)  #define MPI2_IOCFACTS_EXCEPT_IR_FOREIGN_CONFIG_MAX      (0x0100)  #define MPI2_IOCFACTS_EXCEPT_BOOTSTAT_MASK              (0x00E0) @@ -418,7 +439,7 @@ typedef struct _MPI2_EVENT_NOTIFICATION_REQUEST      U32                     Reserved6;                      /* 0x10 */      U32                     EventMasks[MPI2_EVENT_NOTIFY_EVENTMASK_WORDS];/* 0x14 */      U16                     SASBroadcastPrimitiveMasks;     /* 0x24 */ -    U16                     Reserved7;                      /* 0x26 */ +	 U16                     SASNotifyPrimitiveMasks;        /* 0x26 */      U32                     Reserved8;                      /* 0x28 */  } MPI2_EVENT_NOTIFICATION_REQUEST,    MPI2_POINTER PTR_MPI2_EVENT_NOTIFICATION_REQUEST, @@ -456,7 +477,7 @@ typedef struct _MPI2_EVENT_NOTIFICATION_REPLY  #define MPI2_EVENT_STATE_CHANGE                     (0x0002)  #define MPI2_EVENT_HARD_RESET_RECEIVED              (0x0005)  #define MPI2_EVENT_EVENT_CHANGE                     (0x000A) -#define MPI2_EVENT_TASK_SET_FULL                    (0x000E) +#define MPI2_EVENT_TASK_SET_FULL                    (0x000E) /* obsolete */  #define MPI2_EVENT_SAS_DEVICE_STATUS_CHANGE         (0x000F)  #define MPI2_EVENT_IR_OPERATION_STATUS              (0x0014)  #define MPI2_EVENT_SAS_DISCOVERY                    (0x0016) @@ -473,7 +494,11 @@ typedef struct _MPI2_EVENT_NOTIFICATION_REPLY  #define MPI2_EVENT_GPIO_INTERRUPT                   (0x0023)  #define MPI2_EVENT_HOST_BASED_DISCOVERY_PHY         (0x0024)  #define MPI2_EVENT_SAS_QUIESCE                      (0x0025) - +#define MPI2_EVENT_SAS_NOTIFY_PRIMITIVE             (0x0026) +#define MPI2_EVENT_TEMP_THRESHOLD                   (0x0027) +#define MPI2_EVENT_HOST_MESSAGE                     (0x0028) +#define MPI2_EVENT_MIN_PRODUCT_SPECIFIC             (0x006E) +#define MPI2_EVENT_MAX_PRODUCT_SPECIFIC             (0x007F)  /* Log Entry Added Event data */ @@ -504,6 +529,39 @@ typedef struct _MPI2_EVENT_DATA_GPIO_INTERRUPT {    MPI2_POINTER PTR_MPI2_EVENT_DATA_GPIO_INTERRUPT,    Mpi2EventDataGpioInterrupt_t, MPI2_POINTER pMpi2EventDataGpioInterrupt_t; +/* Temperature Threshold Event data */ + +typedef struct _MPI2_EVENT_DATA_TEMPERATURE { +	U16         Status;                             /* 0x00 */ +	U8          SensorNum;                          /* 0x02 */ +	U8          Reserved1;                          /* 0x03 */ +	U16         CurrentTemperature;                 /* 0x04 */ +	U16         Reserved2;                          /* 0x06 */ +	U32         Reserved3;                          /* 0x08 */ +	U32         Reserved4;                          /* 0x0C */ +} MPI2_EVENT_DATA_TEMPERATURE, +MPI2_POINTER PTR_MPI2_EVENT_DATA_TEMPERATURE, +Mpi2EventDataTemperature_t, MPI2_POINTER pMpi2EventDataTemperature_t; + +/* Temperature Threshold Event data Status bits */ +#define MPI2_EVENT_TEMPERATURE3_EXCEEDED            (0x0008) +#define MPI2_EVENT_TEMPERATURE2_EXCEEDED            (0x0004) +#define MPI2_EVENT_TEMPERATURE1_EXCEEDED            (0x0002) +#define MPI2_EVENT_TEMPERATURE0_EXCEEDED            (0x0001) + + +/* Host Message Event data */ + +typedef struct _MPI2_EVENT_DATA_HOST_MESSAGE { +	U8          SourceVF_ID;                        /* 0x00 */ +	U8          Reserved1;                          /* 0x01 */ +	U16         Reserved2;                          /* 0x02 */ +	U32         Reserved3;                          /* 0x04 */ +	U32         HostData[1];                        /* 0x08 */ +} MPI2_EVENT_DATA_HOST_MESSAGE, MPI2_POINTER PTR_MPI2_EVENT_DATA_HOST_MESSAGE, +Mpi2EventDataHostMessage_t, MPI2_POINTER pMpi2EventDataHostMessage_t; + +  /* Hard Reset Received Event data */  typedef struct _MPI2_EVENT_DATA_HARD_RESET_RECEIVED @@ -517,6 +575,7 @@ typedef struct _MPI2_EVENT_DATA_HARD_RESET_RECEIVED    MPI2_POINTER pMpi2EventDataHardResetReceived_t;  /* Task Set Full Event data */ +/*   this event is obsolete */  typedef struct _MPI2_EVENT_DATA_TASK_SET_FULL  { @@ -532,7 +591,7 @@ typedef struct _MPI2_EVENT_DATA_SAS_DEVICE_STATUS_CHANGE  {      U16                     TaskTag;                        /* 0x00 */      U8                      ReasonCode;                     /* 0x02 */ -    U8                      Reserved1;                      /* 0x03 */ +	U8                      PhysicalPort;                   /* 0x03 */      U8                      ASC;                            /* 0x04 */      U8                      ASCQ;                           /* 0x05 */      U16                     DevHandle;                      /* 0x06 */ @@ -569,7 +628,7 @@ typedef struct _MPI2_EVENT_DATA_IR_OPERATION_STATUS      U8                      RAIDOperation;              /* 0x04 */      U8                      PercentComplete;            /* 0x05 */      U16                     Reserved2;                  /* 0x06 */ -    U32                     Resereved3;                 /* 0x08 */ +	U32                     ElapsedSeconds;             /* 0x08 */  } MPI2_EVENT_DATA_IR_OPERATION_STATUS,    MPI2_POINTER PTR_MPI2_EVENT_DATA_IR_OPERATION_STATUS,    Mpi2EventDataIrOperationStatus_t, @@ -745,6 +804,24 @@ typedef struct _MPI2_EVENT_DATA_SAS_BROADCAST_PRIMITIVE  #define MPI2_EVENT_PRIMITIVE_CHANGE0_RESERVED               (0x07)  #define MPI2_EVENT_PRIMITIVE_CHANGE1_RESERVED               (0x08) +/* SAS Notify Primitive Event data */ + +typedef struct _MPI2_EVENT_DATA_SAS_NOTIFY_PRIMITIVE { +	U8                      PhyNum;                     /* 0x00 */ +	U8                      Port;                       /* 0x01 */ +	U8                      Reserved1;                  /* 0x02 */ +	U8                      Primitive;                  /* 0x03 */ +} MPI2_EVENT_DATA_SAS_NOTIFY_PRIMITIVE, +MPI2_POINTER PTR_MPI2_EVENT_DATA_SAS_NOTIFY_PRIMITIVE, +Mpi2EventDataSasNotifyPrimitive_t, +MPI2_POINTER pMpi2EventDataSasNotifyPrimitive_t; + +/* defines for the Primitive field */ +#define MPI2_EVENT_NOTIFY_ENABLE_SPINUP                     (0x01) +#define MPI2_EVENT_NOTIFY_POWER_LOSS_EXPECTED               (0x02) +#define MPI2_EVENT_NOTIFY_RESERVED1                         (0x03) +#define MPI2_EVENT_NOTIFY_RESERVED2                         (0x04) +  /* SAS Initiator Device Status Change Event data */ @@ -831,6 +908,7 @@ typedef struct _MPI2_EVENT_DATA_SAS_TOPOLOGY_CHANGE_LIST  #define MPI2_EVENT_SAS_TOPO_LR_SATA_OOB_COMPLETE            (0x03)  #define MPI2_EVENT_SAS_TOPO_LR_PORT_SELECTOR                (0x04)  #define MPI2_EVENT_SAS_TOPO_LR_SMP_RESET_IN_PROGRESS        (0x05) +#define MPI2_EVENT_SAS_TOPO_LR_UNSUPPORTED_PHY              (0x06)  #define MPI2_EVENT_SAS_TOPO_LR_RATE_1_5                     (0x08)  #define MPI2_EVENT_SAS_TOPO_LR_RATE_3_0                     (0x09)  #define MPI2_EVENT_SAS_TOPO_LR_RATE_6_0                     (0x0A) @@ -996,6 +1074,53 @@ typedef struct _MPI2_EVENT_ACK_REPLY  /**************************************************************************** +*  SendHostMessage message +****************************************************************************/ + +/* SendHostMessage Request message */ +typedef struct _MPI2_SEND_HOST_MESSAGE_REQUEST { +	U16                     HostDataLength;                 /* 0x00 */ +	U8                      ChainOffset;                    /* 0x02 */ +	U8                      Function;                       /* 0x03 */ +	U16                     Reserved1;                      /* 0x04 */ +	U8                      Reserved2;                      /* 0x06 */ +	U8                      MsgFlags;                       /* 0x07 */ +	U8                      VP_ID;                          /* 0x08 */ +	U8                      VF_ID;                          /* 0x09 */ +	U16                     Reserved3;                      /* 0x0A */ +	U8                      Reserved4;                      /* 0x0C */ +	U8                      DestVF_ID;                      /* 0x0D */ +	U16                     Reserved5;                      /* 0x0E */ +	U32                     Reserved6;                      /* 0x10 */ +	U32                     Reserved7;                      /* 0x14 */ +	U32                     Reserved8;                      /* 0x18 */ +	U32                     Reserved9;                      /* 0x1C */ +	U32                     Reserved10;                     /* 0x20 */ +	U32                     HostData[1];                    /* 0x24 */ +} MPI2_SEND_HOST_MESSAGE_REQUEST, +MPI2_POINTER PTR_MPI2_SEND_HOST_MESSAGE_REQUEST, +Mpi2SendHostMessageRequest_t, MPI2_POINTER pMpi2SendHostMessageRequest_t; + + +/* SendHostMessage Reply message */ +typedef struct _MPI2_SEND_HOST_MESSAGE_REPLY { +	U16                     HostDataLength;                 /* 0x00 */ +	U8                      MsgLength;                      /* 0x02 */ +	U8                      Function;                       /* 0x03 */ +	U16                     Reserved1;                      /* 0x04 */ +	U8                      Reserved2;                      /* 0x06 */ +	U8                      MsgFlags;                       /* 0x07 */ +	U8                      VP_ID;                          /* 0x08 */ +	U8                      VF_ID;                          /* 0x09 */ +	U16                     Reserved3;                      /* 0x0A */ +	U16                     Reserved4;                      /* 0x0C */ +	U16                     IOCStatus;                      /* 0x0E */ +	U32                     IOCLogInfo;                     /* 0x10 */ +} MPI2_SEND_HOST_MESSAGE_REPLY, MPI2_POINTER PTR_MPI2_SEND_HOST_MESSAGE_REPLY, +Mpi2SendHostMessageReply_t, MPI2_POINTER pMpi2SendHostMessageReply_t; + + +/****************************************************************************  *  FWDownload message  ****************************************************************************/ @@ -1028,6 +1153,7 @@ typedef struct _MPI2_FW_DOWNLOAD_REQUEST  #define MPI2_FW_DOWNLOAD_ITYPE_MEGARAID             (0x09)  #define MPI2_FW_DOWNLOAD_ITYPE_COMPLETE             (0x0A)  #define MPI2_FW_DOWNLOAD_ITYPE_COMMON_BOOT_BLOCK    (0x0B) +#define MPI2_FW_DOWNLOAD_ITYPE_MIN_PRODUCT_SPECIFIC (0xF0)  /* FWDownload TransactionContext Element */  typedef struct _MPI2_FW_DOWNLOAD_TCSGE @@ -1253,16 +1379,18 @@ typedef struct _MPI2_EXT_IMAGE_HEADER  #define MPI2_EXT_IMAGE_HEADER_SIZE              (0x40)  /* defines for the ImageType field */ -#define MPI2_EXT_IMAGE_TYPE_UNSPECIFIED         (0x00) -#define MPI2_EXT_IMAGE_TYPE_FW                  (0x01) -#define MPI2_EXT_IMAGE_TYPE_NVDATA              (0x03) -#define MPI2_EXT_IMAGE_TYPE_BOOTLOADER          (0x04) -#define MPI2_EXT_IMAGE_TYPE_INITIALIZATION      (0x05) -#define MPI2_EXT_IMAGE_TYPE_FLASH_LAYOUT        (0x06) -#define MPI2_EXT_IMAGE_TYPE_SUPPORTED_DEVICES   (0x07) -#define MPI2_EXT_IMAGE_TYPE_MEGARAID            (0x08) - -#define MPI2_EXT_IMAGE_TYPE_MAX                 (MPI2_EXT_IMAGE_TYPE_MEGARAID) +#define MPI2_EXT_IMAGE_TYPE_UNSPECIFIED				(0x00) +#define MPI2_EXT_IMAGE_TYPE_FW						(0x01) +#define MPI2_EXT_IMAGE_TYPE_NVDATA					(0x03) +#define MPI2_EXT_IMAGE_TYPE_BOOTLOADER				(0x04) +#define MPI2_EXT_IMAGE_TYPE_INITIALIZATION			(0x05) +#define MPI2_EXT_IMAGE_TYPE_FLASH_LAYOUT			(0x06) +#define MPI2_EXT_IMAGE_TYPE_SUPPORTED_DEVICES		(0x07) +#define MPI2_EXT_IMAGE_TYPE_MEGARAID				(0x08) +#define MPI2_EXT_IMAGE_TYPE_MIN_PRODUCT_SPECIFIC    (0x80) +#define MPI2_EXT_IMAGE_TYPE_MAX_PRODUCT_SPECIFIC    (0xFF) +#define MPI2_EXT_IMAGE_TYPE_MAX                   \ +	(MPI2_EXT_IMAGE_TYPE_MAX_PRODUCT_SPECIFIC)	/* deprecated */ @@ -1455,7 +1583,7 @@ typedef struct _MPI2_PWR_MGMT_CONTROL_REQUEST {  /* defines for the Feature field */  #define MPI2_PM_CONTROL_FEATURE_DA_PHY_POWER_COND       (0x01)  #define MPI2_PM_CONTROL_FEATURE_PORT_WIDTH_MODULATION   (0x02) -#define MPI2_PM_CONTROL_FEATURE_PCIE_LINK               (0x03) +#define MPI2_PM_CONTROL_FEATURE_PCIE_LINK               (0x03) /* obsolete */  #define MPI2_PM_CONTROL_FEATURE_IOC_SPEED               (0x04)  #define MPI2_PM_CONTROL_FEATURE_MIN_PRODUCT_SPECIFIC    (0x80)  #define MPI2_PM_CONTROL_FEATURE_MAX_PRODUCT_SPECIFIC    (0xFF) @@ -1484,14 +1612,14 @@ typedef struct _MPI2_PWR_MGMT_CONTROL_REQUEST {  /* parameter usage for the MPI2_PM_CONTROL_FEATURE_PCIE_LINK Feature */  /* Parameter1 indicates desired PCIe link speed using these defines */ -#define MPI2_PM_CONTROL_PARAM1_PCIE_2_5_GBPS            (0x00) -#define MPI2_PM_CONTROL_PARAM1_PCIE_5_0_GBPS            (0x01) -#define MPI2_PM_CONTROL_PARAM1_PCIE_8_0_GBPS            (0x02) +#define MPI2_PM_CONTROL_PARAM1_PCIE_2_5_GBPS            (0x00) /* obsolete */ +#define MPI2_PM_CONTROL_PARAM1_PCIE_5_0_GBPS            (0x01) /* obsolete */ +#define MPI2_PM_CONTROL_PARAM1_PCIE_8_0_GBPS            (0x02) /* obsolete */  /* Parameter2 indicates desired PCIe link width using these defines */ -#define MPI2_PM_CONTROL_PARAM2_WIDTH_X1                 (0x01) -#define MPI2_PM_CONTROL_PARAM2_WIDTH_X2                 (0x02) -#define MPI2_PM_CONTROL_PARAM2_WIDTH_X4                 (0x04) -#define MPI2_PM_CONTROL_PARAM2_WIDTH_X8                 (0x08) +#define MPI2_PM_CONTROL_PARAM2_WIDTH_X1                 (0x01) /* obsolete */ +#define MPI2_PM_CONTROL_PARAM2_WIDTH_X2                 (0x02) /* obsolete */ +#define MPI2_PM_CONTROL_PARAM2_WIDTH_X4                 (0x04) /* obsolete */ +#define MPI2_PM_CONTROL_PARAM2_WIDTH_X8                 (0x08) /* obsolete */  /* Parameter3 and Parameter4 are reserved */  /* parameter usage for the MPI2_PM_CONTROL_FEATURE_IOC_SPEED Feature */ diff --git a/drivers/scsi/mpt2sas/mpi/mpi2_raid.h b/drivers/scsi/mpt2sas/mpi/mpi2_raid.h index 5160c33d2a0..0d202a2c6db 100644 --- a/drivers/scsi/mpt2sas/mpi/mpi2_raid.h +++ b/drivers/scsi/mpt2sas/mpi/mpi2_raid.h @@ -1,12 +1,12 @@  /* - *  Copyright (c) 2000-2008 LSI Corporation. + *  Copyright (c) 2000-2013 LSI Corporation.   *   *   *           Name:  mpi2_raid.h   *          Title:  MPI Integrated RAID messages and structures   *  Creation Date:  April 26, 2007   * - *    mpi2_raid.h Version:  02.00.04 + *    mpi2_raid.h Version:  02.00.09   *   *  Version History   *  --------------- @@ -22,6 +22,13 @@   *                      can be sized by the build environment.   *  07-30-09  02.00.04  Added proper define for the Use Default Settings bit of   *                      VolumeCreationFlags and marked the old one as obsolete. + *  05-12-10  02.00.05  Added MPI2_RAID_VOL_FLAGS_OP_MDC define. + *  08-24-10  02.00.06  Added MPI2_RAID_ACTION_COMPATIBILITY_CHECK along with + *                      related structures and defines. + *                      Added product-specific range to RAID Action values. + *  02-06-12  02.00.08  Added MPI2_RAID_ACTION_PHYSDISK_HIDDEN. + *  07-26-12  02.00.09  Added ElapsedSeconds field to MPI2_RAID_VOL_INDICATOR. + *                      Added MPI2_RAID_VOL_FLAGS_ELAPSED_SECONDS_VALID define.   *  --------------------------------------------------------------------------   */ @@ -175,7 +182,10 @@ typedef struct _MPI2_RAID_ACTION_REQUEST  #define MPI2_RAID_ACTION_SYSTEM_SHUTDOWN_INITIATED  (0x20)  #define MPI2_RAID_ACTION_START_RAID_FUNCTION        (0x21)  #define MPI2_RAID_ACTION_STOP_RAID_FUNCTION         (0x22) - +#define MPI2_RAID_ACTION_COMPATIBILITY_CHECK        (0x23) +#define MPI2_RAID_ACTION_PHYSDISK_HIDDEN            (0x24) +#define MPI2_RAID_ACTION_MIN_PRODUCT_SPECIFIC       (0x80) +#define MPI2_RAID_ACTION_MAX_PRODUCT_SPECIFIC       (0xFF)  /* RAID Volume Creation Structure */ @@ -243,6 +253,23 @@ typedef struct _MPI2_RAID_ONLINE_CAPACITY_EXPANSION    Mpi2RaidOnlineCapacityExpansion_t,    MPI2_POINTER pMpi2RaidOnlineCapacityExpansion_t; +/* RAID Compatibility Input Structure */ + +typedef struct _MPI2_RAID_COMPATIBILITY_INPUT_STRUCT { +	U16                     SourceDevHandle;               /* 0x00 */ +	U16                     CandidateDevHandle;             /* 0x02 */ +	U32                     Flags;                          /* 0x04 */ +	U32                     Reserved1;                      /* 0x08 */ +	U32                     Reserved2;                      /* 0x0C */ +} MPI2_RAID_COMPATIBILITY_INPUT_STRUCT, +MPI2_POINTER PTR_MPI2_RAID_COMPATIBILITY_INPUT_STRUCT, +Mpi2RaidCompatibilityInputStruct_t, +MPI2_POINTER pMpi2RaidCompatibilityInputStruct_t; + +/* defines for RAID Compatibility Structure Flags field */ +#define MPI2_RAID_COMPAT_SOURCE_IS_VOLUME_FLAG      (0x00000002) +#define MPI2_RAID_COMPAT_REPORT_SOURCE_INFO_FLAG    (0x00000001) +  /* RAID Volume Indicator Structure */ @@ -251,25 +278,59 @@ typedef struct _MPI2_RAID_VOL_INDICATOR      U64                     TotalBlocks;                    /* 0x00 */      U64                     BlocksRemaining;                /* 0x08 */      U32                     Flags;                          /* 0x10 */ +	U32                     ElapsedSeconds;                 /* 0x14 */  } MPI2_RAID_VOL_INDICATOR, MPI2_POINTER PTR_MPI2_RAID_VOL_INDICATOR,    Mpi2RaidVolIndicator_t, MPI2_POINTER pMpi2RaidVolIndicator_t;  /* defines for RAID Volume Indicator Flags field */ +#define MPI2_RAID_VOL_FLAGS_ELAPSED_SECONDS_VALID   (0x80000000) +  #define MPI2_RAID_VOL_FLAGS_OP_MASK                 (0x0000000F)  #define MPI2_RAID_VOL_FLAGS_OP_BACKGROUND_INIT      (0x00000000)  #define MPI2_RAID_VOL_FLAGS_OP_ONLINE_CAP_EXPANSION (0x00000001)  #define MPI2_RAID_VOL_FLAGS_OP_CONSISTENCY_CHECK    (0x00000002)  #define MPI2_RAID_VOL_FLAGS_OP_RESYNC               (0x00000003) - +#define MPI2_RAID_VOL_FLAGS_OP_MDC                  (0x00000004) + +/* RAID Compatibility Result Structure */ + +typedef struct _MPI2_RAID_COMPATIBILITY_RESULT_STRUCT { +	U8                      State;                          /* 0x00 */ +	U8                      Reserved1;                      /* 0x01 */ +	U16                     Reserved2;                      /* 0x02 */ +	U32                     GenericAttributes;              /* 0x04 */ +	U32                     OEMSpecificAttributes;          /* 0x08 */ +	U32                     Reserved3;                      /* 0x0C */ +	U32                     Reserved4;                      /* 0x10 */ +} MPI2_RAID_COMPATIBILITY_RESULT_STRUCT, +MPI2_POINTER PTR_MPI2_RAID_COMPATIBILITY_RESULT_STRUCT, +Mpi2RaidCompatibilityResultStruct_t, +MPI2_POINTER pMpi2RaidCompatibilityResultStruct_t; + +/* defines for RAID Compatibility Result Structure State field */ +#define MPI2_RAID_COMPAT_STATE_COMPATIBLE           (0x00) +#define MPI2_RAID_COMPAT_STATE_NOT_COMPATIBLE       (0x01) + +/* defines for RAID Compatibility Result Structure GenericAttributes field */ +#define MPI2_RAID_COMPAT_GENATTRIB_4K_SECTOR            (0x00000010) + +#define MPI2_RAID_COMPAT_GENATTRIB_MEDIA_MASK           (0x0000000C) +#define MPI2_RAID_COMPAT_GENATTRIB_SOLID_STATE_DRIVE    (0x00000008) +#define MPI2_RAID_COMPAT_GENATTRIB_HARD_DISK_DRIVE      (0x00000004) + +#define MPI2_RAID_COMPAT_GENATTRIB_PROTOCOL_MASK        (0x00000003) +#define MPI2_RAID_COMPAT_GENATTRIB_SAS_PROTOCOL         (0x00000002) +#define MPI2_RAID_COMPAT_GENATTRIB_SATA_PROTOCOL        (0x00000001)  /* RAID Action Reply ActionData union */  typedef union _MPI2_RAID_ACTION_REPLY_DATA  { -    U32                     Word[5]; -    MPI2_RAID_VOL_INDICATOR RaidVolumeIndicator; -    U16                     VolDevHandle; -    U8                      VolumeState; -    U8                      PhysDiskNum; +	U32                                     Word[6]; +	MPI2_RAID_VOL_INDICATOR                 RaidVolumeIndicator; +	U16                                     VolDevHandle; +	U8                                      VolumeState; +	U8                                      PhysDiskNum; +	MPI2_RAID_COMPATIBILITY_RESULT_STRUCT   RaidCompatibilityResult;  } MPI2_RAID_ACTION_REPLY_DATA, MPI2_POINTER PTR_MPI2_RAID_ACTION_REPLY_DATA,    Mpi2RaidActionReplyData_t, MPI2_POINTER pMpi2RaidActionReplyData_t; diff --git a/drivers/scsi/mpt2sas/mpi/mpi2_sas.h b/drivers/scsi/mpt2sas/mpi/mpi2_sas.h index 2d8aeed5139..50b39ccd526 100644 --- a/drivers/scsi/mpt2sas/mpi/mpi2_sas.h +++ b/drivers/scsi/mpt2sas/mpi/mpi2_sas.h @@ -1,12 +1,12 @@  /* - *  Copyright (c) 2000-2007 LSI Corporation. + *  Copyright (c) 2000-2013 LSI Corporation.   *   *   *           Name:  mpi2_sas.h   *          Title:  MPI Serial Attached SCSI structures and definitions   *  Creation Date:  February 9, 2007   * - *  mpi2.h Version:  02.00.03 + *  mpi2_sas.h Version:  02.00.05   *   *  Version History   *  --------------- @@ -20,6 +20,8 @@   *                      Request.   *  10-28-09  02.00.03  Changed the type of SGL in MPI2_SATA_PASSTHROUGH_REQUEST   *                      to MPI2_SGE_IO_UNION since it supports chained SGLs. + *  05-12-10  02.00.04  Modified some comments. + *  08-11-10  02.00.05  Added NCQ operations to SAS IO Unit Control.   *  --------------------------------------------------------------------------   */ @@ -110,7 +112,7 @@ typedef struct _MPI2_SMP_PASSTHROUGH_REQUEST  /* values for PassthroughFlags field */  #define MPI2_SMP_PT_REQ_PT_FLAGS_IMMEDIATE      (0x80) -/* values for SGLFlags field are in the SGL section of mpi2.h */ +/* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */  /* SMP Passthrough Reply Message */ @@ -162,7 +164,7 @@ typedef struct _MPI2_SATA_PASSTHROUGH_REQUEST      U32                     Reserved4;          /* 0x14 */      U32                     DataLength;         /* 0x18 */      U8                      CommandFIS[20];     /* 0x1C */ -    MPI2_SGE_IO_UNION       SGL;                /* 0x20 */ +    MPI2_SGE_IO_UNION       SGL;                /* 0x30 */  } MPI2_SATA_PASSTHROUGH_REQUEST, MPI2_POINTER PTR_MPI2_SATA_PASSTHROUGH_REQUEST,    Mpi2SataPassthroughRequest_t, MPI2_POINTER pMpi2SataPassthroughRequest_t; @@ -174,7 +176,7 @@ typedef struct _MPI2_SATA_PASSTHROUGH_REQUEST  #define MPI2_SATA_PT_REQ_PT_FLAGS_WRITE             (0x0002)  #define MPI2_SATA_PT_REQ_PT_FLAGS_READ              (0x0001) -/* values for SGLFlags field are in the SGL section of mpi2.h */ +/* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */  /* SATA Passthrough Reply Message */ @@ -245,6 +247,8 @@ typedef struct _MPI2_SAS_IOUNIT_CONTROL_REQUEST  #define MPI2_SAS_OP_REMOVE_DEVICE               (0x0D)  #define MPI2_SAS_OP_LOOKUP_MAPPING              (0x0E)  #define MPI2_SAS_OP_SET_IOC_PARAMETER           (0x0F) +#define MPI2_SAS_OP_DEV_ENABLE_NCQ              (0x14) +#define MPI2_SAS_OP_DEV_DISABLE_NCQ             (0x15)  #define MPI2_SAS_OP_PRODUCT_SPECIFIC_MIN        (0x80)  /* values for the PrimFlags field */ diff --git a/drivers/scsi/mpt2sas/mpi/mpi2_tool.h b/drivers/scsi/mpt2sas/mpi/mpi2_tool.h index 686b09b8121..11b2ac4e7c6 100644 --- a/drivers/scsi/mpt2sas/mpi/mpi2_tool.h +++ b/drivers/scsi/mpt2sas/mpi/mpi2_tool.h @@ -1,12 +1,12 @@  /* - *  Copyright (c) 2000-2010 LSI Corporation. + *  Copyright (c) 2000-2013 LSI Corporation.   *   *   *           Name:  mpi2_tool.h   *          Title:  MPI diagnostic tool structures and definitions   *  Creation Date:  March 26, 2007   * - *    mpi2_tool.h Version:  02.00.04 + *    mpi2_tool.h Version:  02.00.10   *   *  Version History   *  --------------- @@ -22,6 +22,13 @@   *                      and reply messages.   *                      Added MPI2_DIAG_BUF_TYPE_EXTENDED.   *                      Incremented MPI2_DIAG_BUF_TYPE_COUNT. + *  05-12-10  02.00.05  Added Diagnostic Data Upload tool. + *  08-11-10  02.00.06  Added defines that were missing for Diagnostic Buffer + *                      Post Request. + *  05-25-11  02.00.07  Added Flags field and related defines to + *                      MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST. + *  07-26-12  02.00.10  Modified MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST so that + *			it uses MPI Chain SGE as well as MPI Simple SGE.   *  --------------------------------------------------------------------------   */ @@ -37,6 +44,7 @@  /* defines for the Tools */  #define MPI2_TOOLBOX_CLEAN_TOOL                     (0x00)  #define MPI2_TOOLBOX_MEMORY_MOVE_TOOL               (0x01) +#define MPI2_TOOLBOX_DIAG_DATA_UPLOAD_TOOL          (0x02)  #define MPI2_TOOLBOX_ISTWI_READ_WRITE_TOOL          (0x03)  #define MPI2_TOOLBOX_BEACON_TOOL                    (0x05)  #define MPI2_TOOLBOX_DIAGNOSTIC_CLI_TOOL            (0x06) @@ -102,8 +110,7 @@ typedef struct _MPI2_TOOLBOX_CLEAN_REQUEST  *  Toolbox Memory Move request  ****************************************************************************/ -typedef struct _MPI2_TOOLBOX_MEM_MOVE_REQUEST -{ +typedef struct _MPI2_TOOLBOX_MEM_MOVE_REQUEST {      U8                      Tool;                       /* 0x00 */      U8                      Reserved1;                  /* 0x01 */      U8                      ChainOffset;                /* 0x02 */ @@ -120,6 +127,44 @@ typedef struct _MPI2_TOOLBOX_MEM_MOVE_REQUEST  /**************************************************************************** +*  Toolbox Diagnostic Data Upload request +****************************************************************************/ + +typedef struct _MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST { +	U8                      Tool;                       /* 0x00 */ +	U8                      Reserved1;                  /* 0x01 */ +	U8                      ChainOffset;                /* 0x02 */ +	U8                      Function;                   /* 0x03 */ +	U16                     Reserved2;                  /* 0x04 */ +	U8                      Reserved3;                  /* 0x06 */ +	U8                      MsgFlags;                   /* 0x07 */ +	U8                      VP_ID;                      /* 0x08 */ +	U8                      VF_ID;                      /* 0x09 */ +	U16                     Reserved4;                  /* 0x0A */ +	U8                      SGLFlags;                   /* 0x0C */ +	U8                      Reserved5;                  /* 0x0D */ +	U16                     Reserved6;                  /* 0x0E */ +	U32                     Flags;                      /* 0x10 */ +	U32                     DataLength;                 /* 0x14 */ +	MPI2_SGE_SIMPLE_UNION   SGL;                        /* 0x18 */ +} MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST, +MPI2_POINTER PTR_MPI2_TOOLBOX_DIAG_DATA_UPLOAD_REQUEST, +Mpi2ToolboxDiagDataUploadRequest_t, +MPI2_POINTER pMpi2ToolboxDiagDataUploadRequest_t; + +/* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */ + + +typedef struct _MPI2_DIAG_DATA_UPLOAD_HEADER { +	U32                     DiagDataLength;             /* 00h */ +	U8                      FormatCode;                 /* 04h */ +	U8                      Reserved1;                  /* 05h */ +	U16                     Reserved2;                  /* 06h */ +} MPI2_DIAG_DATA_UPLOAD_HEADER, MPI2_POINTER PTR_MPI2_DIAG_DATA_UPLOAD_HEADER, +Mpi2DiagDataUploadHeader_t, MPI2_POINTER pMpi2DiagDataUploadHeader_t; + + +/****************************************************************************  *  Toolbox ISTWI Read Write Tool  ****************************************************************************/ @@ -140,7 +185,7 @@ typedef struct _MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST {      U8                      DevIndex;                   /* 0x14 */      U8                      Action;                     /* 0x15 */      U8                      SGLFlags;                   /* 0x16 */ -    U8                      Reserved7;                  /* 0x17 */ +	 U8                      Flags;                      /* 0x17 */      U16                     TxDataLength;               /* 0x18 */      U16                     RxDataLength;               /* 0x1A */      U32                     Reserved8;                  /* 0x1C */ @@ -162,8 +207,11 @@ typedef struct _MPI2_TOOLBOX_ISTWI_READ_WRITE_REQUEST {  #define MPI2_TOOL_ISTWI_ACTION_RELEASE_BUS          (0x11)  #define MPI2_TOOL_ISTWI_ACTION_RESET                (0x12) -/* values for SGLFlags field are in the SGL section of mpi2.h */ +/* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */ +/* values for the Flags field */ +#define MPI2_TOOL_ISTWI_FLAG_AUTO_RESERVE_RELEASE   (0x80) +#define MPI2_TOOL_ISTWI_FLAG_PAGE_ADDR_MASK         (0x07)  /* Toolbox ISTWI Read Write Tool reply message */  typedef struct _MPI2_TOOLBOX_ISTWI_REPLY { @@ -224,7 +272,7 @@ typedef struct _MPI2_TOOLBOX_BEACON_REQUEST  #define MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH    (0x5C) -/* Toolbox Diagnostic CLI Tool request message */ +/* MPI v2.0 Toolbox Diagnostic CLI Tool request message */  typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST {      U8                      Tool;                       /* 0x00 */      U8                      Reserved1;                  /* 0x01 */ @@ -242,13 +290,13 @@ typedef struct _MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST {      U32                     DataLength;                 /* 0x10 */      U8                      DiagnosticCliCommand  		[MPI2_TOOLBOX_DIAG_CLI_CMD_LENGTH];     /* 0x14 */ -    MPI2_SGE_SIMPLE_UNION   SGL;                        /* 0x70 */ +	MPI2_MPI_SGE_IO_UNION   SGL;                        /* 0x70 */  } MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,    MPI2_POINTER PTR_MPI2_TOOLBOX_DIAGNOSTIC_CLI_REQUEST,    Mpi2ToolboxDiagnosticCliRequest_t,    MPI2_POINTER pMpi2ToolboxDiagnosticCliRequest_t; -/* values for SGLFlags field are in the SGL section of mpi2.h */ +/* use MPI2_SGLFLAGS_ defines from mpi2.h for the SGLFlags field */  /* Toolbox Diagnostic CLI Tool reply message */ @@ -315,6 +363,10 @@ typedef struct _MPI2_DIAG_BUFFER_POST_REQUEST  /* count of the number of buffer types */  #define MPI2_DIAG_BUF_TYPE_COUNT                    (0x03) +/* values for the Flags field */ +#define MPI2_DIAG_BUF_FLAG_RELEASE_ON_FULL          (0x00000002) +#define MPI2_DIAG_BUF_FLAG_IMMEDIATE_RELEASE        (0x00000001) +  /****************************************************************************  *  Diagnostic Buffer Post reply diff --git a/drivers/scsi/mpt2sas/mpi/mpi2_type.h b/drivers/scsi/mpt2sas/mpi/mpi2_type.h index cfde017bf16..0b128b68a5e 100644 --- a/drivers/scsi/mpt2sas/mpi/mpi2_type.h +++ b/drivers/scsi/mpt2sas/mpi/mpi2_type.h @@ -1,5 +1,5 @@  /* - *  Copyright (c) 2000-2007 LSI Corporation. + *  Copyright (c) 2000-2013 LSI Corporation.   *   *   *           Name:  mpi2_type.h  | 
