scsi: megaraid_sas: Add support for Crusader controllers
authorShivasharan S <shivasharan.srikanteshwara@broadcom.com>
Thu, 19 Oct 2017 09:48:49 +0000 (02:48 -0700)
committerMartin K. Petersen <martin.petersen@oracle.com>
Wed, 25 Oct 2017 08:55:23 +0000 (04:55 -0400)
Add support for PCI VID/DID 0x1000/0x0015 based MegaRAID controllers.
Since the DID 0x0015 conflicts with DELL PERC5 controllers,
add vendor ID based check specific for DELL PERC5.

Signed-off-by: Kashyap Desai <kashyap.desai@broadcom.com>
Signed-off-by: Shivasharan S <shivasharan.srikanteshwara@broadcom.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/megaraid/megaraid_sas.h
drivers/scsi/megaraid/megaraid_sas_base.c

index 90b9b5d..3f20273 100644 (file)
@@ -57,6 +57,7 @@
 #define PCI_DEVICE_ID_LSI_CUTLASS_52           0x0052
 #define PCI_DEVICE_ID_LSI_CUTLASS_53           0x0053
 #define PCI_DEVICE_ID_LSI_VENTURA                  0x0014
+#define PCI_DEVICE_ID_LSI_CRUSADER                 0x0015
 #define PCI_DEVICE_ID_LSI_HARPOON                  0x0016
 #define PCI_DEVICE_ID_LSI_TOMCAT                   0x0017
 #define PCI_DEVICE_ID_LSI_VENTURA_4PORT                0x001B
index 0db1384..2321ec3 100644 (file)
@@ -161,6 +161,7 @@ static struct pci_device_id megasas_pci_table[] = {
        {PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_CUTLASS_53)},
        /* VENTURA */
        {PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_VENTURA)},
+       {PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_CRUSADER)},
        {PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_HARPOON)},
        {PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_TOMCAT)},
        {PCI_DEVICE(PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_LSI_VENTURA_4PORT)},
@@ -5980,29 +5981,35 @@ fail_set_dma_mask:
  */
 static inline void megasas_set_adapter_type(struct megasas_instance *instance)
 {
-       switch (instance->pdev->device) {
-       case PCI_DEVICE_ID_LSI_VENTURA:
-       case PCI_DEVICE_ID_LSI_HARPOON:
-       case PCI_DEVICE_ID_LSI_TOMCAT:
-       case PCI_DEVICE_ID_LSI_VENTURA_4PORT:
-       case PCI_DEVICE_ID_LSI_CRUSADER_4PORT:
-               instance->adapter_type = VENTURA_SERIES;
-               break;
-       case PCI_DEVICE_ID_LSI_FUSION:
-       case PCI_DEVICE_ID_LSI_PLASMA:
-               instance->adapter_type = THUNDERBOLT_SERIES;
-               break;
-       case PCI_DEVICE_ID_LSI_INVADER:
-       case PCI_DEVICE_ID_LSI_INTRUDER:
-       case PCI_DEVICE_ID_LSI_INTRUDER_24:
-       case PCI_DEVICE_ID_LSI_CUTLASS_52:
-       case PCI_DEVICE_ID_LSI_CUTLASS_53:
-       case PCI_DEVICE_ID_LSI_FURY:
-               instance->adapter_type = INVADER_SERIES;
-               break;
-       default: /* For all other supported controllers */
+       if ((instance->pdev->vendor == PCI_VENDOR_ID_DELL) &&
+           (instance->pdev->device == PCI_DEVICE_ID_DELL_PERC5)) {
                instance->adapter_type = MFI_SERIES;
-               break;
+       } else {
+               switch (instance->pdev->device) {
+               case PCI_DEVICE_ID_LSI_VENTURA:
+               case PCI_DEVICE_ID_LSI_CRUSADER:
+               case PCI_DEVICE_ID_LSI_HARPOON:
+               case PCI_DEVICE_ID_LSI_TOMCAT:
+               case PCI_DEVICE_ID_LSI_VENTURA_4PORT:
+               case PCI_DEVICE_ID_LSI_CRUSADER_4PORT:
+                       instance->adapter_type = VENTURA_SERIES;
+                       break;
+               case PCI_DEVICE_ID_LSI_FUSION:
+               case PCI_DEVICE_ID_LSI_PLASMA:
+                       instance->adapter_type = THUNDERBOLT_SERIES;
+                       break;
+               case PCI_DEVICE_ID_LSI_INVADER:
+               case PCI_DEVICE_ID_LSI_INTRUDER:
+               case PCI_DEVICE_ID_LSI_INTRUDER_24:
+               case PCI_DEVICE_ID_LSI_CUTLASS_52:
+               case PCI_DEVICE_ID_LSI_CUTLASS_53:
+               case PCI_DEVICE_ID_LSI_FURY:
+                       instance->adapter_type = INVADER_SERIES;
+                       break;
+               default: /* For all other supported controllers */
+                       instance->adapter_type = MFI_SERIES;
+                       break;
+               }
        }
 }