diff options
author | Andrew Vasquez <andrew.vasquez@qlogic.com> | 2005-07-06 13:30:26 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2005-07-14 10:54:46 -0400 |
commit | 3d71644cf952fd1157a13173237258422ba3c569 (patch) | |
tree | 1bae220781b973a9dca754a08aa7630e05ffc50e /drivers/scsi/qla2xxx/qla_init.c | |
parent | ac96202ba096f8fc1ccaf45a2f159a52639ece29 (diff) |
[SCSI] qla2xxx: Add ISP24xx definitions.
Add ISP24xx definitions.
Add requisite structure definitions and #define's for ISP24xx
support. Also drop volatile modifiers from device_reg_* register
layouts as the members are never really accessed, only their
offsets within the layout are used during reads and writes.
Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_init.c')
-rw-r--r-- | drivers/scsi/qla2xxx/qla_init.c | 49 |
1 files changed, 23 insertions, 26 deletions
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c index 27b7f9259f28..226bec05d4d1 100644 --- a/drivers/scsi/qla2xxx/qla_init.c +++ b/drivers/scsi/qla2xxx/qla_init.c | |||
@@ -195,6 +195,7 @@ qla2100_pci_config(scsi_qla_host_t *ha) | |||
195 | { | 195 | { |
196 | uint16_t w, mwi; | 196 | uint16_t w, mwi; |
197 | unsigned long flags; | 197 | unsigned long flags; |
198 | struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; | ||
198 | 199 | ||
199 | qla_printk(KERN_INFO, ha, "Configuring PCI space...\n"); | 200 | qla_printk(KERN_INFO, ha, "Configuring PCI space...\n"); |
200 | 201 | ||
@@ -215,7 +216,7 @@ qla2100_pci_config(scsi_qla_host_t *ha) | |||
215 | 216 | ||
216 | /* Get PCI bus information. */ | 217 | /* Get PCI bus information. */ |
217 | spin_lock_irqsave(&ha->hardware_lock, flags); | 218 | spin_lock_irqsave(&ha->hardware_lock, flags); |
218 | ha->pci_attr = RD_REG_WORD(&ha->iobase->ctrl_status); | 219 | ha->pci_attr = RD_REG_WORD(®->ctrl_status); |
219 | spin_unlock_irqrestore(&ha->hardware_lock, flags); | 220 | spin_unlock_irqrestore(&ha->hardware_lock, flags); |
220 | 221 | ||
221 | return QLA_SUCCESS; | 222 | return QLA_SUCCESS; |
@@ -233,6 +234,7 @@ qla2300_pci_config(scsi_qla_host_t *ha) | |||
233 | uint16_t w, mwi; | 234 | uint16_t w, mwi; |
234 | unsigned long flags = 0; | 235 | unsigned long flags = 0; |
235 | uint32_t cnt; | 236 | uint32_t cnt; |
237 | struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; | ||
236 | 238 | ||
237 | qla_printk(KERN_INFO, ha, "Configuring PCI space...\n"); | 239 | qla_printk(KERN_INFO, ha, "Configuring PCI space...\n"); |
238 | 240 | ||
@@ -259,34 +261,32 @@ qla2300_pci_config(scsi_qla_host_t *ha) | |||
259 | spin_lock_irqsave(&ha->hardware_lock, flags); | 261 | spin_lock_irqsave(&ha->hardware_lock, flags); |
260 | 262 | ||
261 | /* Pause RISC. */ | 263 | /* Pause RISC. */ |
262 | WRT_REG_WORD(&ha->iobase->hccr, HCCR_PAUSE_RISC); | 264 | WRT_REG_WORD(®->hccr, HCCR_PAUSE_RISC); |
263 | for (cnt = 0; cnt < 30000; cnt++) { | 265 | for (cnt = 0; cnt < 30000; cnt++) { |
264 | if ((RD_REG_WORD(&ha->iobase->hccr) & | 266 | if ((RD_REG_WORD(®->hccr) & HCCR_RISC_PAUSE) != 0) |
265 | HCCR_RISC_PAUSE) != 0) | ||
266 | break; | 267 | break; |
267 | 268 | ||
268 | udelay(10); | 269 | udelay(10); |
269 | } | 270 | } |
270 | 271 | ||
271 | /* Select FPM registers. */ | 272 | /* Select FPM registers. */ |
272 | WRT_REG_WORD(&ha->iobase->ctrl_status, 0x20); | 273 | WRT_REG_WORD(®->ctrl_status, 0x20); |
273 | RD_REG_WORD(&ha->iobase->ctrl_status); | 274 | RD_REG_WORD(®->ctrl_status); |
274 | 275 | ||
275 | /* Get the fb rev level */ | 276 | /* Get the fb rev level */ |
276 | ha->fb_rev = RD_FB_CMD_REG(ha, ha->iobase); | 277 | ha->fb_rev = RD_FB_CMD_REG(ha, reg); |
277 | 278 | ||
278 | if (ha->fb_rev == FPM_2300) | 279 | if (ha->fb_rev == FPM_2300) |
279 | w &= ~PCI_COMMAND_INVALIDATE; | 280 | w &= ~PCI_COMMAND_INVALIDATE; |
280 | 281 | ||
281 | /* Deselect FPM registers. */ | 282 | /* Deselect FPM registers. */ |
282 | WRT_REG_WORD(&ha->iobase->ctrl_status, 0x0); | 283 | WRT_REG_WORD(®->ctrl_status, 0x0); |
283 | RD_REG_WORD(&ha->iobase->ctrl_status); | 284 | RD_REG_WORD(®->ctrl_status); |
284 | 285 | ||
285 | /* Release RISC module. */ | 286 | /* Release RISC module. */ |
286 | WRT_REG_WORD(&ha->iobase->hccr, HCCR_RELEASE_RISC); | 287 | WRT_REG_WORD(®->hccr, HCCR_RELEASE_RISC); |
287 | for (cnt = 0; cnt < 30000; cnt++) { | 288 | for (cnt = 0; cnt < 30000; cnt++) { |
288 | if ((RD_REG_WORD(&ha->iobase->hccr) & | 289 | if ((RD_REG_WORD(®->hccr) & HCCR_RISC_PAUSE) == 0) |
289 | HCCR_RISC_PAUSE) == 0) | ||
290 | break; | 290 | break; |
291 | 291 | ||
292 | udelay(10); | 292 | udelay(10); |
@@ -305,7 +305,7 @@ qla2300_pci_config(scsi_qla_host_t *ha) | |||
305 | 305 | ||
306 | /* Get PCI bus information. */ | 306 | /* Get PCI bus information. */ |
307 | spin_lock_irqsave(&ha->hardware_lock, flags); | 307 | spin_lock_irqsave(&ha->hardware_lock, flags); |
308 | ha->pci_attr = RD_REG_WORD(&ha->iobase->ctrl_status); | 308 | ha->pci_attr = RD_REG_WORD(®->ctrl_status); |
309 | spin_unlock_irqrestore(&ha->hardware_lock, flags); | 309 | spin_unlock_irqrestore(&ha->hardware_lock, flags); |
310 | 310 | ||
311 | return QLA_SUCCESS; | 311 | return QLA_SUCCESS; |
@@ -352,7 +352,7 @@ void | |||
352 | qla2x00_reset_chip(scsi_qla_host_t *ha) | 352 | qla2x00_reset_chip(scsi_qla_host_t *ha) |
353 | { | 353 | { |
354 | unsigned long flags = 0; | 354 | unsigned long flags = 0; |
355 | device_reg_t __iomem *reg = ha->iobase; | 355 | struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; |
356 | uint32_t cnt; | 356 | uint32_t cnt; |
357 | unsigned long mbx_flags = 0; | 357 | unsigned long mbx_flags = 0; |
358 | uint16_t cmd; | 358 | uint16_t cmd; |
@@ -505,7 +505,7 @@ int | |||
505 | qla2x00_chip_diag(scsi_qla_host_t *ha) | 505 | qla2x00_chip_diag(scsi_qla_host_t *ha) |
506 | { | 506 | { |
507 | int rval; | 507 | int rval; |
508 | device_reg_t __iomem *reg = ha->iobase; | 508 | struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; |
509 | unsigned long flags = 0; | 509 | unsigned long flags = 0; |
510 | uint16_t data; | 510 | uint16_t data; |
511 | uint32_t cnt; | 511 | uint32_t cnt; |
@@ -889,7 +889,7 @@ qla2x00_update_fw_options(scsi_qla_host_t *ha) | |||
889 | void | 889 | void |
890 | qla2x00_config_rings(struct scsi_qla_host *ha) | 890 | qla2x00_config_rings(struct scsi_qla_host *ha) |
891 | { | 891 | { |
892 | device_reg_t __iomem *reg = ha->iobase; | 892 | struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; |
893 | 893 | ||
894 | /* Setup ring parameters in initialization control block. */ | 894 | /* Setup ring parameters in initialization control block. */ |
895 | ha->init_cb->request_q_outpointer = __constant_cpu_to_le16(0); | 895 | ha->init_cb->request_q_outpointer = __constant_cpu_to_le16(0); |
@@ -1196,7 +1196,7 @@ qla2x00_nvram_config(scsi_qla_host_t *ha) | |||
1196 | init_cb_t *icb = ha->init_cb; | 1196 | init_cb_t *icb = ha->init_cb; |
1197 | nvram_t *nv = (nvram_t *)ha->request_ring; | 1197 | nvram_t *nv = (nvram_t *)ha->request_ring; |
1198 | uint16_t *wptr = (uint16_t *)ha->request_ring; | 1198 | uint16_t *wptr = (uint16_t *)ha->request_ring; |
1199 | device_reg_t __iomem *reg = ha->iobase; | 1199 | struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; |
1200 | uint8_t timer_mode; | 1200 | uint8_t timer_mode; |
1201 | 1201 | ||
1202 | rval = QLA_SUCCESS; | 1202 | rval = QLA_SUCCESS; |
@@ -1389,8 +1389,6 @@ qla2x00_nvram_config(scsi_qla_host_t *ha) | |||
1389 | /* | 1389 | /* |
1390 | * Set host adapter parameters. | 1390 | * Set host adapter parameters. |
1391 | */ | 1391 | */ |
1392 | ha->nvram_version = nv->nvram_version; | ||
1393 | |||
1394 | ha->flags.disable_risc_code_load = ((nv->host_p[0] & BIT_4) ? 1 : 0); | 1392 | ha->flags.disable_risc_code_load = ((nv->host_p[0] & BIT_4) ? 1 : 0); |
1395 | /* Always load RISC code on non ISP2[12]00 chips. */ | 1393 | /* Always load RISC code on non ISP2[12]00 chips. */ |
1396 | if (!IS_QLA2100(ha) && !IS_QLA2200(ha)) | 1394 | if (!IS_QLA2100(ha) && !IS_QLA2200(ha)) |
@@ -1410,7 +1408,8 @@ qla2x00_nvram_config(scsi_qla_host_t *ha) | |||
1410 | ha->serial0 = icb->port_name[5]; | 1408 | ha->serial0 = icb->port_name[5]; |
1411 | ha->serial1 = icb->port_name[6]; | 1409 | ha->serial1 = icb->port_name[6]; |
1412 | ha->serial2 = icb->port_name[7]; | 1410 | ha->serial2 = icb->port_name[7]; |
1413 | memcpy(ha->node_name, icb->node_name, WWN_SIZE); | 1411 | ha->node_name = icb->node_name; |
1412 | ha->port_name = icb->port_name; | ||
1414 | 1413 | ||
1415 | icb->execution_throttle = __constant_cpu_to_le16(0xFFFF); | 1414 | icb->execution_throttle = __constant_cpu_to_le16(0xFFFF); |
1416 | 1415 | ||
@@ -2158,7 +2157,7 @@ qla2x00_find_all_fabric_devs(scsi_qla_host_t *ha, struct list_head *new_fcports) | |||
2158 | loop_id = ha->min_external_loopid; | 2157 | loop_id = ha->min_external_loopid; |
2159 | 2158 | ||
2160 | for (; loop_id <= ha->last_loop_id; loop_id++) { | 2159 | for (; loop_id <= ha->last_loop_id; loop_id++) { |
2161 | if (RESERVED_LOOP_ID(loop_id)) | 2160 | if (qla2x00_is_reserved_id(ha, loop_id)) |
2162 | continue; | 2161 | continue; |
2163 | 2162 | ||
2164 | if (atomic_read(&ha->loop_down_timer) || | 2163 | if (atomic_read(&ha->loop_down_timer) || |
@@ -2328,7 +2327,7 @@ qla2x00_find_new_loop_id(scsi_qla_host_t *ha, fc_port_t *dev) | |||
2328 | } | 2327 | } |
2329 | 2328 | ||
2330 | /* Skip reserved loop IDs. */ | 2329 | /* Skip reserved loop IDs. */ |
2331 | while (RESERVED_LOOP_ID(dev->loop_id)) { | 2330 | while (qla2x00_is_reserved_id(ha, dev->loop_id)) { |
2332 | dev->loop_id++; | 2331 | dev->loop_id++; |
2333 | } | 2332 | } |
2334 | 2333 | ||
@@ -2888,7 +2887,7 @@ static int | |||
2888 | qla2x00_restart_isp(scsi_qla_host_t *ha) | 2887 | qla2x00_restart_isp(scsi_qla_host_t *ha) |
2889 | { | 2888 | { |
2890 | uint8_t status = 0; | 2889 | uint8_t status = 0; |
2891 | device_reg_t __iomem *reg = ha->iobase; | 2890 | struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; |
2892 | unsigned long flags = 0; | 2891 | unsigned long flags = 0; |
2893 | uint32_t wait_time; | 2892 | uint32_t wait_time; |
2894 | 2893 | ||
@@ -2901,8 +2900,6 @@ qla2x00_restart_isp(scsi_qla_host_t *ha) | |||
2901 | goto done; | 2900 | goto done; |
2902 | } | 2901 | } |
2903 | 2902 | ||
2904 | reg = ha->iobase; | ||
2905 | |||
2906 | spin_lock_irqsave(&ha->hardware_lock, flags); | 2903 | spin_lock_irqsave(&ha->hardware_lock, flags); |
2907 | 2904 | ||
2908 | /* Disable SRAM, Instruction RAM and GP RAM parity. */ | 2905 | /* Disable SRAM, Instruction RAM and GP RAM parity. */ |
@@ -2973,7 +2970,7 @@ void | |||
2973 | qla2x00_reset_adapter(scsi_qla_host_t *ha) | 2970 | qla2x00_reset_adapter(scsi_qla_host_t *ha) |
2974 | { | 2971 | { |
2975 | unsigned long flags = 0; | 2972 | unsigned long flags = 0; |
2976 | device_reg_t __iomem *reg = ha->iobase; | 2973 | struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; |
2977 | 2974 | ||
2978 | ha->flags.online = 0; | 2975 | ha->flags.online = 0; |
2979 | ha->isp_ops.disable_intrs(ha); | 2976 | ha->isp_ops.disable_intrs(ha); |