aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_init.c
diff options
context:
space:
mode:
authorAndrew Vasquez <andrew.vasquez@qlogic.com>2005-07-06 13:30:57 -0400
committerJames Bottomley <jejb@mulgrave.(none)>2005-07-14 10:56:39 -0400
commit1c7c63574ff3e568ca374e9f05e30b8d7d64273e (patch)
treecb82036b580bb57eb01e897b877e1da50259e2a0 /drivers/scsi/qla2xxx/qla_init.c
parent8c958a99d6a903ce4ffaa6780f3425a8567db9e6 (diff)
[SCSI] qla2xxx: Add MBX command routines for ISP24xx support.
Add MBX command routines for ISP24xx support. Generalize several routines [qla2x00_load_ram_ext(), qla2x00_execute_fw(), qla2x00_verify_checksum()] to handle larger addressing space. 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.c33
1 files changed, 25 insertions, 8 deletions
diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
index 226bec05d4d1..b0419661981e 100644
--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -331,7 +331,9 @@ qla2x00_isp_firmware(scsi_qla_host_t *ha)
331 qla_printk(KERN_INFO, ha, "RISC CODE NOT loaded\n"); 331 qla_printk(KERN_INFO, ha, "RISC CODE NOT loaded\n");
332 332
333 /* Verify checksum of loaded RISC code. */ 333 /* Verify checksum of loaded RISC code. */
334 rval = qla2x00_verify_checksum(ha); 334 rval = qla2x00_verify_checksum(ha,
335 IS_QLA24XX(ha) || IS_QLA25XX(ha) ? RISC_SADDRESS :
336 *ha->brd_info->fw_info[0].fwstart);
335 } 337 }
336 338
337 if (rval) { 339 if (rval) {
@@ -756,13 +758,17 @@ qla2x00_setup_chip(scsi_qla_host_t *ha)
756 DEBUG(printk("scsi(%ld): Verifying Checksum of loaded RISC " 758 DEBUG(printk("scsi(%ld): Verifying Checksum of loaded RISC "
757 "code.\n", ha->host_no)); 759 "code.\n", ha->host_no));
758 760
759 rval = qla2x00_verify_checksum(ha); 761 rval = qla2x00_verify_checksum(ha,
762 IS_QLA24XX(ha) || IS_QLA25XX(ha) ? RISC_SADDRESS :
763 *ha->brd_info->fw_info[0].fwstart);
760 if (rval == QLA_SUCCESS) { 764 if (rval == QLA_SUCCESS) {
761 /* Start firmware execution. */ 765 /* Start firmware execution. */
762 DEBUG(printk("scsi(%ld): Checksum OK, start " 766 DEBUG(printk("scsi(%ld): Checksum OK, start "
763 "firmware.\n", ha->host_no)); 767 "firmware.\n", ha->host_no));
764 768
765 rval = qla2x00_execute_fw(ha); 769 rval = qla2x00_execute_fw(ha,
770 IS_QLA24XX(ha) || IS_QLA25XX(ha) ? RISC_SADDRESS :
771 *ha->brd_info->fw_info[0].fwstart);
766 /* Retrieve firmware information. */ 772 /* Retrieve firmware information. */
767 if (rval == QLA_SUCCESS && ha->fw_major_version == 0) { 773 if (rval == QLA_SUCCESS && ha->fw_major_version == 0) {
768 qla2x00_get_fw_version(ha, 774 qla2x00_get_fw_version(ha,
@@ -2011,7 +2017,10 @@ qla2x00_configure_fabric(scsi_qla_host_t *ha)
2011 fcport->port_type != FCT_BROADCAST) { 2017 fcport->port_type != FCT_BROADCAST) {
2012 2018
2013 ha->isp_ops.fabric_logout(ha, 2019 ha->isp_ops.fabric_logout(ha,
2014 fcport->loop_id); 2020 fcport->loop_id,
2021 fcport->d_id.b.domain,
2022 fcport->d_id.b.area,
2023 fcport->d_id.b.al_pa);
2015 fcport->loop_id = FC_NO_LOOP_ID; 2024 fcport->loop_id = FC_NO_LOOP_ID;
2016 } 2025 }
2017 } 2026 }
@@ -2256,7 +2265,9 @@ qla2x00_find_all_fabric_devs(scsi_qla_host_t *ha, struct list_head *new_fcports)
2256 (fcport->flags & FCF_TAPE_PRESENT) == 0 && 2265 (fcport->flags & FCF_TAPE_PRESENT) == 0 &&
2257 fcport->port_type != FCT_INITIATOR && 2266 fcport->port_type != FCT_INITIATOR &&
2258 fcport->port_type != FCT_BROADCAST) { 2267 fcport->port_type != FCT_BROADCAST) {
2259 ha->isp_ops.fabric_logout(ha, fcport->loop_id); 2268 ha->isp_ops.fabric_logout(ha, fcport->loop_id,
2269 fcport->d_id.b.domain, fcport->d_id.b.area,
2270 fcport->d_id.b.al_pa);
2260 fcport->loop_id = FC_NO_LOOP_ID; 2271 fcport->loop_id = FC_NO_LOOP_ID;
2261 } 2272 }
2262 2273
@@ -2515,7 +2526,9 @@ qla2x00_fabric_dev_login(scsi_qla_host_t *ha, fc_port_t *fcport,
2515 if (rval == QLA_SUCCESS) { 2526 if (rval == QLA_SUCCESS) {
2516 rval = qla2x00_get_port_database(ha, fcport, 0); 2527 rval = qla2x00_get_port_database(ha, fcport, 0);
2517 if (rval != QLA_SUCCESS) { 2528 if (rval != QLA_SUCCESS) {
2518 ha->isp_ops.fabric_logout(ha, fcport->loop_id); 2529 ha->isp_ops.fabric_logout(ha, fcport->loop_id,
2530 fcport->d_id.b.domain, fcport->d_id.b.area,
2531 fcport->d_id.b.al_pa);
2519 } else { 2532 } else {
2520 qla2x00_update_fcport(ha, fcport); 2533 qla2x00_update_fcport(ha, fcport);
2521 } 2534 }
@@ -2620,7 +2633,9 @@ qla2x00_fabric_login(scsi_qla_host_t *ha, fc_port_t *fcport,
2620 * dead. 2633 * dead.
2621 */ 2634 */
2622 *next_loopid = fcport->loop_id; 2635 *next_loopid = fcport->loop_id;
2623 ha->isp_ops.fabric_logout(ha, fcport->loop_id); 2636 ha->isp_ops.fabric_logout(ha, fcport->loop_id,
2637 fcport->d_id.b.domain, fcport->d_id.b.area,
2638 fcport->d_id.b.al_pa);
2624 qla2x00_mark_device_lost(ha, fcport, 1); 2639 qla2x00_mark_device_lost(ha, fcport, 1);
2625 2640
2626 rval = 1; 2641 rval = 1;
@@ -2636,7 +2651,9 @@ qla2x00_fabric_login(scsi_qla_host_t *ha, fc_port_t *fcport,
2636 fcport->d_id.b.al_pa, fcport->loop_id, jiffies)); 2651 fcport->d_id.b.al_pa, fcport->loop_id, jiffies));
2637 2652
2638 *next_loopid = fcport->loop_id; 2653 *next_loopid = fcport->loop_id;
2639 ha->isp_ops.fabric_logout(ha, fcport->loop_id); 2654 ha->isp_ops.fabric_logout(ha, fcport->loop_id,
2655 fcport->d_id.b.domain, fcport->d_id.b.area,
2656 fcport->d_id.b.al_pa);
2640 fcport->loop_id = FC_NO_LOOP_ID; 2657 fcport->loop_id = FC_NO_LOOP_ID;
2641 atomic_set(&fcport->state, FCS_DEVICE_DEAD); 2658 atomic_set(&fcport->state, FCS_DEVICE_DEAD);
2642 2659