diff options
author | Andrew Vasquez <andrew.vasquez@qlogic.com> | 2005-07-06 13:30:57 -0400 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2005-07-14 10:56:39 -0400 |
commit | 1c7c63574ff3e568ca374e9f05e30b8d7d64273e (patch) | |
tree | cb82036b580bb57eb01e897b877e1da50259e2a0 /drivers/scsi/qla2xxx/qla_init.c | |
parent | 8c958a99d6a903ce4ffaa6780f3425a8567db9e6 (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.c | 33 |
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 | ||