[SCSI] stex: Fix for controller type st_yosemite
authorEd Lin - PTU <ed.lin@promise.com>
Mon, 26 Jan 2009 10:40:50 +0000 (02:40 -0800)
committerJames Bottomley <James.Bottomley@HansenPartnership.com>
Thu, 12 Mar 2009 17:58:04 +0000 (12:58 -0500)
This is the fix for controller type st_yosemite, including
- max_lun is 256 (backward compatible)
- remove unneeded special handling of INQUIRY
- remove unnecessary listing of sub device ids

Signed-off-by: Ed Lin <ed.lin@promise.com>
Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
drivers/scsi/stex.c

index 12dc0d176f3f9b7a8e1340e7f68853c13e3da362..425a61c79bb627b6637d1a8ba4b7ae404d3ef062 100644 (file)
@@ -153,35 +153,6 @@ enum {
        ST_ADDITIONAL_MEM                       = 0x200000,
 };
 
-/* SCSI inquiry data */
-typedef struct st_inq {
-       u8 DeviceType                   :5;
-       u8 DeviceTypeQualifier          :3;
-       u8 DeviceTypeModifier           :7;
-       u8 RemovableMedia               :1;
-       u8 Versions;
-       u8 ResponseDataFormat           :4;
-       u8 HiSupport                    :1;
-       u8 NormACA                      :1;
-       u8 ReservedBit                  :1;
-       u8 AERC                         :1;
-       u8 AdditionalLength;
-       u8 Reserved[2];
-       u8 SoftReset                    :1;
-       u8 CommandQueue                 :1;
-       u8 Reserved2                    :1;
-       u8 LinkedCommands               :1;
-       u8 Synchronous                  :1;
-       u8 Wide16Bit                    :1;
-       u8 Wide32Bit                    :1;
-       u8 RelativeAddressing           :1;
-       u8 VendorId[8];
-       u8 ProductId[16];
-       u8 ProductRevisionLevel[4];
-       u8 VendorSpecific[20];
-       u8 Reserved3[40];
-} ST_INQ;
-
 struct st_sgitem {
        u8 ctrl;        /* SG_CF_xxx */
        u8 reserved[3];
@@ -285,7 +256,7 @@ struct st_drvver {
 #define MU_REQ_BUFFER_SIZE     (MU_REQ_COUNT * sizeof(struct req_msg))
 #define MU_STATUS_BUFFER_SIZE  (MU_STATUS_COUNT * sizeof(struct status_msg))
 #define MU_BUFFER_SIZE         (MU_REQ_BUFFER_SIZE + MU_STATUS_BUFFER_SIZE)
-#define STEX_EXTRA_SIZE                max(sizeof(struct st_frame), sizeof(ST_INQ))
+#define STEX_EXTRA_SIZE                sizeof(struct st_frame)
 #define STEX_BUFFER_SIZE       (MU_BUFFER_SIZE + STEX_EXTRA_SIZE)
 
 struct st_ccb {
@@ -662,24 +633,6 @@ static void stex_ys_commands(struct st_hba *hba,
                resp->scsi_status != SAM_STAT_CHECK_CONDITION) {
                scsi_set_resid(ccb->cmd, scsi_bufflen(ccb->cmd) -
                        le32_to_cpu(*(__le32 *)&resp->variable[0]));
-               return;
-       }
-
-       if (resp->srb_status != 0)
-               return;
-
-       /* determine inquiry command status by DeviceTypeQualifier */
-       if (ccb->cmd->cmnd[0] == INQUIRY &&
-               resp->scsi_status == SAM_STAT_GOOD) {
-               ST_INQ *inq_data;
-
-               scsi_sg_copy_to_buffer(ccb->cmd, hba->copy_buffer,
-                                      STEX_EXTRA_SIZE);
-               inq_data = (ST_INQ *)hba->copy_buffer;
-               if (inq_data->DeviceTypeQualifier != 0)
-                       ccb->srb_status = SRB_STATUS_SELECTION_TIMEOUT;
-               else
-                       ccb->srb_status = SRB_STATUS_SUCCESS;
        }
 }
 
@@ -1148,7 +1101,7 @@ stex_probe(struct pci_dev *pdev, const struct pci_device_id *id)
                host->max_lun = 8;
                host->max_id = 16 + 1;
        } else if (hba->cardtype == st_yosemite) {
-               host->max_lun = 128;
+               host->max_lun = 256;
                host->max_id = 1 + 1;
        } else {
                /* st_vsc , st_vsc1 and st_seq */
@@ -1301,18 +1254,7 @@ static struct pci_device_id stex_pci_tbl[] = {
        { 0x105a, 0x7250, PCI_ANY_ID, PCI_ANY_ID, 0, 0, st_vsc },
 
        /* st_yosemite */
-       { 0x105a, 0x8650, PCI_ANY_ID, 0x4600, 0, 0,
-               st_yosemite }, /* SuperTrak EX4650 */
-       { 0x105a, 0x8650, PCI_ANY_ID, 0x4610, 0, 0,
-               st_yosemite }, /* SuperTrak EX4650o */
-       { 0x105a, 0x8650, PCI_ANY_ID, 0x8600, 0, 0,
-               st_yosemite }, /* SuperTrak EX8650EL */
-       { 0x105a, 0x8650, PCI_ANY_ID, 0x8601, 0, 0,
-               st_yosemite }, /* SuperTrak EX8650 */
-       { 0x105a, 0x8650, PCI_ANY_ID, 0x8602, 0, 0,
-               st_yosemite }, /* SuperTrak EX8654 */
-       { 0x105a, 0x8650, PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-               st_yosemite }, /* generic st_yosemite */
+       { 0x105a, 0x8650, PCI_ANY_ID, PCI_ANY_ID, 0, 0, st_yosemite },
 
        /* st_seq */
        { 0x105a, 0x3360, PCI_ANY_ID, PCI_ANY_ID, 0, 0, st_seq },