[SCSI] lpfc 8.1.1 : Add support for more members of the Light Pulse 11xxx (4Gb) family

Signed-off-by: James Smart <James.Smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index dfd59d2..1ab3dac 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -759,15 +759,15 @@
 lpfc_get_hba_model_desc(struct lpfc_hba * phba, uint8_t * mdp, uint8_t * descp)
 {
 	lpfc_vpd_t *vp;
-	uint32_t id;
+	uint16_t dev_id;
 	uint8_t hdrtype;
 	char str[16];
 
 	vp = &phba->vpd;
-	pci_read_config_dword(phba->pcidev, PCI_VENDOR_ID, &id);
+	pci_read_config_word(phba->pcidev, PCI_DEVICE_ID, &dev_id);
 	pci_read_config_byte(phba->pcidev, PCI_HEADER_TYPE, &hdrtype);
 
-	switch ((id >> 16) & 0xffff) {
+	switch (dev_id) {
 	case PCI_DEVICE_ID_FIREFLY:
 		strcpy(str, "LP6000 1");
 		break;
@@ -816,6 +816,24 @@
 		else
 			strcpy(str, "LP11000 4");
 		break;
+	case PCI_DEVICE_ID_HELIOS_SCSP:
+		strcpy(str, "LP11000-SP 4");
+		break;
+	case PCI_DEVICE_ID_HELIOS_DCSP:
+		strcpy(str, "LP11002-SP 4");
+		break;
+	case PCI_DEVICE_ID_NEPTUNE:
+		if (hdrtype == 0x80)
+			strcpy(str, "LPe1002 4");
+		else
+			strcpy(str, "LPe1000 4");
+		break;
+	case PCI_DEVICE_ID_NEPTUNE_SCSP:
+		strcpy(str, "LPe1000-SP 4");
+		break;
+	case PCI_DEVICE_ID_NEPTUNE_DCSP:
+		strcpy(str, "LPe1002-SP 4");
+		break;
 	case PCI_DEVICE_ID_BMID:
 		strcpy(str, "LP1150 4");
 		break;
@@ -828,6 +846,12 @@
 		else
 			strcpy(str, "LPe11000 4");
 		break;
+	case PCI_DEVICE_ID_ZEPHYR_SCSP:
+		strcpy(str, "LPe11000-SP 4");
+		break;
+	case PCI_DEVICE_ID_ZEPHYR_DCSP:
+		strcpy(str, "LPe11002-SP 4");
+		break;
 	case PCI_DEVICE_ID_ZMID:
 		strcpy(str, "LPe1150 4");
 		break;
@@ -843,6 +867,18 @@
 	default:
 		memset(str, 0, 16);
 		break;
+	case PCI_DEVICE_ID_LP11000S:
+		if (hdrtype == 0x80)
+			strcpy(str, "LP11002-S 4");
+		else
+			strcpy(str, "LP11000-S 4");
+		break;
+	case PCI_DEVICE_ID_LPE11000S:
+		if (hdrtype == 0x80)
+			strcpy(str, "LPe11002-S 4");
+		else
+			strcpy(str, "LPe11000-S 4");
+		break;
 	}
 	if (mdp)
 		sscanf(str, "%s", mdp);
@@ -1673,14 +1709,28 @@
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_PFLY,
 		PCI_ANY_ID, PCI_ANY_ID, },
+	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_NEPTUNE,
+		PCI_ANY_ID, PCI_ANY_ID, },
+	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_NEPTUNE_SCSP,
+		PCI_ANY_ID, PCI_ANY_ID, },
+	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_NEPTUNE_DCSP,
+		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS,
 		PCI_ANY_ID, PCI_ANY_ID, },
+	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS_SCSP,
+		PCI_ANY_ID, PCI_ANY_ID, },
+	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS_DCSP,
+		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BMID,
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BSMB,
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR,
 		PCI_ANY_ID, PCI_ANY_ID, },
+	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR_SCSP,
+		PCI_ANY_ID, PCI_ANY_ID, },
+	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR_DCSP,
+		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZMID,
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZSMB,
@@ -1691,6 +1741,10 @@
 		PCI_ANY_ID, PCI_ANY_ID, },
 	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LP10000S,
 		PCI_ANY_ID, PCI_ANY_ID, },
+	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LP11000S,
+		PCI_ANY_ID, PCI_ANY_ID, },
+	{PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LPE11000S,
+		PCI_ANY_ID, PCI_ANY_ID, },
 	{ 0 }
 };