aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/scsi/lpfc/lpfc_hw.h25
-rw-r--r--drivers/scsi/lpfc/lpfc_init.c60
2 files changed, 74 insertions, 11 deletions
diff --git a/drivers/scsi/lpfc/lpfc_hw.h b/drivers/scsi/lpfc/lpfc_hw.h
index bf0c25fa873a..4f0029301412 100644
--- a/drivers/scsi/lpfc/lpfc_hw.h
+++ b/drivers/scsi/lpfc/lpfc_hw.h
@@ -1027,23 +1027,32 @@ typedef struct {
1027/* Start FireFly Register definitions */ 1027/* Start FireFly Register definitions */
1028#define PCI_VENDOR_ID_EMULEX 0x10df 1028#define PCI_VENDOR_ID_EMULEX 0x10df
1029#define PCI_DEVICE_ID_FIREFLY 0x1ae5 1029#define PCI_DEVICE_ID_FIREFLY 0x1ae5
1030#define PCI_DEVICE_ID_SUPERFLY 0xf700
1031#define PCI_DEVICE_ID_DRAGONFLY 0xf800
1032#define PCI_DEVICE_ID_RFLY 0xf095 1030#define PCI_DEVICE_ID_RFLY 0xf095
1033#define PCI_DEVICE_ID_PFLY 0xf098 1031#define PCI_DEVICE_ID_PFLY 0xf098
1032#define PCI_DEVICE_ID_LP101 0xf0a1
1034#define PCI_DEVICE_ID_TFLY 0xf0a5 1033#define PCI_DEVICE_ID_TFLY 0xf0a5
1034#define PCI_DEVICE_ID_BSMB 0xf0d1
1035#define PCI_DEVICE_ID_BMID 0xf0d5
1036#define PCI_DEVICE_ID_ZSMB 0xf0e1
1037#define PCI_DEVICE_ID_ZMID 0xf0e5
1038#define PCI_DEVICE_ID_NEPTUNE 0xf0f5
1039#define PCI_DEVICE_ID_NEPTUNE_SCSP 0xf0f6
1040#define PCI_DEVICE_ID_NEPTUNE_DCSP 0xf0f7
1041#define PCI_DEVICE_ID_SUPERFLY 0xf700
1042#define PCI_DEVICE_ID_DRAGONFLY 0xf800
1035#define PCI_DEVICE_ID_CENTAUR 0xf900 1043#define PCI_DEVICE_ID_CENTAUR 0xf900
1036#define PCI_DEVICE_ID_PEGASUS 0xf980 1044#define PCI_DEVICE_ID_PEGASUS 0xf980
1037#define PCI_DEVICE_ID_THOR 0xfa00 1045#define PCI_DEVICE_ID_THOR 0xfa00
1038#define PCI_DEVICE_ID_VIPER 0xfb00 1046#define PCI_DEVICE_ID_VIPER 0xfb00
1047#define PCI_DEVICE_ID_LP10000S 0xfc00
1048#define PCI_DEVICE_ID_LP11000S 0xfc10
1049#define PCI_DEVICE_ID_LPE11000S 0xfc20
1039#define PCI_DEVICE_ID_HELIOS 0xfd00 1050#define PCI_DEVICE_ID_HELIOS 0xfd00
1040#define PCI_DEVICE_ID_BMID 0xf0d5 1051#define PCI_DEVICE_ID_HELIOS_SCSP 0xfd11
1041#define PCI_DEVICE_ID_BSMB 0xf0d1 1052#define PCI_DEVICE_ID_HELIOS_DCSP 0xfd12
1042#define PCI_DEVICE_ID_ZEPHYR 0xfe00 1053#define PCI_DEVICE_ID_ZEPHYR 0xfe00
1043#define PCI_DEVICE_ID_ZMID 0xf0e5 1054#define PCI_DEVICE_ID_ZEPHYR_SCSP 0xfe11
1044#define PCI_DEVICE_ID_ZSMB 0xf0e1 1055#define PCI_DEVICE_ID_ZEPHYR_DCSP 0xfe12
1045#define PCI_DEVICE_ID_LP101 0xf0a1
1046#define PCI_DEVICE_ID_LP10000S 0xfc00
1047 1056
1048#define JEDEC_ID_ADDRESS 0x0080001c 1057#define JEDEC_ID_ADDRESS 0x0080001c
1049#define FIREFLY_JEDEC_ID 0x1ACC 1058#define FIREFLY_JEDEC_ID 0x1ACC
diff --git a/drivers/scsi/lpfc/lpfc_init.c b/drivers/scsi/lpfc/lpfc_init.c
index dfd59d21ec49..1ab3dac7b632 100644
--- a/drivers/scsi/lpfc/lpfc_init.c
+++ b/drivers/scsi/lpfc/lpfc_init.c
@@ -759,15 +759,15 @@ static void
759lpfc_get_hba_model_desc(struct lpfc_hba * phba, uint8_t * mdp, uint8_t * descp) 759lpfc_get_hba_model_desc(struct lpfc_hba * phba, uint8_t * mdp, uint8_t * descp)
760{ 760{
761 lpfc_vpd_t *vp; 761 lpfc_vpd_t *vp;
762 uint32_t id; 762 uint16_t dev_id;
763 uint8_t hdrtype; 763 uint8_t hdrtype;
764 char str[16]; 764 char str[16];
765 765
766 vp = &phba->vpd; 766 vp = &phba->vpd;
767 pci_read_config_dword(phba->pcidev, PCI_VENDOR_ID, &id); 767 pci_read_config_word(phba->pcidev, PCI_DEVICE_ID, &dev_id);
768 pci_read_config_byte(phba->pcidev, PCI_HEADER_TYPE, &hdrtype); 768 pci_read_config_byte(phba->pcidev, PCI_HEADER_TYPE, &hdrtype);
769 769
770 switch ((id >> 16) & 0xffff) { 770 switch (dev_id) {
771 case PCI_DEVICE_ID_FIREFLY: 771 case PCI_DEVICE_ID_FIREFLY:
772 strcpy(str, "LP6000 1"); 772 strcpy(str, "LP6000 1");
773 break; 773 break;
@@ -816,6 +816,24 @@ lpfc_get_hba_model_desc(struct lpfc_hba * phba, uint8_t * mdp, uint8_t * descp)
816 else 816 else
817 strcpy(str, "LP11000 4"); 817 strcpy(str, "LP11000 4");
818 break; 818 break;
819 case PCI_DEVICE_ID_HELIOS_SCSP:
820 strcpy(str, "LP11000-SP 4");
821 break;
822 case PCI_DEVICE_ID_HELIOS_DCSP:
823 strcpy(str, "LP11002-SP 4");
824 break;
825 case PCI_DEVICE_ID_NEPTUNE:
826 if (hdrtype == 0x80)
827 strcpy(str, "LPe1002 4");
828 else
829 strcpy(str, "LPe1000 4");
830 break;
831 case PCI_DEVICE_ID_NEPTUNE_SCSP:
832 strcpy(str, "LPe1000-SP 4");
833 break;
834 case PCI_DEVICE_ID_NEPTUNE_DCSP:
835 strcpy(str, "LPe1002-SP 4");
836 break;
819 case PCI_DEVICE_ID_BMID: 837 case PCI_DEVICE_ID_BMID:
820 strcpy(str, "LP1150 4"); 838 strcpy(str, "LP1150 4");
821 break; 839 break;
@@ -828,6 +846,12 @@ lpfc_get_hba_model_desc(struct lpfc_hba * phba, uint8_t * mdp, uint8_t * descp)
828 else 846 else
829 strcpy(str, "LPe11000 4"); 847 strcpy(str, "LPe11000 4");
830 break; 848 break;
849 case PCI_DEVICE_ID_ZEPHYR_SCSP:
850 strcpy(str, "LPe11000-SP 4");
851 break;
852 case PCI_DEVICE_ID_ZEPHYR_DCSP:
853 strcpy(str, "LPe11002-SP 4");
854 break;
831 case PCI_DEVICE_ID_ZMID: 855 case PCI_DEVICE_ID_ZMID:
832 strcpy(str, "LPe1150 4"); 856 strcpy(str, "LPe1150 4");
833 break; 857 break;
@@ -843,6 +867,18 @@ lpfc_get_hba_model_desc(struct lpfc_hba * phba, uint8_t * mdp, uint8_t * descp)
843 default: 867 default:
844 memset(str, 0, 16); 868 memset(str, 0, 16);
845 break; 869 break;
870 case PCI_DEVICE_ID_LP11000S:
871 if (hdrtype == 0x80)
872 strcpy(str, "LP11002-S 4");
873 else
874 strcpy(str, "LP11000-S 4");
875 break;
876 case PCI_DEVICE_ID_LPE11000S:
877 if (hdrtype == 0x80)
878 strcpy(str, "LPe11002-S 4");
879 else
880 strcpy(str, "LPe11000-S 4");
881 break;
846 } 882 }
847 if (mdp) 883 if (mdp)
848 sscanf(str, "%s", mdp); 884 sscanf(str, "%s", mdp);
@@ -1673,14 +1709,28 @@ static struct pci_device_id lpfc_id_table[] = {
1673 PCI_ANY_ID, PCI_ANY_ID, }, 1709 PCI_ANY_ID, PCI_ANY_ID, },
1674 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_PFLY, 1710 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_PFLY,
1675 PCI_ANY_ID, PCI_ANY_ID, }, 1711 PCI_ANY_ID, PCI_ANY_ID, },
1712 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_NEPTUNE,
1713 PCI_ANY_ID, PCI_ANY_ID, },
1714 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_NEPTUNE_SCSP,
1715 PCI_ANY_ID, PCI_ANY_ID, },
1716 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_NEPTUNE_DCSP,
1717 PCI_ANY_ID, PCI_ANY_ID, },
1676 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS, 1718 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS,
1677 PCI_ANY_ID, PCI_ANY_ID, }, 1719 PCI_ANY_ID, PCI_ANY_ID, },
1720 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS_SCSP,
1721 PCI_ANY_ID, PCI_ANY_ID, },
1722 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_HELIOS_DCSP,
1723 PCI_ANY_ID, PCI_ANY_ID, },
1678 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BMID, 1724 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BMID,
1679 PCI_ANY_ID, PCI_ANY_ID, }, 1725 PCI_ANY_ID, PCI_ANY_ID, },
1680 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BSMB, 1726 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_BSMB,
1681 PCI_ANY_ID, PCI_ANY_ID, }, 1727 PCI_ANY_ID, PCI_ANY_ID, },
1682 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR, 1728 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR,
1683 PCI_ANY_ID, PCI_ANY_ID, }, 1729 PCI_ANY_ID, PCI_ANY_ID, },
1730 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR_SCSP,
1731 PCI_ANY_ID, PCI_ANY_ID, },
1732 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZEPHYR_DCSP,
1733 PCI_ANY_ID, PCI_ANY_ID, },
1684 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZMID, 1734 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZMID,
1685 PCI_ANY_ID, PCI_ANY_ID, }, 1735 PCI_ANY_ID, PCI_ANY_ID, },
1686 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZSMB, 1736 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_ZSMB,
@@ -1691,6 +1741,10 @@ static struct pci_device_id lpfc_id_table[] = {
1691 PCI_ANY_ID, PCI_ANY_ID, }, 1741 PCI_ANY_ID, PCI_ANY_ID, },
1692 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LP10000S, 1742 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LP10000S,
1693 PCI_ANY_ID, PCI_ANY_ID, }, 1743 PCI_ANY_ID, PCI_ANY_ID, },
1744 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LP11000S,
1745 PCI_ANY_ID, PCI_ANY_ID, },
1746 {PCI_VENDOR_ID_EMULEX, PCI_DEVICE_ID_LPE11000S,
1747 PCI_ANY_ID, PCI_ANY_ID, },
1694 { 0 } 1748 { 0 }
1695}; 1749};
1696 1750