Lines Matching refs:vha
46 qla8044_rd_direct(struct scsi_qla_host *vha,
49 struct qla_hw_data *ha = vha->hw;
58 qla8044_wr_direct(struct scsi_qla_host *vha,
62 struct qla_hw_data *ha = vha->hw;
69 qla8044_set_win_base(scsi_qla_host_t *vha, uint32_t addr)
73 struct qla_hw_data *ha = vha->hw;
79 ql_log(ql_log_warn, vha, 0xb087,
89 qla8044_rd_reg_indirect(scsi_qla_host_t *vha, uint32_t addr, uint32_t *data)
92 struct qla_hw_data *ha = vha->hw;
94 ret_val = qla8044_set_win_base(vha, addr);
98 ql_log(ql_log_warn, vha, 0xb088,
104 qla8044_wr_reg_indirect(scsi_qla_host_t *vha, uint32_t addr, uint32_t data)
107 struct qla_hw_data *ha = vha->hw;
109 ret_val = qla8044_set_win_base(vha, addr);
113 ql_log(ql_log_warn, vha, 0xb089,
128 qla8044_read_write_crb_reg(struct scsi_qla_host *vha,
133 qla8044_rd_reg_indirect(vha, raddr, &value);
134 qla8044_wr_reg_indirect(vha, waddr, value);
138 qla8044_poll_wait_for_ready(struct scsi_qla_host *vha, uint32_t addr1,
147 qla8044_rd_reg_indirect(vha, addr1, &temp);
151 ql_log(ql_log_warn, vha, 0xb151,
161 qla8044_ipmdio_rd_reg(struct scsi_qla_host *vha,
167 ret = qla8044_poll_wait_for_ready(vha, addr1, mask);
172 qla8044_wr_reg_indirect(vha, addr1, temp);
174 ret = qla8044_poll_wait_for_ready(vha, addr1, mask);
178 qla8044_rd_reg_indirect(vha, addr3, &ret);
185 qla8044_poll_wait_ipmdio_bus_idle(struct scsi_qla_host *vha,
194 temp = qla8044_ipmdio_rd_reg(vha, addr1, addr3, mask, addr2);
198 ql_log(ql_log_warn, vha, 0xb152,
208 qla8044_ipmdio_wr_reg(struct scsi_qla_host *vha, uint32_t addr1,
213 ret = qla8044_poll_wait_for_ready(vha, addr1, mask);
217 qla8044_wr_reg_indirect(vha, addr3, value);
218 qla8044_wr_reg_indirect(vha, addr1, addr);
220 ret = qla8044_poll_wait_for_ready(vha, addr1, mask);
230 * @vha : Pointer to adapter structure
237 qla8044_rmw_crb_reg(struct scsi_qla_host *vha,
243 value = vha->reset_tmplt.array[p_rmw_hdr->index_a];
245 qla8044_rd_reg_indirect(vha, raddr, &value);
251 qla8044_wr_reg_indirect(vha, waddr, value);
256 qla8044_set_qsnt_ready(struct scsi_qla_host *vha)
259 struct qla_hw_data *ha = vha->hw;
261 qsnt_state = qla8044_rd_direct(vha, QLA8044_CRB_DRV_STATE_INDEX);
263 qla8044_wr_direct(vha, QLA8044_CRB_DRV_STATE_INDEX, qsnt_state);
264 ql_log(ql_log_info, vha, 0xb08e, "%s(%ld): qsnt_state: 0x%08x\n",
265 __func__, vha->host_no, qsnt_state);
269 qla8044_clear_qsnt_ready(struct scsi_qla_host *vha)
272 struct qla_hw_data *ha = vha->hw;
274 qsnt_state = qla8044_rd_direct(vha, QLA8044_CRB_DRV_STATE_INDEX);
276 qla8044_wr_direct(vha, QLA8044_CRB_DRV_STATE_INDEX, qsnt_state);
277 ql_log(ql_log_info, vha, 0xb08f, "%s(%ld): qsnt_state: 0x%08x\n",
278 __func__, vha->host_no, qsnt_state);
283 * @vha : Pointer to adapter structure
307 qla8044_lock_recovery(struct scsi_qla_host *vha)
310 struct qla_hw_data *ha = vha->hw;
330 ql_dbg(ql_dbg_p3p, vha, 0xb08B, "%s:%d: IDC Lock recovery initiated\n"
361 scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev);
384 ql_log(ql_log_warn, vha, 0xb114,
394 ql_dbg(ql_dbg_p3p, vha, 0xb115,
401 if (qla8044_lock_recovery(vha) == QLA_SUCCESS) {
404 ql_dbg(ql_dbg_p3p, vha, 0xb116,
413 ql_dbg(ql_dbg_p3p, vha, 0xb08a,
429 scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev);
434 ql_log(ql_log_warn, vha, 0xb118,
447 qla8044_flash_lock(scsi_qla_host_t *vha)
453 struct qla_hw_data *ha = vha->hw;
463 ql_log(ql_log_warn, vha, 0xb113,
476 qla8044_flash_unlock(scsi_qla_host_t *vha)
478 struct qla_hw_data *ha = vha->hw;
487 void qla8044_flash_lock_recovery(struct scsi_qla_host *vha)
490 if (qla8044_flash_lock(vha)) {
492 ql_log(ql_log_warn, vha, 0xb120, "Resetting flash_lock\n");
500 qla8044_flash_unlock(vha);
507 qla8044_read_flash_data(scsi_qla_host_t *vha, uint8_t *p_data,
513 if (qla8044_flash_lock(vha) != QLA_SUCCESS) {
519 ql_log(ql_log_warn, vha, 0xb117,
526 if (qla8044_wr_reg_indirect(vha, QLA8044_FLASH_DIRECT_WINDOW,
528 ql_log(ql_log_warn, vha, 0xb119,
536 ret_val = qla8044_rd_reg_indirect(vha,
540 ql_log(ql_log_warn, vha, 0xb08c,
552 qla8044_flash_unlock(vha);
562 qla8044_read_optrom_data(struct scsi_qla_host *vha, void *buf,
565 scsi_block_requests(vha->host);
566 if (qla8044_read_flash_data(vha, buf, offset, length / 4)
568 ql_log(ql_log_warn, vha, 0xb08d,
572 scsi_unblock_requests(vha->host);
577 qla8044_need_reset(struct scsi_qla_host *vha)
581 struct qla_hw_data *ha = vha->hw;
583 drv_active = qla8044_rd_direct(vha, QLA8044_CRB_DRV_ACTIVE_INDEX);
584 drv_state = qla8044_rd_direct(vha, QLA8044_CRB_DRV_STATE_INDEX);
598 * @vha : Pointer to adapter structure
603 qla8044_write_list(struct scsi_qla_host *vha,
613 qla8044_wr_reg_indirect(vha, p_entry->arg1, p_entry->arg2);
624 * @vha : Pointer to adapter structure
629 qla8044_read_write_list(struct scsi_qla_host *vha,
639 qla8044_read_write_crb_reg(vha, p_entry->arg1,
659 qla8044_poll_reg(struct scsi_qla_host *vha, uint32_t addr,
667 ret_val = qla8044_rd_reg_indirect(vha, addr, &value);
680 ret_val = qla8044_rd_reg_indirect(vha, addr, &value);
693 vha->reset_tmplt.seq_error++;
694 ql_log(ql_log_fatal, vha, 0xb090,
712 qla8044_poll_list(struct scsi_qla_host *vha,
734 qla8044_poll_reg(vha, p_entry->arg1,
739 if (qla8044_poll_reg(vha,
748 qla8044_rd_reg_indirect(vha,
750 qla8044_rd_reg_indirect(vha,
763 * @vha : Pointer to adapter structure
768 qla8044_poll_write_list(struct scsi_qla_host *vha,
785 qla8044_wr_reg_indirect(vha,
787 qla8044_wr_reg_indirect(vha,
790 if (qla8044_poll_reg(vha,
794 ql_dbg(ql_dbg_p3p, vha, 0xb091,
797 ql_dbg(ql_dbg_p3p, vha, 0xb092,
799 vha->reset_tmplt.seq_index);
810 * @vha : Pointer to adapter structure
815 qla8044_read_modify_write(struct scsi_qla_host *vha,
829 qla8044_rmw_crb_reg(vha, p_entry->arg1,
840 * @vha : Pointer to adapter structure
845 void qla8044_pause(struct scsi_qla_host *vha,
855 * @vha : Pointer to adapter structure
860 qla8044_template_end(struct scsi_qla_host *vha,
863 vha->reset_tmplt.template_end = 1;
865 if (vha->reset_tmplt.seq_error == 0) {
866 ql_dbg(ql_dbg_p3p, vha, 0xb093,
869 ql_log(ql_log_fatal, vha, 0xb094,
880 * @vha : Pointer to adapter structure
885 qla8044_poll_read_list(struct scsi_qla_host *vha,
904 qla8044_wr_reg_indirect(vha, p_entry->ar_addr,
907 if (qla8044_poll_reg(vha, p_entry->ar_addr, delay,
909 ql_dbg(ql_dbg_p3p, vha, 0xb095,
912 ql_dbg(ql_dbg_p3p, vha, 0xb096,
915 vha->reset_tmplt.seq_index);
917 index = vha->reset_tmplt.array_index;
918 qla8044_rd_reg_indirect(vha,
920 vha->reset_tmplt.array[index++] = value;
922 vha->reset_tmplt.array_index = 1;
940 qla8044_process_reset_template(struct scsi_qla_host *vha,
947 vha->reset_tmplt.seq_end = 0;
948 vha->reset_tmplt.template_end = 0;
949 entries = vha->reset_tmplt.hdr->entries;
950 index = vha->reset_tmplt.seq_index;
952 for (; (!vha->reset_tmplt.seq_end) && (index < entries); index++) {
958 qla8044_write_list(vha, p_hdr);
961 qla8044_read_write_list(vha, p_hdr);
964 qla8044_poll_list(vha, p_hdr);
967 qla8044_poll_write_list(vha, p_hdr);
970 qla8044_read_modify_write(vha, p_hdr);
973 qla8044_pause(vha, p_hdr);
976 vha->reset_tmplt.seq_end = 1;
979 qla8044_template_end(vha, p_hdr);
982 qla8044_poll_read_list(vha, p_hdr);
985 ql_log(ql_log_fatal, vha, 0xb097,
995 vha->reset_tmplt.seq_index = index;
999 qla8044_process_init_seq(struct scsi_qla_host *vha)
1001 qla8044_process_reset_template(vha,
1002 vha->reset_tmplt.init_offset);
1003 if (vha->reset_tmplt.seq_end != 1)
1004 ql_log(ql_log_fatal, vha, 0xb098,
1010 qla8044_process_stop_seq(struct scsi_qla_host *vha)
1012 vha->reset_tmplt.seq_index = 0;
1013 qla8044_process_reset_template(vha, vha->reset_tmplt.stop_offset);
1014 if (vha->reset_tmplt.seq_end != 1)
1015 ql_log(ql_log_fatal, vha, 0xb099,
1020 qla8044_process_start_seq(struct scsi_qla_host *vha)
1022 qla8044_process_reset_template(vha, vha->reset_tmplt.start_offset);
1023 if (vha->reset_tmplt.template_end != 1)
1024 ql_log(ql_log_fatal, vha, 0xb09a,
1030 qla8044_lockless_flash_read_u32(struct scsi_qla_host *vha,
1042 ql_log(ql_log_fatal, vha, 0xb09b, "%s: Illegal addr = 0x%x\n",
1048 ret_val = qla8044_wr_reg_indirect(vha,
1052 ql_log(ql_log_fatal, vha, 0xb09c,
1063 ret_val = qla8044_rd_reg_indirect(vha,
1066 ql_log(ql_log_fatal, vha, 0xb09d,
1077 ret_val = qla8044_wr_reg_indirect(vha,
1080 ql_log(ql_log_fatal, vha, 0xb09f,
1092 ret_val = qla8044_rd_reg_indirect(vha,
1095 ql_log(ql_log_fatal, vha, 0xb0a0,
1113 * @vha : Pointer to adapter structure
1121 qla8044_ms_mem_write_128b(struct scsi_qla_host *vha,
1127 struct qla_hw_data *ha = vha->hw;
1137 ret_val = qla8044_wr_reg_indirect(vha, MD_MIU_TEST_AGT_ADDR_HI, 0);
1139 ql_log(ql_log_fatal, vha, 0xb0a1,
1153 ret_val = qla8044_wr_reg_indirect(vha,
1157 ret_val += qla8044_wr_reg_indirect(vha,
1159 ret_val += qla8044_wr_reg_indirect(vha,
1161 ret_val += qla8044_wr_reg_indirect(vha,
1163 ret_val += qla8044_wr_reg_indirect(vha,
1166 ql_log(ql_log_fatal, vha, 0xb0a2,
1173 ret_val = qla8044_wr_reg_indirect(vha, MD_MIU_TEST_AGT_CTRL,
1175 ret_val += qla8044_wr_reg_indirect(vha, MD_MIU_TEST_AGT_CTRL,
1178 ql_log(ql_log_fatal, vha, 0xb0a3,
1184 ret_val = qla8044_rd_reg_indirect(vha,
1187 ql_log(ql_log_fatal, vha, 0xb0a4,
1198 ql_log(ql_log_fatal, vha, 0xb0a5,
1214 qla8044_copy_bootloader(struct scsi_qla_host *vha)
1220 struct qla_hw_data *ha = vha->hw;
1235 ql_log(ql_log_fatal, vha, 0xb0a6,
1242 ret_val = qla8044_lockless_flash_read_u32(vha, src,
1245 ql_log(ql_log_fatal, vha, 0xb0a7,
1249 ql_dbg(ql_dbg_p3p, vha, 0xb0a8, "%s: Read F/W from flash!\n",
1253 ret_val = qla8044_ms_mem_write_128b(vha, dest,
1256 ql_log(ql_log_fatal, vha, 0xb0a9,
1260 ql_dbg(ql_dbg_p3p, vha, 0xb0aa,
1272 qla8044_restart(struct scsi_qla_host *vha)
1275 struct qla_hw_data *ha = vha->hw;
1277 qla8044_process_stop_seq(vha);
1281 qla8044_get_minidump(vha);
1283 ql_log(ql_log_fatal, vha, 0xb14c,
1286 qla8044_process_init_seq(vha);
1288 if (qla8044_copy_bootloader(vha)) {
1289 ql_log(ql_log_fatal, vha, 0xb0ab,
1301 qla8044_process_start_seq(vha);
1316 qla8044_check_cmd_peg_status(struct scsi_qla_host *vha)
1320 struct qla_hw_data *ha = vha->hw;
1325 ql_dbg(ql_dbg_p3p, vha, 0xb0ac,
1338 qla8044_start_firmware(struct scsi_qla_host *vha)
1342 if (qla8044_restart(vha)) {
1343 ql_log(ql_log_fatal, vha, 0xb0ad,
1349 ql_dbg(ql_dbg_p3p, vha, 0xb0af,
1352 ret_val = qla8044_check_cmd_peg_status(vha);
1354 ql_log(ql_log_fatal, vha, 0xb0b0,
1367 struct scsi_qla_host *vha = pci_get_drvdata(ha->pdev);
1369 drv_active = qla8044_rd_direct(vha, QLA8044_CRB_DRV_ACTIVE_INDEX);
1372 ql_log(ql_log_info, vha, 0xb0b1,
1374 __func__, vha->host_no, drv_active);
1376 qla8044_wr_direct(vha, QLA8044_CRB_DRV_ACTIVE_INDEX, drv_active);
1386 qla8044_device_bootstrap(struct scsi_qla_host *vha)
1393 struct qla_hw_data *ha = vha->hw;
1395 need_reset = qla8044_need_reset(vha);
1398 old_count = qla8044_rd_direct(vha,
1404 count = qla8044_rd_direct(vha,
1411 qla8044_flash_lock_recovery(vha);
1415 qla8044_flash_lock_recovery(vha);
1419 ql_log(ql_log_info, vha, 0xb0b2,
1421 qla8044_wr_direct(vha, QLA8044_CRB_DEV_STATE_INDEX,
1425 rval = qla8044_start_firmware(vha);
1429 ql_log(ql_log_info, vha, 0xb0b3,
1432 qla8044_wr_direct(vha, QLA8044_CRB_DEV_STATE_INDEX,
1447 ql_log(ql_log_info, vha, 0xb0b4,
1449 qla8044_wr_direct(vha, QLA8044_CRB_DEV_STATE_INDEX, QLA8XXX_DEV_READY);
1456 qla8044_dump_reset_seq_hdr(struct scsi_qla_host *vha)
1460 if (!vha->reset_tmplt.buff) {
1461 ql_log(ql_log_fatal, vha, 0xb0b5,
1466 phdr = vha->reset_tmplt.buff;
1467 ql_dbg(ql_dbg_p3p, vha, 0xb0b6,
1485 qla8044_reset_seq_checksum_test(struct scsi_qla_host *vha)
1488 uint16_t *buff = (uint16_t *)vha->reset_tmplt.buff;
1489 int u16_count = vha->reset_tmplt.hdr->size / sizeof(uint16_t);
1501 ql_log(ql_log_fatal, vha, 0xb0b7,
1514 qla8044_read_reset_template(struct scsi_qla_host *vha)
1519 vha->reset_tmplt.seq_error = 0;
1520 vha->reset_tmplt.buff = vmalloc(QLA8044_RESTART_TEMPLATE_SIZE);
1521 if (vha->reset_tmplt.buff == NULL) {
1522 ql_log(ql_log_fatal, vha, 0xb0b8,
1528 p_buff = vha->reset_tmplt.buff;
1534 ql_dbg(ql_dbg_p3p, vha, 0xb0b9,
1539 if (qla8044_read_flash_data(vha, p_buff, addr, tmplt_hdr_def_size)) {
1540 ql_log(ql_log_fatal, vha, 0xb0ba,
1545 vha->reset_tmplt.hdr =
1546 (struct qla8044_reset_template_hdr *) vha->reset_tmplt.buff;
1549 tmplt_hdr_size = vha->reset_tmplt.hdr->hdr_size/sizeof(uint32_t);
1551 (vha->reset_tmplt.hdr->signature != RESET_TMPLT_HDR_SIGNATURE)) {
1552 ql_log(ql_log_fatal, vha, 0xb0bb,
1559 addr = QLA8044_RESET_TEMPLATE_ADDR + vha->reset_tmplt.hdr->hdr_size;
1560 p_buff = vha->reset_tmplt.buff + vha->reset_tmplt.hdr->hdr_size;
1561 tmplt_hdr_def_size = (vha->reset_tmplt.hdr->size -
1562 vha->reset_tmplt.hdr->hdr_size)/sizeof(uint32_t);
1564 ql_dbg(ql_dbg_p3p, vha, 0xb0bc,
1566 __func__, vha->reset_tmplt.hdr->size);
1569 if (qla8044_read_flash_data(vha, p_buff, addr, tmplt_hdr_def_size)) {
1570 ql_log(ql_log_fatal, vha, 0xb0bd,
1576 if (qla8044_reset_seq_checksum_test(vha)) {
1577 ql_log(ql_log_fatal, vha, 0xb0be,
1582 ql_dbg(ql_dbg_p3p, vha, 0xb0bf,
1587 vha->reset_tmplt.init_offset = vha->reset_tmplt.buff +
1588 vha->reset_tmplt.hdr->init_seq_offset;
1590 vha->reset_tmplt.start_offset = vha->reset_tmplt.buff +
1591 vha->reset_tmplt.hdr->start_seq_offset;
1593 vha->reset_tmplt.stop_offset = vha->reset_tmplt.buff +
1594 vha->reset_tmplt.hdr->hdr_size;
1596 qla8044_dump_reset_seq_hdr(vha);
1601 vfree(vha->reset_tmplt.buff);
1608 qla8044_set_idc_dontreset(struct scsi_qla_host *vha)
1611 struct qla_hw_data *ha = vha->hw;
1615 ql_dbg(ql_dbg_p3p, vha, 0xb0c0,
1621 qla8044_set_rst_ready(struct scsi_qla_host *vha)
1624 struct qla_hw_data *ha = vha->hw;
1626 drv_state = qla8044_rd_direct(vha, QLA8044_CRB_DRV_STATE_INDEX);
1632 ql_log(ql_log_info, vha, 0xb0c1,
1634 __func__, vha->host_no, drv_state);
1635 qla8044_wr_direct(vha, QLA8044_CRB_DRV_STATE_INDEX, drv_state);
1640 * @vha: pointer to adapter structure
1645 qla8044_need_reset_handler(struct scsi_qla_host *vha)
1649 struct qla_hw_data *ha = vha->hw;
1651 ql_log(ql_log_fatal, vha, 0xb0c2,
1654 if (vha->flags.online) {
1656 qla2x00_abort_isp_cleanup(vha);
1657 ha->isp_ops->get_flash_version(vha, vha->req->ring);
1658 ha->isp_ops->nvram_config(vha);
1662 dev_state = qla8044_rd_direct(vha,
1664 drv_state = qla8044_rd_direct(vha,
1666 drv_active = qla8044_rd_direct(vha,
1669 ql_log(ql_log_info, vha, 0xb0c5,
1671 __func__, vha->host_no, drv_state, drv_active, dev_state);
1673 qla8044_set_rst_ready(vha);
1680 ql_log(ql_log_info, vha, 0xb0c4,
1690 dev_state = qla8044_rd_direct(vha,
1692 drv_state = qla8044_rd_direct(vha,
1694 drv_active = qla8044_rd_direct(vha,
1701 ql_log(ql_log_info, vha, 0xb0c7,
1703 __func__, vha->host_no, ha->portnum,
1706 qla8044_wr_direct(vha, QLA8044_CRB_DRV_ACTIVE_INDEX,
1716 qla8044_device_bootstrap(vha);
1734 qla8044_device_bootstrap(vha);
1739 qla8044_set_drv_active(struct scsi_qla_host *vha)
1742 struct qla_hw_data *ha = vha->hw;
1744 drv_active = qla8044_rd_direct(vha, QLA8044_CRB_DRV_ACTIVE_INDEX);
1750 ql_log(ql_log_info, vha, 0xb0c8,
1752 __func__, vha->host_no, drv_active);
1753 qla8044_wr_direct(vha, QLA8044_CRB_DRV_ACTIVE_INDEX, drv_active);
1757 qla8044_check_drv_active(struct scsi_qla_host *vha)
1760 struct qla_hw_data *ha = vha->hw;
1762 drv_active = qla8044_rd_direct(vha, QLA8044_CRB_DRV_ACTIVE_INDEX);
1770 qla8044_clear_idc_dontreset(struct scsi_qla_host *vha)
1773 struct qla_hw_data *ha = vha->hw;
1777 ql_log(ql_log_info, vha, 0xb0c9,
1784 qla8044_set_idc_ver(struct scsi_qla_host *vha)
1789 struct qla_hw_data *ha = vha->hw;
1791 drv_active = qla8044_rd_direct(vha, QLA8044_CRB_DRV_ACTIVE_INDEX);
1793 idc_ver = qla8044_rd_direct(vha,
1797 qla8044_wr_direct(vha, QLA8044_CRB_DRV_IDC_VERSION_INDEX,
1799 ql_log(ql_log_info, vha, 0xb0ca,
1803 idc_ver = qla8044_rd_direct(vha,
1807 ql_log(ql_log_info, vha, 0xb0cb,
1829 qla8044_update_idc_reg(struct scsi_qla_host *vha)
1833 struct qla_hw_data *ha = vha->hw;
1835 if (vha->flags.init_done)
1839 qla8044_set_drv_active(vha);
1841 drv_active = qla8044_rd_direct(vha,
1847 qla8044_clear_idc_dontreset(vha);
1849 rval = qla8044_set_idc_ver(vha);
1860 * @vha: pointer to adapter structure
1863 qla8044_need_qsnt_handler(struct scsi_qla_host *vha)
1867 struct qla_hw_data *ha = vha->hw;
1869 if (vha->flags.online)
1870 qla2x00_quiesce_io(vha);
1874 qla8044_set_qsnt_ready(vha);
1878 drv_state = qla8044_rd_direct(vha, QLA8044_CRB_DRV_STATE_INDEX);
1879 drv_active = qla8044_rd_direct(vha, QLA8044_CRB_DRV_ACTIVE_INDEX);
1890 clear_bit(ISP_QUIESCE_NEEDED, &vha->dpc_flags);
1891 qla8044_wr_direct(vha, QLA8044_CRB_DEV_STATE_INDEX,
1893 qla8044_clear_qsnt_ready(vha);
1894 ql_log(ql_log_info, vha, 0xb0cc,
1902 drv_state = qla8044_rd_direct(vha,
1904 drv_active = qla8044_rd_direct(vha,
1910 dev_state = qla8044_rd_direct(vha, QLA8044_CRB_DEV_STATE_INDEX);
1913 qla8044_wr_direct(vha, QLA8044_CRB_DEV_STATE_INDEX,
1915 ql_log(ql_log_info, vha, 0xb0cd,
1927 qla8044_device_state_handler(struct scsi_qla_host *vha)
1932 struct qla_hw_data *ha = vha->hw;
1934 rval = qla8044_update_idc_reg(vha);
1938 dev_state = qla8044_rd_direct(vha, QLA8044_CRB_DEV_STATE_INDEX);
1939 ql_dbg(ql_dbg_p3p, vha, 0xb0ce,
1950 if (qla8044_check_drv_active(vha) == QLA_SUCCESS) {
1951 ql_log(ql_log_warn, vha, 0xb0cf,
1955 qla8044_wr_direct(vha,
1961 dev_state = qla8044_rd_direct(vha, QLA8044_CRB_DEV_STATE_INDEX);
1962 ql_log(ql_log_info, vha, 0xb0d0,
1972 rval = qla8044_device_bootstrap(vha);
1983 qla8044_need_reset_handler(vha);
1987 qla8044_need_qsnt_handler(vha);
1994 ql_log(ql_log_info, vha, 0xb0d1,
2008 qla8xxx_dev_failed_handler(vha);
2014 qla8xxx_dev_failed_handler(vha);
2029 * @vha: adapter block pointer.
2034 qla8044_check_temp(struct scsi_qla_host *vha)
2039 temp = qla8044_rd_direct(vha, QLA8044_CRB_TEMP_STATE_INDEX);
2044 ql_log(ql_log_warn, vha, 0xb0d2,
2051 ql_log(ql_log_warn, vha, 0xb0d3,
2059 int qla8044_read_temperature(scsi_qla_host_t *vha)
2063 temp = qla8044_rd_direct(vha, QLA8044_CRB_TEMP_STATE_INDEX);
2069 * @vha: Pointer to host adapter structure.
2074 qla8044_check_fw_alive(struct scsi_qla_host *vha)
2080 fw_heartbeat_counter = qla8044_rd_direct(vha,
2085 ql_dbg(ql_dbg_p3p, vha, 0xb0d4,
2088 vha->host_no, __func__);
2092 if (vha->fw_heartbeat_counter == fw_heartbeat_counter) {
2093 vha->seconds_since_last_heartbeat++;
2095 if (vha->seconds_since_last_heartbeat == 2) {
2096 vha->seconds_since_last_heartbeat = 0;
2097 halt_status1 = qla8044_rd_direct(vha,
2099 halt_status2 = qla8044_rd_direct(vha,
2102 ql_log(ql_log_info, vha, 0xb0d5,
2107 vha->host_no, __func__, halt_status1,
2112 vha->seconds_since_last_heartbeat = 0;
2114 vha->fw_heartbeat_counter = fw_heartbeat_counter;
2119 qla8044_watchdog(struct scsi_qla_host *vha)
2123 struct qla_hw_data *ha = vha->hw;
2126 if (!(test_bit(ABORT_ISP_ACTIVE, &vha->dpc_flags) ||
2127 test_bit(FCOE_CTX_RESET_NEEDED, &vha->dpc_flags))) {
2128 dev_state = qla8044_rd_direct(vha, QLA8044_CRB_DEV_STATE_INDEX);
2130 if (qla8044_check_fw_alive(vha)) {
2132 ql_log(ql_log_warn, vha, 0xb10a,
2134 qla82xx_clear_pending_mbx(vha);
2137 if (qla8044_check_temp(vha)) {
2138 set_bit(ISP_UNRECOVERABLE, &vha->dpc_flags);
2140 qla2xxx_wake_dpc(vha);
2142 !test_bit(ISP_ABORT_NEEDED, &vha->dpc_flags)) {
2143 ql_log(ql_log_info, vha, 0xb0d6,
2146 set_bit(ISP_ABORT_NEEDED, &vha->dpc_flags);
2147 qla2xxx_wake_dpc(vha);
2149 !test_bit(ISP_QUIESCE_NEEDED, &vha->dpc_flags)) {
2150 ql_log(ql_log_info, vha, 0xb0d7,
2153 set_bit(ISP_QUIESCE_NEEDED, &vha->dpc_flags);
2154 qla2xxx_wake_dpc(vha);
2158 halt_status = qla8044_rd_direct(vha,
2162 ql_log(ql_log_fatal, vha,
2177 &vha->dpc_flags);
2182 &vha->dpc_flags);
2183 ql_log(ql_log_info, vha, 0xb0d9,
2187 ql_log(ql_log_info, vha,
2192 &vha->dpc_flags);
2195 qla2xxx_wake_dpc(vha);
2203 qla8044_minidump_process_control(struct scsi_qla_host *vha,
2212 struct qla_hw_data *ha = vha->hw;
2214 ql_dbg(ql_dbg_p3p, vha, 0xb0dd, "Entering fn: %s\n", __func__);
2224 qla8044_wr_reg_indirect(vha, crb_addr,
2229 qla8044_rd_reg_indirect(vha, crb_addr, &read_value);
2230 qla8044_wr_reg_indirect(vha, crb_addr, read_value);
2234 qla8044_rd_reg_indirect(vha, crb_addr, &read_value);
2240 qla8044_wr_reg_indirect(vha, crb_addr, read_value);
2243 qla8044_rd_reg_indirect(vha, crb_addr, &read_value);
2245 qla8044_wr_reg_indirect(vha, crb_addr, read_value);
2250 qla8044_rd_reg_indirect(vha, crb_addr, &read_value);
2261 qla8044_rd_reg_indirect(vha,
2275 qla8044_rd_reg_indirect(vha, addr, &read_value);
2296 qla8044_wr_reg_indirect(vha, addr, read_value);
2316 qla8044_minidump_process_rdcrb(struct scsi_qla_host *vha,
2323 ql_dbg(ql_dbg_p3p, vha, 0xb0de, "Entering fn: %s\n", __func__);
2330 qla8044_rd_reg_indirect(vha, r_addr, &r_value);
2339 qla8044_minidump_process_rdmem(struct scsi_qla_host *vha,
2347 struct qla_hw_data *ha = vha->hw;
2349 ql_dbg(ql_dbg_p3p, vha, 0xb0df, "Entering fn: %s\n", __func__);
2354 ql_dbg(ql_dbg_p3p, vha, 0xb0f0,
2359 ql_dbg(ql_dbg_p3p, vha, 0xb0f1,
2366 ql_dbg(ql_dbg_p3p, vha, 0xb0f2,
2372 ql_dbg(ql_dbg_p3p, vha, 0xb0f3,
2378 qla8044_wr_reg_indirect(vha, MD_MIU_TEST_AGT_ADDR_LO, r_addr);
2380 qla8044_wr_reg_indirect(vha, MD_MIU_TEST_AGT_ADDR_HI, r_value);
2382 qla8044_wr_reg_indirect(vha, MD_MIU_TEST_AGT_CTRL, r_value);
2384 qla8044_wr_reg_indirect(vha, MD_MIU_TEST_AGT_CTRL, r_value);
2387 qla8044_rd_reg_indirect(vha, MD_MIU_TEST_AGT_CTRL,
2399 qla8044_rd_reg_indirect(vha, MD_MIU_TEST_AGT_RDDATA[j],
2408 ql_dbg(ql_dbg_p3p, vha, 0xb0f4,
2418 qla8044_minidump_process_rdrom(struct scsi_qla_host *vha,
2429 ql_dbg(ql_dbg_p3p, vha, 0xb0f5, "[%s]: fl_addr: 0x%x, count: 0x%x\n",
2432 rval = qla8044_lockless_flash_read_u32(vha, fl_addr,
2436 ql_log(ql_log_fatal, vha, 0xb0f6,
2447 qla8044_mark_entry_skipped(struct scsi_qla_host *vha,
2452 ql_log(ql_log_info, vha, 0xb0f7,
2454 vha->host_no, index, entry_hdr->entry_type,
2459 qla8044_minidump_process_l2tag(struct scsi_qla_host *vha,
2471 ql_dbg(ql_dbg_p3p, vha, 0xb0f8, "Entering fn: %s\n", __func__);
2486 qla8044_wr_reg_indirect(vha, t_r_addr, t_value);
2488 qla8044_wr_reg_indirect(vha, c_addr, c_value_w);
2493 qla8044_rd_reg_indirect(vha, c_addr,
2506 qla8044_rd_reg_indirect(vha, addr, &r_value);
2517 qla8044_minidump_process_l1cache(struct scsi_qla_host *vha,
2537 qla8044_wr_reg_indirect(vha, t_r_addr, t_value);
2538 qla8044_wr_reg_indirect(vha, c_addr, c_value_w);
2541 qla8044_rd_reg_indirect(vha, addr, &r_value);
2551 qla8044_minidump_process_rdocm(struct scsi_qla_host *vha,
2557 struct qla_hw_data *ha = vha->hw;
2559 ql_dbg(ql_dbg_p3p, vha, 0xb0f9, "Entering fn: %s\n", __func__);
2566 ql_dbg(ql_dbg_p3p, vha, 0xb0fa,
2575 ql_dbg(ql_dbg_p3p, vha, 0xb0fb, "Leaving fn: %s datacount: 0x%lx\n",
2582 qla8044_minidump_process_rdmux(struct scsi_qla_host *vha,
2590 ql_dbg(ql_dbg_p3p, vha, 0xb0fc, "Entering fn: %s\n", __func__);
2600 qla8044_wr_reg_indirect(vha, s_addr, s_value);
2601 qla8044_rd_reg_indirect(vha, r_addr, &r_value);
2610 qla8044_minidump_process_queue(struct scsi_qla_host *vha,
2620 ql_dbg(ql_dbg_p3p, vha, 0xb0fd, "Entering fn: %s\n", __func__);
2628 qla8044_wr_reg_indirect(vha, s_addr, qid);
2631 qla8044_rd_reg_indirect(vha, r_addr, &r_value);
2642 qla8044_minidump_process_pollrd(struct scsi_qla_host *vha,
2661 qla8044_wr_reg_indirect(vha, s_addr, s_value);
2664 qla8044_rd_reg_indirect(vha, s_addr, &r_value);
2670 ql_log(ql_log_fatal, vha, 0xb0fe,
2676 qla8044_rd_reg_indirect(vha, r_addr, &r_value);
2690 qla8044_minidump_process_rdmux2(struct scsi_qla_host *vha,
2707 qla8044_wr_reg_indirect(vha, sel_addr1, sel_val1);
2711 qla8044_wr_reg_indirect(vha, sel_addr2, t_sel_val);
2712 qla8044_rd_reg_indirect(vha, read_addr, &data);
2716 qla8044_wr_reg_indirect(vha, sel_addr1, sel_val2);
2720 qla8044_wr_reg_indirect(vha, sel_addr2, t_sel_val);
2721 qla8044_rd_reg_indirect(vha, read_addr, &data);
2733 qla8044_minidump_process_pollrdmwr(struct scsi_qla_host *vha,
2749 qla8044_wr_reg_indirect(vha, addr_1, value_1);
2753 qla8044_rd_reg_indirect(vha, addr_1, &r_value);
2760 ql_log(ql_log_fatal, vha, 0xb0ff,
2767 qla8044_rd_reg_indirect(vha, addr_2, &data);
2769 qla8044_wr_reg_indirect(vha, addr_2, data);
2770 qla8044_wr_reg_indirect(vha, addr_1, value_2);
2774 qla8044_rd_reg_indirect(vha, addr_1, &r_value);
2781 ql_log(ql_log_fatal, vha, 0xb100,
2810 qla8044_check_dma_engine_state(struct scsi_qla_host *vha)
2812 struct qla_hw_data *ha = vha->hw;
2825 rval = qla8044_rd_reg_indirect(vha,
2839 qla8044_start_pex_dma(struct scsi_qla_host *vha,
2842 struct qla_hw_data *ha = vha->hw;
2854 rval = qla8044_wr_reg_indirect(vha,
2860 rval = qla8044_wr_reg_indirect(vha,
2865 rval = qla8044_wr_reg_indirect(vha,
2873 rval = qla8044_rd_reg_indirect(vha,
2896 qla8044_minidump_pex_dma_read(struct scsi_qla_host *vha,
2899 struct qla_hw_data *ha = vha->hw;
2908 rval = qla8044_check_dma_engine_state(vha);
2910 ql_dbg(ql_dbg_p3p, vha, 0xb147,
2920 ql_dbg(ql_dbg_p3p, vha, 0xb148,
2955 rval = qla8044_ms_mem_write_128b(vha,
2959 ql_log(ql_log_warn, vha, 0xb14a,
2964 ql_dbg(ql_dbg_p3p, vha, 0xb14b,
2969 rval = qla8044_start_pex_dma(vha, m_hdr);
2989 qla8044_minidump_process_rddfe(struct scsi_qla_host *vha,
3016 qla8044_wr_reg_indirect(vha, addr1, (0x40000000 | value));
3020 qla8044_rd_reg_indirect(vha, addr1, &temp);
3027 ql_log(ql_log_warn, vha, 0xb153,
3031 qla8044_rd_reg_indirect(vha, addr2, &temp);
3036 qla8044_wr_reg_indirect(vha, addr2, wrVal);
3037 qla8044_wr_reg_indirect(vha, addr1, value);
3041 qla8044_rd_reg_indirect(vha, addr1, &temp);
3047 ql_log(ql_log_warn, vha, 0xb154,
3052 qla8044_wr_reg_indirect(vha, addr1,
3056 qla8044_rd_reg_indirect(vha, addr1, &temp);
3063 ql_log(ql_log_warn, vha, 0xb155,
3068 qla8044_rd_reg_indirect(vha, addr2, &data);
3085 qla8044_minidump_process_rdmdio(struct scsi_qla_host *vha,
3113 ret = qla8044_poll_wait_ipmdio_bus_idle(vha, addr1, addr2,
3119 ret = qla8044_ipmdio_wr_reg(vha, addr1, addr3, mask, addr4,
3125 ret = qla8044_ipmdio_wr_reg(vha, addr1, addr3, mask, addr5,
3131 ret = qla8044_ipmdio_wr_reg(vha, addr1, addr3, mask,
3136 ret = qla8044_poll_wait_ipmdio_bus_idle(vha, addr1, addr2,
3142 data = qla8044_ipmdio_rd_reg(vha, addr1, addr3, mask, addr7);
3162 static uint32_t qla8044_minidump_process_pollwr(struct scsi_qla_host *vha,
3178 qla8044_rd_reg_indirect(vha, addr1, &r_value);
3186 ql_log(ql_log_warn, vha, 0xb156, "%s: TIMEOUT\n", __func__);
3190 qla8044_wr_reg_indirect(vha, addr2, value2);
3191 qla8044_wr_reg_indirect(vha, addr1, value1);
3195 qla8044_rd_reg_indirect(vha, addr1, &r_value);
3214 qla8044_collect_md_data(struct scsi_qla_host *vha)
3224 struct qla_hw_data *ha = vha->hw;
3227 ql_log(ql_log_info, vha, 0xb101,
3229 __func__, vha->host_no);
3234 ql_log(ql_log_warn, vha, 0xb10d,
3243 ql_log(ql_log_warn, vha, 0xb10e,
3251 ql_log(ql_log_warn, vha, 0xb112,
3262 if (qla82xx_validate_template_chksum(vha)) {
3263 ql_log(ql_log_info, vha, 0xb109,
3273 ql_dbg(ql_dbg_p3p, vha, 0xb11a,
3280 ql_log(ql_log_warn, vha, 0xb10f,
3286 ql_log(ql_log_info, vha, 0xb102,
3289 ql_log(ql_log_info, vha, 0xb10b,
3292 ql_log(ql_log_info, vha, 0xb10c,
3309 ql_log(ql_log_info, vha, 0xb103,
3323 ql_dbg(ql_dbg_p3p, vha, 0xb104,
3333 qla8044_mark_entry_skipped(vha, entry_hdr, i);
3336 rval = qla8044_minidump_process_control(vha,
3339 qla8044_mark_entry_skipped(vha, entry_hdr, i);
3344 qla8044_minidump_process_rdcrb(vha,
3348 rval = qla8044_minidump_pex_dma_read(vha,
3351 rval = qla8044_minidump_process_rdmem(vha,
3354 qla8044_mark_entry_skipped(vha,
3362 rval = qla8044_minidump_process_rdrom(vha,
3365 qla8044_mark_entry_skipped(vha,
3373 rval = qla8044_minidump_process_l2tag(vha,
3376 qla8044_mark_entry_skipped(vha, entry_hdr, i);
3384 qla8044_minidump_process_l1cache(vha,
3388 qla8044_minidump_process_rdocm(vha,
3392 qla8044_minidump_process_rdmux(vha,
3396 qla8044_minidump_process_queue(vha,
3400 rval = qla8044_minidump_process_pollrd(vha,
3403 qla8044_mark_entry_skipped(vha, entry_hdr, i);
3406 qla8044_minidump_process_rdmux2(vha,
3410 rval = qla8044_minidump_process_pollrdmwr(vha,
3413 qla8044_mark_entry_skipped(vha, entry_hdr, i);
3416 rval = qla8044_minidump_process_rddfe(vha, entry_hdr,
3419 qla8044_mark_entry_skipped(vha, entry_hdr, i);
3422 rval = qla8044_minidump_process_rdmdio(vha, entry_hdr,
3425 qla8044_mark_entry_skipped(vha, entry_hdr, i);
3428 rval = qla8044_minidump_process_pollwr(vha, entry_hdr,
3431 qla8044_mark_entry_skipped(vha, entry_hdr, i);
3435 qla8044_mark_entry_skipped(vha, entry_hdr, i);
3450 ql_log(ql_log_info, vha, 0xb105,
3458 ql_log(ql_log_info, vha, 0xb110,
3460 vha->host_no, ha->md_tmplt_hdr, vha->host_no, ha->md_dump);
3462 qla2x00_post_uevent_work(vha, QLA_UEVENT_CODE_FW_DUMP);
3465 ql_log(ql_log_info, vha, 0xb106,
3473 qla8044_get_minidump(struct scsi_qla_host *vha)
3475 struct qla_hw_data *ha = vha->hw;
3477 if (!qla8044_collect_md_data(vha)) {
3481 ql_log(ql_log_fatal, vha, 0xb0db,
3489 qla8044_poll_flash_status_reg(struct scsi_qla_host *vha)
3496 ret_val = qla8044_rd_reg_indirect(vha, QLA8044_FLASH_STATUS,
3499 ql_log(ql_log_warn, vha, 0xb13c,
3517 qla8044_write_flash_status_reg(struct scsi_qla_host *vha,
3523 cmd = vha->hw->fdt_wrt_sts_reg_cmd;
3525 ret_val = qla8044_wr_reg_indirect(vha, QLA8044_FLASH_ADDR,
3528 ql_log(ql_log_warn, vha, 0xb125,
3533 ret_val = qla8044_wr_reg_indirect(vha, QLA8044_FLASH_WRDATA, data);
3535 ql_log(ql_log_warn, vha, 0xb126,
3540 ret_val = qla8044_wr_reg_indirect(vha, QLA8044_FLASH_CONTROL,
3543 ql_log(ql_log_warn, vha, 0xb127,
3548 ret_val = qla8044_poll_flash_status_reg(vha);
3550 ql_log(ql_log_warn, vha, 0xb128,
3561 qla8044_unprotect_flash(scsi_qla_host_t *vha)
3564 struct qla_hw_data *ha = vha->hw;
3566 ret_val = qla8044_write_flash_status_reg(vha, ha->fdt_wrt_enable);
3568 ql_log(ql_log_warn, vha, 0xb139,
3578 qla8044_protect_flash(scsi_qla_host_t *vha)
3581 struct qla_hw_data *ha = vha->hw;
3583 ret_val = qla8044_write_flash_status_reg(vha, ha->fdt_wrt_disable);
3585 ql_log(ql_log_warn, vha, 0xb13b,
3593 qla8044_erase_flash_sector(struct scsi_qla_host *vha,
3599 ret_val = qla8044_poll_flash_status_reg(vha);
3601 ql_log(ql_log_warn, vha, 0xb12e,
3609 ret_val = qla8044_wr_reg_indirect(vha,
3612 ql_log(ql_log_warn, vha, 0xb12f,
3615 ret_val = qla8044_wr_reg_indirect(vha, QLA8044_FLASH_ADDR,
3616 QLA8044_FLASH_ERASE_SIG | vha->hw->fdt_erase_cmd);
3618 ql_log(ql_log_warn, vha, 0xb130,
3621 ret_val = qla8044_wr_reg_indirect(vha, QLA8044_FLASH_CONTROL,
3624 ql_log(ql_log_warn, vha, 0xb131,
3627 ret_val = qla8044_poll_flash_status_reg(vha);
3629 ql_log(ql_log_warn, vha, 0xb132,
3649 qla8044_flash_write_u32(struct scsi_qla_host *vha, uint32_t addr,
3654 ret_val = qla8044_wr_reg_indirect(vha, QLA8044_FLASH_ADDR,
3657 ql_log(ql_log_warn, vha, 0xb134,
3661 ret_val = qla8044_wr_reg_indirect(vha, QLA8044_FLASH_WRDATA, *p_data);
3663 ql_log(ql_log_warn, vha, 0xb135,
3667 ret_val = qla8044_wr_reg_indirect(vha, QLA8044_FLASH_CONTROL, 0x3D);
3669 ql_log(ql_log_warn, vha, 0xb136,
3673 ret_val = qla8044_poll_flash_status_reg(vha);
3675 ql_log(ql_log_warn, vha, 0xb137,
3684 qla8044_write_flash_buffer_mode(scsi_qla_host_t *vha, uint32_t *dwptr,
3692 ql_dbg(ql_dbg_user, vha, 0xb123,
3698 qla8044_rd_reg_indirect(vha, QLA8044_FLASH_SPI_CONTROL, &spi_val);
3699 qla8044_wr_reg_indirect(vha, QLA8044_FLASH_SPI_CONTROL,
3701 qla8044_wr_reg_indirect(vha, QLA8044_FLASH_ADDR,
3705 ret = qla8044_wr_reg_indirect(vha, QLA8044_FLASH_WRDATA,
3707 qla8044_wr_reg_indirect(vha, QLA8044_FLASH_CONTROL,
3710 ret = qla8044_poll_flash_status_reg(vha);
3712 ql_log(ql_log_warn, vha, 0xb124,
3719 qla8044_wr_reg_indirect(vha, QLA8044_FLASH_ADDR,
3725 qla8044_wr_reg_indirect(vha, QLA8044_FLASH_WRDATA, *dwptr++);
3726 qla8044_wr_reg_indirect(vha, QLA8044_FLASH_CONTROL,
3728 ret = qla8044_poll_flash_status_reg(vha);
3730 ql_log(ql_log_warn, vha, 0xb129,
3737 qla8044_wr_reg_indirect(vha, QLA8044_FLASH_ADDR,
3741 qla8044_wr_reg_indirect(vha, QLA8044_FLASH_WRDATA, *dwptr++);
3742 qla8044_wr_reg_indirect(vha, QLA8044_FLASH_CONTROL,
3744 ret = qla8044_poll_flash_status_reg(vha);
3746 ql_log(ql_log_warn, vha, 0xb12a,
3750 qla8044_rd_reg_indirect(vha, QLA8044_FLASH_SPI_STATUS, &spi_val);
3753 ql_log(ql_log_warn, vha, 0xb12b,
3757 qla8044_rd_reg_indirect(vha, QLA8044_FLASH_SPI_CONTROL,
3759 qla8044_wr_reg_indirect(vha, QLA8044_FLASH_SPI_CONTROL,
3767 qla8044_write_flash_dword_mode(scsi_qla_host_t *vha, uint32_t *dwptr,
3774 ret = qla8044_flash_write_u32(vha, faddr, dwptr);
3776 ql_dbg(ql_dbg_p3p, vha, 0xb141,
3787 qla8044_write_optrom_data(struct scsi_qla_host *vha, void *buf,
3811 scsi_block_requests(vha->host);
3813 qla8044_flash_lock(vha);
3814 qla8044_unprotect_flash(vha);
3818 rval = qla8044_erase_flash_sector(vha, erase_offset);
3819 ql_dbg(ql_dbg_user, vha, 0xb138,
3823 ql_log(ql_log_warn, vha, 0xb121,
3830 ql_dbg(ql_dbg_user, vha, 0xb13f,
3837 rval = qla8044_write_flash_buffer_mode(vha, (uint32_t *)p_src,
3841 ql_log(ql_log_warn, vha, 0xb122,
3844 rval = qla8044_write_flash_dword_mode(vha,
3851 ql_dbg(ql_dbg_user, vha, 0xb133,
3855 qla8044_protect_flash(vha);
3856 qla8044_flash_unlock(vha);
3857 scsi_unblock_requests(vha->host);
3878 scsi_qla_host_t *vha;
3896 vha = pci_get_drvdata(ha->pdev);
3905 ql_dbg(ql_dbg_p3p, vha, 0xb144,
3914 ql_dbg(ql_dbg_p3p, vha, 0xb145,
3947 qla82xx_mbx_completion(vha, MSW(stat));
3955 qla2x00_async_event(vha, rsp, mb);
3958 qla24xx_process_response_queue(vha, rsp);
3961 ql_dbg(ql_dbg_p3p, vha, 0xb146,
3986 qla8044_clear_rst_ready(scsi_qla_host_t *vha)
3990 drv_state = qla8044_rd_direct(vha, QLA8044_CRB_DRV_STATE_INDEX);
3997 drv_state &= ~(1 << vha->hw->portnum);
3999 ql_dbg(ql_dbg_p3p, vha, 0xb13d,
4001 qla8044_wr_direct(vha, QLA8044_CRB_DRV_STATE_INDEX, drv_state);
4005 qla8044_abort_isp(scsi_qla_host_t *vha)
4009 struct qla_hw_data *ha = vha->hw;
4012 dev_state = qla8044_rd_direct(vha, QLA8044_CRB_DEV_STATE_INDEX);
4015 qla8044_set_idc_dontreset(vha);
4027 ql_dbg(ql_dbg_p3p, vha, 0xb13e,
4033 ql_dbg(ql_dbg_p3p, vha, 0xb140,
4035 qla8044_wr_direct(vha, QLA8044_CRB_DEV_STATE_INDEX,
4042 qla83xx_reset_ownership(vha);
4045 rval = qla8044_device_state_handler(vha);
4047 qla8044_clear_rst_ready(vha);
4054 rval = qla82xx_restart_isp(vha);
4061 qla8044_fw_dump(scsi_qla_host_t *vha)
4063 struct qla_hw_data *ha = vha->hw;
4068 scsi_block_requests(vha->host);
4071 qla82xx_set_reset_owner(vha);
4073 qla2x00_wait_for_chip_reset(vha);
4074 scsi_unblock_requests(vha->host);