diff options
-rw-r--r-- | drivers/scsi/qla2xxx/qla_def.h | 115 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_init.c | 1 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_os.c | 49 | ||||
-rw-r--r-- | drivers/scsi/qla2xxx/qla_sup.c | 5 |
4 files changed, 89 insertions, 81 deletions
diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 2e16f3285d5f..00b7e82b99b3 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h | |||
@@ -31,82 +31,6 @@ | |||
31 | #include <scsi/scsi_cmnd.h> | 31 | #include <scsi/scsi_cmnd.h> |
32 | #include <scsi/scsi_transport_fc.h> | 32 | #include <scsi/scsi_transport_fc.h> |
33 | 33 | ||
34 | #if defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE) | ||
35 | #if defined(CONFIG_SCSI_QLA21XX) || defined(CONFIG_SCSI_QLA21XX_MODULE) | ||
36 | #define IS_QLA2100(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2100) | ||
37 | #else | ||
38 | #define IS_QLA2100(ha) 0 | ||
39 | #endif | ||
40 | |||
41 | #if defined(CONFIG_SCSI_QLA22XX) || defined(CONFIG_SCSI_QLA22XX_MODULE) | ||
42 | #define IS_QLA2200(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2200) | ||
43 | #else | ||
44 | #define IS_QLA2200(ha) 0 | ||
45 | #endif | ||
46 | |||
47 | #if defined(CONFIG_SCSI_QLA2300) || defined(CONFIG_SCSI_QLA2300_MODULE) | ||
48 | #define IS_QLA2300(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2300) | ||
49 | #define IS_QLA2312(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2312) | ||
50 | #else | ||
51 | #define IS_QLA2300(ha) 0 | ||
52 | #define IS_QLA2312(ha) 0 | ||
53 | #endif | ||
54 | |||
55 | #if defined(CONFIG_SCSI_QLA2322) || defined(CONFIG_SCSI_QLA2322_MODULE) | ||
56 | #define IS_QLA2322(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2322) | ||
57 | #else | ||
58 | #define IS_QLA2322(ha) 0 | ||
59 | #endif | ||
60 | |||
61 | #if defined(CONFIG_SCSI_QLA6312) || defined(CONFIG_SCSI_QLA6312_MODULE) | ||
62 | #define IS_QLA6312(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP6312) | ||
63 | #define IS_QLA6322(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP6322) | ||
64 | #else | ||
65 | #define IS_QLA6312(ha) 0 | ||
66 | #define IS_QLA6322(ha) 0 | ||
67 | #endif | ||
68 | |||
69 | #if defined(CONFIG_SCSI_QLA24XX) || defined(CONFIG_SCSI_QLA24XX_MODULE) | ||
70 | #define IS_QLA2422(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2422) | ||
71 | #define IS_QLA2432(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2432) | ||
72 | #else | ||
73 | #define IS_QLA2422(ha) 0 | ||
74 | #define IS_QLA2432(ha) 0 | ||
75 | #endif | ||
76 | |||
77 | #if defined(CONFIG_SCSI_QLA25XX) || defined(CONFIG_SCSI_QLA25XX_MODULE) | ||
78 | #define IS_QLA2512(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2512) | ||
79 | #define IS_QLA2522(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2522) | ||
80 | #else | ||
81 | #define IS_QLA2512(ha) 0 | ||
82 | #define IS_QLA2522(ha) 0 | ||
83 | #endif | ||
84 | |||
85 | #else /* !defined(CONFIG_SCSI_QLA2XXX_EMBEDDED_FIRMWARE) */ | ||
86 | |||
87 | #define IS_QLA2100(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2100) | ||
88 | #define IS_QLA2200(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2200) | ||
89 | #define IS_QLA2300(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2300) | ||
90 | #define IS_QLA2312(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2312) | ||
91 | #define IS_QLA2322(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2322) | ||
92 | #define IS_QLA6312(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP6312) | ||
93 | #define IS_QLA6322(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP6322) | ||
94 | #define IS_QLA2422(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2422) | ||
95 | #define IS_QLA2432(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2432) | ||
96 | #define IS_QLA2512(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2512) | ||
97 | #define IS_QLA2522(ha) ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2522) | ||
98 | #endif | ||
99 | |||
100 | #define IS_QLA23XX(ha) (IS_QLA2300(ha) || IS_QLA2312(ha) || IS_QLA2322(ha) || \ | ||
101 | IS_QLA6312(ha) || IS_QLA6322(ha)) | ||
102 | #define IS_QLA24XX(ha) (IS_QLA2422(ha) || IS_QLA2432(ha)) | ||
103 | #define IS_QLA25XX(ha) (IS_QLA2512(ha) || IS_QLA2522(ha)) | ||
104 | |||
105 | /* | ||
106 | * Only non-ISP2[12]00 have extended addressing support in the firmware. | ||
107 | */ | ||
108 | #define HAS_EXTENDED_IDS(ha) (!IS_QLA2100(ha) && !IS_QLA2200(ha)) | ||
109 | |||
110 | /* | 34 | /* |
111 | * We have MAILBOX_REGISTER_COUNT sized arrays in a few places, | 35 | * We have MAILBOX_REGISTER_COUNT sized arrays in a few places, |
112 | * but that's fine as we don't look at the last 24 ones for | 36 | * but that's fine as we don't look at the last 24 ones for |
@@ -2300,6 +2224,45 @@ typedef struct scsi_qla_host { | |||
2300 | #define SWITCH_FOUND BIT_3 | 2224 | #define SWITCH_FOUND BIT_3 |
2301 | #define DFLG_NO_CABLE BIT_4 | 2225 | #define DFLG_NO_CABLE BIT_4 |
2302 | 2226 | ||
2227 | uint32_t device_type; | ||
2228 | #define DT_ISP2100 BIT_0 | ||
2229 | #define DT_ISP2200 BIT_1 | ||
2230 | #define DT_ISP2300 BIT_2 | ||
2231 | #define DT_ISP2312 BIT_3 | ||
2232 | #define DT_ISP2322 BIT_4 | ||
2233 | #define DT_ISP6312 BIT_5 | ||
2234 | #define DT_ISP6322 BIT_6 | ||
2235 | #define DT_ISP2422 BIT_7 | ||
2236 | #define DT_ISP2432 BIT_8 | ||
2237 | #define DT_ISP2512 BIT_9 | ||
2238 | #define DT_ISP2522 BIT_10 | ||
2239 | #define DT_ISP_LAST (DT_ISP2522 << 1) | ||
2240 | |||
2241 | #define DT_OEM_001 BIT_29 | ||
2242 | #define DT_ISP2200A BIT_30 | ||
2243 | #define DT_EXTENDED_IDS BIT_31 | ||
2244 | |||
2245 | #define DT_MASK(ha) ((ha)->device_type & (DT_ISP_LAST - 1)) | ||
2246 | #define IS_QLA2100(ha) (DT_MASK(ha) & DT_ISP2100) | ||
2247 | #define IS_QLA2200(ha) (DT_MASK(ha) & DT_ISP2200) | ||
2248 | #define IS_QLA2300(ha) (DT_MASK(ha) & DT_ISP2300) | ||
2249 | #define IS_QLA2312(ha) (DT_MASK(ha) & DT_ISP2312) | ||
2250 | #define IS_QLA2322(ha) (DT_MASK(ha) & DT_ISP2322) | ||
2251 | #define IS_QLA6312(ha) (DT_MASK(ha) & DT_ISP6312) | ||
2252 | #define IS_QLA6322(ha) (DT_MASK(ha) & DT_ISP6322) | ||
2253 | #define IS_QLA2422(ha) (DT_MASK(ha) & DT_ISP2422) | ||
2254 | #define IS_QLA2432(ha) (DT_MASK(ha) & DT_ISP2432) | ||
2255 | #define IS_QLA2512(ha) (DT_MASK(ha) & DT_ISP2512) | ||
2256 | #define IS_QLA2522(ha) (DT_MASK(ha) & DT_ISP2522) | ||
2257 | |||
2258 | #define IS_QLA23XX(ha) (IS_QLA2300(ha) || IS_QLA2312(ha) || IS_QLA2322(ha) || \ | ||
2259 | IS_QLA6312(ha) || IS_QLA6322(ha)) | ||
2260 | #define IS_QLA24XX(ha) (IS_QLA2422(ha) || IS_QLA2432(ha)) | ||
2261 | #define IS_QLA25XX(ha) (IS_QLA2512(ha) || IS_QLA2522(ha)) | ||
2262 | |||
2263 | #define IS_OEM_001(ha) ((ha)->device_type & DT_OEM_001) | ||
2264 | #define HAS_EXTENDED_IDS(ha) ((ha)->device_type & DT_EXTENDED_IDS) | ||
2265 | |||
2303 | /* SRB cache. */ | 2266 | /* SRB cache. */ |
2304 | #define SRB_MIN_REQ 128 | 2267 | #define SRB_MIN_REQ 128 |
2305 | mempool_t *srb_mempool; | 2268 | mempool_t *srb_mempool; |
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index 634ee174bff2..f49eb06d0dbd 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c | |||
@@ -727,6 +727,7 @@ qla2x00_chip_diag(scsi_qla_host_t *ha) | |||
727 | DEBUG3(printk("scsi(%ld): Found QLA2200A chip.\n", | 727 | DEBUG3(printk("scsi(%ld): Found QLA2200A chip.\n", |
728 | ha->host_no)); | 728 | ha->host_no)); |
729 | 729 | ||
730 | ha->device_type |= DT_ISP2200A; | ||
730 | ha->fw_transfer_size = 128; | 731 | ha->fw_transfer_size = 128; |
731 | } | 732 | } |
732 | 733 | ||
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c index 43ca0d8ca384..757c4c43c453 100644 --- a/drivers/scsi/qla2xxx/qla_os.c +++ b/drivers/scsi/qla2xxx/qla_os.c | |||
@@ -1146,6 +1146,52 @@ qla2x00_config_dma_addressing(scsi_qla_host_t *ha) | |||
1146 | pci_set_consistent_dma_mask(ha->pdev, DMA_32BIT_MASK); | 1146 | pci_set_consistent_dma_mask(ha->pdev, DMA_32BIT_MASK); |
1147 | } | 1147 | } |
1148 | 1148 | ||
1149 | static inline void | ||
1150 | qla2x00_set_isp_flags(scsi_qla_host_t *ha) | ||
1151 | { | ||
1152 | ha->device_type = DT_EXTENDED_IDS; | ||
1153 | switch (ha->pdev->device) { | ||
1154 | case PCI_DEVICE_ID_QLOGIC_ISP2100: | ||
1155 | ha->device_type |= DT_ISP2100; | ||
1156 | ha->device_type &= ~DT_EXTENDED_IDS; | ||
1157 | break; | ||
1158 | case PCI_DEVICE_ID_QLOGIC_ISP2200: | ||
1159 | ha->device_type |= DT_ISP2200; | ||
1160 | ha->device_type &= ~DT_EXTENDED_IDS; | ||
1161 | break; | ||
1162 | case PCI_DEVICE_ID_QLOGIC_ISP2300: | ||
1163 | ha->device_type |= DT_ISP2300; | ||
1164 | break; | ||
1165 | case PCI_DEVICE_ID_QLOGIC_ISP2312: | ||
1166 | ha->device_type |= DT_ISP2312; | ||
1167 | break; | ||
1168 | case PCI_DEVICE_ID_QLOGIC_ISP2322: | ||
1169 | ha->device_type |= DT_ISP2322; | ||
1170 | if (ha->pdev->subsystem_vendor == 0x1028 && | ||
1171 | ha->pdev->subsystem_device == 0x0170) | ||
1172 | ha->device_type |= DT_OEM_001; | ||
1173 | break; | ||
1174 | case PCI_DEVICE_ID_QLOGIC_ISP6312: | ||
1175 | ha->device_type |= DT_ISP6312; | ||
1176 | break; | ||
1177 | case PCI_DEVICE_ID_QLOGIC_ISP6322: | ||
1178 | ha->device_type |= DT_ISP6322; | ||
1179 | break; | ||
1180 | case PCI_DEVICE_ID_QLOGIC_ISP2422: | ||
1181 | ha->device_type |= DT_ISP2422; | ||
1182 | break; | ||
1183 | case PCI_DEVICE_ID_QLOGIC_ISP2432: | ||
1184 | ha->device_type |= DT_ISP2432; | ||
1185 | break; | ||
1186 | case PCI_DEVICE_ID_QLOGIC_ISP2512: | ||
1187 | ha->device_type |= DT_ISP2512; | ||
1188 | break; | ||
1189 | case PCI_DEVICE_ID_QLOGIC_ISP2522: | ||
1190 | ha->device_type |= DT_ISP2522; | ||
1191 | break; | ||
1192 | } | ||
1193 | } | ||
1194 | |||
1149 | static int | 1195 | static int |
1150 | qla2x00_iospace_config(scsi_qla_host_t *ha) | 1196 | qla2x00_iospace_config(scsi_qla_host_t *ha) |
1151 | { | 1197 | { |
@@ -1307,6 +1353,9 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info) | |||
1307 | ha->brd_info = brd_info; | 1353 | ha->brd_info = brd_info; |
1308 | sprintf(ha->host_str, "%s_%ld", ha->brd_info->drv_name, ha->host_no); | 1354 | sprintf(ha->host_str, "%s_%ld", ha->brd_info->drv_name, ha->host_no); |
1309 | 1355 | ||
1356 | /* Set ISP-type information. */ | ||
1357 | qla2x00_set_isp_flags(ha); | ||
1358 | |||
1310 | /* Configure PCI I/O space */ | 1359 | /* Configure PCI I/O space */ |
1311 | ret = qla2x00_iospace_config(ha); | 1360 | ret = qla2x00_iospace_config(ha); |
1312 | if (ret) | 1361 | if (ret) |
diff --git a/drivers/scsi/qla2xxx/qla_sup.c b/drivers/scsi/qla2xxx/qla_sup.c index 8d68c463cd5b..8b0121dceb01 100644 --- a/drivers/scsi/qla2xxx/qla_sup.c +++ b/drivers/scsi/qla2xxx/qla_sup.c | |||
@@ -1191,11 +1191,6 @@ qla2x00_poll_flash(scsi_qla_host_t *ha, uint32_t addr, uint8_t poll_data, | |||
1191 | return status; | 1191 | return status; |
1192 | } | 1192 | } |
1193 | 1193 | ||
1194 | #define IS_OEM_001(ha) \ | ||
1195 | ((ha)->pdev->device == PCI_DEVICE_ID_QLOGIC_ISP2322 && \ | ||
1196 | (ha)->pdev->subsystem_vendor == 0x1028 && \ | ||
1197 | (ha)->pdev->subsystem_device == 0x0170) | ||
1198 | |||
1199 | /** | 1194 | /** |
1200 | * qla2x00_program_flash_address() - Programs a flash address | 1195 | * qla2x00_program_flash_address() - Programs a flash address |
1201 | * @ha: HA context | 1196 | * @ha: HA context |