diff options
-rw-r--r-- | drivers/scsi/lpfc/lpfc_hw.h | 25 | ||||
-rw-r--r-- | drivers/scsi/lpfc/lpfc_init.c | 60 |
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 | |||
759 | lpfc_get_hba_model_desc(struct lpfc_hba * phba, uint8_t * mdp, uint8_t * descp) | 759 | lpfc_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 | ||