Lines Matching +full:- +full:16
1 // SPDX-License-Identifier: GPL-2.0-only
4 * Copyright (c) 2003-2014 QLogic Corporation
10 * ----------------------------------------------------------------------
12 * ----------------------------------------------------------------------
14 * | Mailbox commands | 0x1206 | 0x11a5-0x11ff |
15 * | Device Discovery | 0x2134 | 0x2112-0x2115 |
16 * | | | 0x2127-0x2128 |
18 * | | | 0x3027-0x3028 |
19 * | | | 0x303d-0x3041 |
29 * | | | 0x7073-0x7075 |
30 * | | | 0x70a5-0x70a6 |
32 * | | | 0x70ad-0x70ae |
33 * | | | 0x70d0-0x70d6 |
34 * | | | 0x70d7-0x70db |
45 * | | | 0xb0e0-0xb0ef |
51 * | | | 0xb13c-0xb140 |
54 * | Misc | 0xd303 | 0xd031-0xd0ff |
55 * | | | 0xd101-0xd1fe |
56 * | | | 0xd214-0xd2fe |
59 * | | | 0xf046-0xf049 |
61 * ----------------------------------------------------------------------
75 fw_dump->fw_major_version = htonl(ha->fw_major_version); in qla2xxx_prep_dump()
76 fw_dump->fw_minor_version = htonl(ha->fw_minor_version); in qla2xxx_prep_dump()
77 fw_dump->fw_subminor_version = htonl(ha->fw_subminor_version); in qla2xxx_prep_dump()
78 fw_dump->fw_attributes = htonl(ha->fw_attributes); in qla2xxx_prep_dump()
80 fw_dump->vendor = htonl(ha->pdev->vendor); in qla2xxx_prep_dump()
81 fw_dump->device = htonl(ha->pdev->device); in qla2xxx_prep_dump()
82 fw_dump->subsystem_vendor = htonl(ha->pdev->subsystem_vendor); in qla2xxx_prep_dump()
83 fw_dump->subsystem_device = htonl(ha->pdev->subsystem_device); in qla2xxx_prep_dump()
89 struct req_que *req = ha->req_q_map[0]; in qla2xxx_copy_queues()
90 struct rsp_que *rsp = ha->rsp_q_map[0]; in qla2xxx_copy_queues()
92 memcpy(ptr, req->ring, req->length * in qla2xxx_copy_queues()
96 ptr += req->length * sizeof(request_t); in qla2xxx_copy_queues()
97 memcpy(ptr, rsp->ring, rsp->length * in qla2xxx_copy_queues()
100 return ptr + (rsp->length * sizeof(response_t)); in qla2xxx_copy_queues()
107 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; in qla27xx_dump_mpi_ram()
108 dma_addr_t dump_dma = ha->gid_list_dma; in qla27xx_dump_mpi_ram()
109 uint32_t *chunk = (uint32_t *)ha->gid_list; in qla27xx_dump_mpi_ram()
114 scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev); in qla27xx_dump_mpi_ram()
116 clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags); in qla27xx_dump_mpi_ram()
123 dwords = ram_dwords - i; in qla27xx_dump_mpi_ram()
125 wrt_reg_word(®->mailbox0, MBC_LOAD_DUMP_MPI_RAM); in qla27xx_dump_mpi_ram()
126 wrt_reg_word(®->mailbox1, LSW(addr)); in qla27xx_dump_mpi_ram()
127 wrt_reg_word(®->mailbox8, MSW(addr)); in qla27xx_dump_mpi_ram()
129 wrt_reg_word(®->mailbox2, MSW(LSD(dump_dma))); in qla27xx_dump_mpi_ram()
130 wrt_reg_word(®->mailbox3, LSW(LSD(dump_dma))); in qla27xx_dump_mpi_ram()
131 wrt_reg_word(®->mailbox6, MSW(MSD(dump_dma))); in qla27xx_dump_mpi_ram()
132 wrt_reg_word(®->mailbox7, LSW(MSD(dump_dma))); in qla27xx_dump_mpi_ram()
134 wrt_reg_word(®->mailbox4, MSW(dwords)); in qla27xx_dump_mpi_ram()
135 wrt_reg_word(®->mailbox5, LSW(dwords)); in qla27xx_dump_mpi_ram()
137 wrt_reg_word(®->mailbox9, 0); in qla27xx_dump_mpi_ram()
138 wrt_reg_dword(®->hccr, HCCRX_SET_HOST_INT); in qla27xx_dump_mpi_ram()
140 ha->flags.mbox_int = 0; in qla27xx_dump_mpi_ram()
141 while (timer--) { in qla27xx_dump_mpi_ram()
147 stat = rd_reg_dword(®->host_status); in qla27xx_dump_mpi_ram()
157 wrt_reg_dword(®->hccr, HCCRX_CLR_RISC_INT); in qla27xx_dump_mpi_ram()
158 rd_reg_dword(®->hccr); in qla27xx_dump_mpi_ram()
162 set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags); in qla27xx_dump_mpi_ram()
163 rval = rd_reg_word(®->mailbox0) & MBS_MASK; in qla27xx_dump_mpi_ram()
164 wrt_reg_dword(®->hccr, HCCRX_CLR_RISC_INT); in qla27xx_dump_mpi_ram()
165 rd_reg_dword(®->hccr); in qla27xx_dump_mpi_ram()
168 ha->flags.mbox_int = 1; in qla27xx_dump_mpi_ram()
171 if (!test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) { in qla27xx_dump_mpi_ram()
195 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; in qla24xx_dump_ram()
196 dma_addr_t dump_dma = ha->gid_list_dma; in qla24xx_dump_ram()
197 uint32_t *chunk = (uint32_t *)ha->gid_list; in qla24xx_dump_ram()
201 scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev); in qla24xx_dump_ram()
203 clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags); in qla24xx_dump_ram()
210 dwords = ram_dwords - i; in qla24xx_dump_ram()
212 wrt_reg_word(®->mailbox0, MBC_DUMP_RISC_RAM_EXTENDED); in qla24xx_dump_ram()
213 wrt_reg_word(®->mailbox1, LSW(addr)); in qla24xx_dump_ram()
214 wrt_reg_word(®->mailbox8, MSW(addr)); in qla24xx_dump_ram()
215 wrt_reg_word(®->mailbox10, 0); in qla24xx_dump_ram()
217 wrt_reg_word(®->mailbox2, MSW(LSD(dump_dma))); in qla24xx_dump_ram()
218 wrt_reg_word(®->mailbox3, LSW(LSD(dump_dma))); in qla24xx_dump_ram()
219 wrt_reg_word(®->mailbox6, MSW(MSD(dump_dma))); in qla24xx_dump_ram()
220 wrt_reg_word(®->mailbox7, LSW(MSD(dump_dma))); in qla24xx_dump_ram()
222 wrt_reg_word(®->mailbox4, MSW(dwords)); in qla24xx_dump_ram()
223 wrt_reg_word(®->mailbox5, LSW(dwords)); in qla24xx_dump_ram()
224 wrt_reg_dword(®->hccr, HCCRX_SET_HOST_INT); in qla24xx_dump_ram()
226 ha->flags.mbox_int = 0; in qla24xx_dump_ram()
227 while (timer--) { in qla24xx_dump_ram()
232 stat = rd_reg_dword(®->host_status); in qla24xx_dump_ram()
240 wrt_reg_dword(®->hccr, HCCRX_CLR_RISC_INT); in qla24xx_dump_ram()
241 rd_reg_dword(®->hccr); in qla24xx_dump_ram()
245 set_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags); in qla24xx_dump_ram()
246 rval = rd_reg_word(®->mailbox0) & MBS_MASK; in qla24xx_dump_ram()
247 wrt_reg_dword(®->hccr, HCCRX_CLR_RISC_INT); in qla24xx_dump_ram()
248 rd_reg_dword(®->hccr); in qla24xx_dump_ram()
251 ha->flags.mbox_int = 1; in qla24xx_dump_ram()
254 if (!test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) { in qla24xx_dump_ram()
284 set_bit(RISC_SRAM_DUMP_CMPL, &ha->fw_dump_cap_flags); in qla24xx_dump_memory()
288 ha->fw_memory_size - 0x100000 + 1, nxt); in qla24xx_dump_memory()
290 set_bit(RISC_EXT_MEM_DUMP_CMPL, &ha->fw_dump_cap_flags); in qla24xx_dump_memory()
301 wrt_reg_dword(®->iobase_addr, iobase); in qla24xx_read_window()
302 dmp_reg = ®->iobase_window; in qla24xx_read_window()
303 for ( ; count--; dmp_reg++) in qla24xx_read_window()
312 wrt_reg_dword(®->hccr, HCCRX_SET_RISC_PAUSE); in qla24xx_pause_risc()
316 if (rd_reg_dword(®->host_status) & HSRX_RISC_PAUSED) in qla24xx_pause_risc()
317 set_bit(RISC_PAUSE_CMPL, &ha->fw_dump_cap_flags); in qla24xx_pause_risc()
326 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; in qla24xx_soft_reset()
333 wrt_reg_dword(®->ctrl_status, CSRX_DMA_SHUTDOWN|MWB_4096_BYTES); in qla24xx_soft_reset()
335 if ((rd_reg_dword(®->ctrl_status) & CSRX_DMA_ACTIVE) == 0) in qla24xx_soft_reset()
340 if (!(rd_reg_dword(®->ctrl_status) & CSRX_DMA_ACTIVE)) in qla24xx_soft_reset()
341 set_bit(DMA_SHUTDOWN_CMPL, &ha->fw_dump_cap_flags); in qla24xx_soft_reset()
343 wrt_reg_dword(®->ctrl_status, in qla24xx_soft_reset()
345 pci_read_config_word(ha->pdev, PCI_COMMAND, &wd); in qla24xx_soft_reset()
349 /* Wait for soft-reset to complete. */ in qla24xx_soft_reset()
351 if ((rd_reg_dword(®->ctrl_status) & in qla24xx_soft_reset()
357 if (!(rd_reg_dword(®->ctrl_status) & CSRX_ISP_SOFT_RESET)) in qla24xx_soft_reset()
358 set_bit(ISP_RESET_CMPL, &ha->fw_dump_cap_flags); in qla24xx_soft_reset()
360 wrt_reg_dword(®->hccr, HCCRX_CLR_RISC_RESET); in qla24xx_soft_reset()
361 rd_reg_dword(®->hccr); /* PCI Posting. */ in qla24xx_soft_reset()
363 for (cnt = 10000; rd_reg_word(®->mailbox0) != 0 && in qla24xx_soft_reset()
364 rval == QLA_SUCCESS; cnt--) { in qla24xx_soft_reset()
371 set_bit(RISC_RDY_AFT_RESET, &ha->fw_dump_cap_flags); in qla24xx_soft_reset()
383 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2xxx_dump_ram()
384 dma_addr_t dump_dma = ha->gid_list_dma; in qla2xxx_dump_ram()
385 __le16 *dump = (__force __le16 *)ha->gid_list; in qla2xxx_dump_ram()
391 clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags); in qla2xxx_dump_ram()
397 words = ram_words - cnt; in qla2xxx_dump_ram()
408 wrt_reg_word(®->hccr, HCCR_SET_HOST_INT); in qla2xxx_dump_ram()
410 for (timer = 6000000; timer; timer--) { in qla2xxx_dump_ram()
412 stat = rd_reg_dword(®->u.isp2300.host_status); in qla2xxx_dump_ram()
418 &ha->mbx_cmd_flags); in qla2xxx_dump_ram()
423 wrt_reg_word(®->semaphore, 0); in qla2xxx_dump_ram()
424 wrt_reg_word(®->hccr, in qla2xxx_dump_ram()
426 rd_reg_word(®->hccr); in qla2xxx_dump_ram()
430 &ha->mbx_cmd_flags); in qla2xxx_dump_ram()
434 wrt_reg_word(®->hccr, in qla2xxx_dump_ram()
436 rd_reg_word(®->hccr); in qla2xxx_dump_ram()
441 wrt_reg_word(®->hccr, HCCR_CLR_RISC_INT); in qla2xxx_dump_ram()
442 rd_reg_word(®->hccr); in qla2xxx_dump_ram()
447 if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) { in qla2xxx_dump_ram()
465 __le16 __iomem *dmp_reg = ®->u.isp2300.fb_cmd; in qla2xxx_read_window()
467 for ( ; count--; dmp_reg++) in qla2xxx_read_window()
474 if (!ha->eft) in qla24xx_copy_eft()
477 memcpy(ptr, ha->eft, ntohl(ha->fw_dump->eft_size)); in qla24xx_copy_eft()
478 return ptr + ntohl(ha->fw_dump->eft_size); in qla24xx_copy_eft()
488 if (!ha->fce) in qla25xx_copy_fce()
491 *last_chain = &fcec->type; in qla25xx_copy_fce()
492 fcec->type = htonl(DUMP_CHAIN_FCE); in qla25xx_copy_fce()
493 fcec->chain_size = htonl(sizeof(struct qla2xxx_fce_chain) + in qla25xx_copy_fce()
494 fce_calc_size(ha->fce_bufs)); in qla25xx_copy_fce()
495 fcec->size = htonl(fce_calc_size(ha->fce_bufs)); in qla25xx_copy_fce()
496 fcec->addr_l = htonl(LSD(ha->fce_dma)); in qla25xx_copy_fce()
497 fcec->addr_h = htonl(MSD(ha->fce_dma)); in qla25xx_copy_fce()
499 iter_reg = fcec->eregs; in qla25xx_copy_fce()
501 *iter_reg++ = htonl(ha->fce_mb[cnt]); in qla25xx_copy_fce()
503 memcpy(iter_reg, ha->fce, ntohl(fcec->size)); in qla25xx_copy_fce()
505 return (char *)iter_reg + ntohl(fcec->size); in qla25xx_copy_fce()
513 if (!ha->exlogin_buf) in qla25xx_copy_exlogin()
516 *last_chain = &c->type; in qla25xx_copy_exlogin()
518 c->type = cpu_to_be32(DUMP_CHAIN_EXLOGIN); in qla25xx_copy_exlogin()
519 c->chain_size = cpu_to_be32(sizeof(struct qla2xxx_offld_chain) + in qla25xx_copy_exlogin()
520 ha->exlogin_size); in qla25xx_copy_exlogin()
521 c->size = cpu_to_be32(ha->exlogin_size); in qla25xx_copy_exlogin()
522 c->addr = cpu_to_be64(ha->exlogin_buf_dma); in qla25xx_copy_exlogin()
525 memcpy(ptr, ha->exlogin_buf, ha->exlogin_size); in qla25xx_copy_exlogin()
527 return (char *)ptr + be32_to_cpu(c->size); in qla25xx_copy_exlogin()
535 if (!ha->exchoffld_buf) in qla81xx_copy_exchoffld()
538 *last_chain = &c->type; in qla81xx_copy_exchoffld()
540 c->type = cpu_to_be32(DUMP_CHAIN_EXCHG); in qla81xx_copy_exchoffld()
541 c->chain_size = cpu_to_be32(sizeof(struct qla2xxx_offld_chain) + in qla81xx_copy_exchoffld()
542 ha->exchoffld_size); in qla81xx_copy_exchoffld()
543 c->size = cpu_to_be32(ha->exchoffld_size); in qla81xx_copy_exchoffld()
544 c->addr = cpu_to_be64(ha->exchoffld_buf_dma); in qla81xx_copy_exchoffld()
547 memcpy(ptr, ha->exchoffld_buf, ha->exchoffld_size); in qla81xx_copy_exchoffld()
549 return (char *)ptr + be32_to_cpu(c->size); in qla81xx_copy_exchoffld()
565 if (!ha->tgt.atio_ring) in qla2xxx_copy_atioqueues()
570 aqp->length = ha->tgt.atio_q_length; in qla2xxx_copy_atioqueues()
571 aqp->ring = ha->tgt.atio_ring; in qla2xxx_copy_atioqueues()
574 /* aqp = ha->atio_q_map[que]; */ in qla2xxx_copy_atioqueues()
576 *last_chain = &q->type; in qla2xxx_copy_atioqueues()
577 q->type = htonl(DUMP_CHAIN_QUEUE); in qla2xxx_copy_atioqueues()
578 q->chain_size = htonl( in qla2xxx_copy_atioqueues()
581 (aqp->length * sizeof(request_t))); in qla2xxx_copy_atioqueues()
586 qh->queue = htonl(TYPE_ATIO_QUEUE); in qla2xxx_copy_atioqueues()
587 qh->number = htonl(que); in qla2xxx_copy_atioqueues()
588 qh->size = htonl(aqp->length * sizeof(request_t)); in qla2xxx_copy_atioqueues()
592 memcpy(ptr, aqp->ring, aqp->length * sizeof(request_t)); in qla2xxx_copy_atioqueues()
594 ptr += aqp->length * sizeof(request_t); in qla2xxx_copy_atioqueues()
609 if (!ha->mqenable) in qla25xx_copy_mqueues()
613 for (que = 1; que < ha->max_req_queues; que++) { in qla25xx_copy_mqueues()
614 req = ha->req_q_map[que]; in qla25xx_copy_mqueues()
620 *last_chain = &q->type; in qla25xx_copy_mqueues()
621 q->type = htonl(DUMP_CHAIN_QUEUE); in qla25xx_copy_mqueues()
622 q->chain_size = htonl( in qla25xx_copy_mqueues()
625 (req->length * sizeof(request_t))); in qla25xx_copy_mqueues()
630 qh->queue = htonl(TYPE_REQUEST_QUEUE); in qla25xx_copy_mqueues()
631 qh->number = htonl(que); in qla25xx_copy_mqueues()
632 qh->size = htonl(req->length * sizeof(request_t)); in qla25xx_copy_mqueues()
636 memcpy(ptr, req->ring, req->length * sizeof(request_t)); in qla25xx_copy_mqueues()
637 ptr += req->length * sizeof(request_t); in qla25xx_copy_mqueues()
641 for (que = 1; que < ha->max_rsp_queues; que++) { in qla25xx_copy_mqueues()
642 rsp = ha->rsp_q_map[que]; in qla25xx_copy_mqueues()
648 *last_chain = &q->type; in qla25xx_copy_mqueues()
649 q->type = htonl(DUMP_CHAIN_QUEUE); in qla25xx_copy_mqueues()
650 q->chain_size = htonl( in qla25xx_copy_mqueues()
653 (rsp->length * sizeof(response_t))); in qla25xx_copy_mqueues()
658 qh->queue = htonl(TYPE_RESPONSE_QUEUE); in qla25xx_copy_mqueues()
659 qh->number = htonl(que); in qla25xx_copy_mqueues()
660 qh->size = htonl(rsp->length * sizeof(response_t)); in qla25xx_copy_mqueues()
664 memcpy(ptr, rsp->ring, rsp->length * sizeof(response_t)); in qla25xx_copy_mqueues()
665 ptr += rsp->length * sizeof(response_t); in qla25xx_copy_mqueues()
679 if (!ha->mqenable || IS_QLA83XX(ha) || IS_QLA27XX(ha) || in qla25xx_copy_mq()
684 *last_chain = &mq->type; in qla25xx_copy_mq()
685 mq->type = htonl(DUMP_CHAIN_MQ); in qla25xx_copy_mq()
686 mq->chain_size = htonl(sizeof(struct qla2xxx_mq_chain)); in qla25xx_copy_mq()
688 que_cnt = ha->max_req_queues > ha->max_rsp_queues ? in qla25xx_copy_mq()
689 ha->max_req_queues : ha->max_rsp_queues; in qla25xx_copy_mq()
690 mq->count = htonl(que_cnt); in qla25xx_copy_mq()
694 mq->qregs[que_idx] = in qla25xx_copy_mq()
695 htonl(rd_reg_dword(®->isp25mq.req_q_in)); in qla25xx_copy_mq()
696 mq->qregs[que_idx+1] = in qla25xx_copy_mq()
697 htonl(rd_reg_dword(®->isp25mq.req_q_out)); in qla25xx_copy_mq()
698 mq->qregs[que_idx+2] = in qla25xx_copy_mq()
699 htonl(rd_reg_dword(®->isp25mq.rsp_q_in)); in qla25xx_copy_mq()
700 mq->qregs[que_idx+3] = in qla25xx_copy_mq()
701 htonl(rd_reg_dword(®->isp25mq.rsp_q_out)); in qla25xx_copy_mq()
710 struct qla_hw_data *ha = vha->hw; in qla2xxx_dump_post_process()
715 rval, ha->fw_dump_cap_flags); in qla2xxx_dump_post_process()
716 ha->fw_dumped = false; in qla2xxx_dump_post_process()
720 vha->host_no, ha->fw_dump, ha->fw_dump_cap_flags); in qla2xxx_dump_post_process()
721 ha->fw_dumped = true; in qla2xxx_dump_post_process()
730 spin_lock_irqsave(&vha->hw->hardware_lock, flags); in qla2xxx_dump_fw()
731 vha->hw->isp_ops->fw_dump(vha); in qla2xxx_dump_fw()
732 spin_unlock_irqrestore(&vha->hw->hardware_lock, flags); in qla2xxx_dump_fw()
736 * qla2300_fw_dump() - Dumps binary data from the 2300 firmware.
744 struct qla_hw_data *ha = vha->hw; in qla2300_fw_dump()
745 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2300_fw_dump()
749 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev); in qla2300_fw_dump()
751 lockdep_assert_held(&ha->hardware_lock); in qla2300_fw_dump()
753 if (!ha->fw_dump) { in qla2300_fw_dump()
759 if (ha->fw_dumped) { in qla2300_fw_dump()
762 "-- ignoring request.\n", in qla2300_fw_dump()
763 ha->fw_dump); in qla2300_fw_dump()
766 fw = &ha->fw_dump->isp.isp23; in qla2300_fw_dump()
767 qla2xxx_prep_dump(ha, ha->fw_dump); in qla2300_fw_dump()
770 fw->hccr = htons(rd_reg_word(®->hccr)); in qla2300_fw_dump()
773 wrt_reg_word(®->hccr, HCCR_PAUSE_RISC); in qla2300_fw_dump()
776 (rd_reg_word(®->hccr) & HCCR_RISC_PAUSE) == 0 && in qla2300_fw_dump()
777 rval == QLA_SUCCESS; cnt--) { in qla2300_fw_dump()
784 rd_reg_word(®->hccr); /* PCI Posting. */ in qla2300_fw_dump()
789 dmp_reg = ®->flash_address; in qla2300_fw_dump()
790 for (cnt = 0; cnt < ARRAY_SIZE(fw->pbiu_reg); cnt++, dmp_reg++) in qla2300_fw_dump()
791 fw->pbiu_reg[cnt] = htons(rd_reg_word(dmp_reg)); in qla2300_fw_dump()
793 dmp_reg = ®->u.isp2300.req_q_in; in qla2300_fw_dump()
794 for (cnt = 0; cnt < ARRAY_SIZE(fw->risc_host_reg); in qla2300_fw_dump()
796 fw->risc_host_reg[cnt] = htons(rd_reg_word(dmp_reg)); in qla2300_fw_dump()
798 dmp_reg = ®->u.isp2300.mailbox0; in qla2300_fw_dump()
799 for (cnt = 0; cnt < ARRAY_SIZE(fw->mailbox_reg); in qla2300_fw_dump()
801 fw->mailbox_reg[cnt] = htons(rd_reg_word(dmp_reg)); in qla2300_fw_dump()
803 wrt_reg_word(®->ctrl_status, 0x40); in qla2300_fw_dump()
804 qla2xxx_read_window(reg, 32, fw->resp_dma_reg); in qla2300_fw_dump()
806 wrt_reg_word(®->ctrl_status, 0x50); in qla2300_fw_dump()
807 qla2xxx_read_window(reg, 48, fw->dma_reg); in qla2300_fw_dump()
809 wrt_reg_word(®->ctrl_status, 0x00); in qla2300_fw_dump()
810 dmp_reg = ®->risc_hw; in qla2300_fw_dump()
811 for (cnt = 0; cnt < ARRAY_SIZE(fw->risc_hdw_reg); in qla2300_fw_dump()
813 fw->risc_hdw_reg[cnt] = htons(rd_reg_word(dmp_reg)); in qla2300_fw_dump()
815 wrt_reg_word(®->pcr, 0x2000); in qla2300_fw_dump()
816 qla2xxx_read_window(reg, 16, fw->risc_gp0_reg); in qla2300_fw_dump()
818 wrt_reg_word(®->pcr, 0x2200); in qla2300_fw_dump()
819 qla2xxx_read_window(reg, 16, fw->risc_gp1_reg); in qla2300_fw_dump()
821 wrt_reg_word(®->pcr, 0x2400); in qla2300_fw_dump()
822 qla2xxx_read_window(reg, 16, fw->risc_gp2_reg); in qla2300_fw_dump()
824 wrt_reg_word(®->pcr, 0x2600); in qla2300_fw_dump()
825 qla2xxx_read_window(reg, 16, fw->risc_gp3_reg); in qla2300_fw_dump()
827 wrt_reg_word(®->pcr, 0x2800); in qla2300_fw_dump()
828 qla2xxx_read_window(reg, 16, fw->risc_gp4_reg); in qla2300_fw_dump()
830 wrt_reg_word(®->pcr, 0x2A00); in qla2300_fw_dump()
831 qla2xxx_read_window(reg, 16, fw->risc_gp5_reg); in qla2300_fw_dump()
833 wrt_reg_word(®->pcr, 0x2C00); in qla2300_fw_dump()
834 qla2xxx_read_window(reg, 16, fw->risc_gp6_reg); in qla2300_fw_dump()
836 wrt_reg_word(®->pcr, 0x2E00); in qla2300_fw_dump()
837 qla2xxx_read_window(reg, 16, fw->risc_gp7_reg); in qla2300_fw_dump()
839 wrt_reg_word(®->ctrl_status, 0x10); in qla2300_fw_dump()
840 qla2xxx_read_window(reg, 64, fw->frame_buf_hdw_reg); in qla2300_fw_dump()
842 wrt_reg_word(®->ctrl_status, 0x20); in qla2300_fw_dump()
843 qla2xxx_read_window(reg, 64, fw->fpm_b0_reg); in qla2300_fw_dump()
845 wrt_reg_word(®->ctrl_status, 0x30); in qla2300_fw_dump()
846 qla2xxx_read_window(reg, 64, fw->fpm_b1_reg); in qla2300_fw_dump()
849 wrt_reg_word(®->ctrl_status, CSR_ISP_SOFT_RESET); in qla2300_fw_dump()
851 if ((rd_reg_word(®->ctrl_status) & in qla2300_fw_dump()
861 rval == QLA_SUCCESS; cnt--) { in qla2300_fw_dump()
871 rval = qla2xxx_dump_ram(ha, 0x800, fw->risc_ram, in qla2300_fw_dump()
872 ARRAY_SIZE(fw->risc_ram), &nxt); in qla2300_fw_dump()
876 rval = qla2xxx_dump_ram(ha, 0x10000, fw->stack_ram, in qla2300_fw_dump()
877 ARRAY_SIZE(fw->stack_ram), &nxt); in qla2300_fw_dump()
881 rval = qla2xxx_dump_ram(ha, 0x11000, fw->data_ram, in qla2300_fw_dump()
882 ha->fw_memory_size - 0x11000 + 1, &nxt); in qla2300_fw_dump()
891 * qla2100_fw_dump() - Dumps binary data from the 2100/2200 firmware.
901 struct qla_hw_data *ha = vha->hw; in qla2100_fw_dump()
902 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2100_fw_dump()
905 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev); in qla2100_fw_dump()
907 lockdep_assert_held(&ha->hardware_lock); in qla2100_fw_dump()
909 if (!ha->fw_dump) { in qla2100_fw_dump()
915 if (ha->fw_dumped) { in qla2100_fw_dump()
918 "-- ignoring request.\n", in qla2100_fw_dump()
919 ha->fw_dump); in qla2100_fw_dump()
922 fw = &ha->fw_dump->isp.isp21; in qla2100_fw_dump()
923 qla2xxx_prep_dump(ha, ha->fw_dump); in qla2100_fw_dump()
926 fw->hccr = htons(rd_reg_word(®->hccr)); in qla2100_fw_dump()
929 wrt_reg_word(®->hccr, HCCR_PAUSE_RISC); in qla2100_fw_dump()
930 for (cnt = 30000; (rd_reg_word(®->hccr) & HCCR_RISC_PAUSE) == 0 && in qla2100_fw_dump()
931 rval == QLA_SUCCESS; cnt--) { in qla2100_fw_dump()
938 dmp_reg = ®->flash_address; in qla2100_fw_dump()
939 for (cnt = 0; cnt < ARRAY_SIZE(fw->pbiu_reg); cnt++, dmp_reg++) in qla2100_fw_dump()
940 fw->pbiu_reg[cnt] = htons(rd_reg_word(dmp_reg)); in qla2100_fw_dump()
942 dmp_reg = ®->u.isp2100.mailbox0; in qla2100_fw_dump()
943 for (cnt = 0; cnt < ha->mbx_count; cnt++, dmp_reg++) { in qla2100_fw_dump()
945 dmp_reg = ®->u_end.isp2200.mailbox8; in qla2100_fw_dump()
947 fw->mailbox_reg[cnt] = htons(rd_reg_word(dmp_reg)); in qla2100_fw_dump()
950 dmp_reg = ®->u.isp2100.unused_2[0]; in qla2100_fw_dump()
951 for (cnt = 0; cnt < ARRAY_SIZE(fw->dma_reg); cnt++, dmp_reg++) in qla2100_fw_dump()
952 fw->dma_reg[cnt] = htons(rd_reg_word(dmp_reg)); in qla2100_fw_dump()
954 wrt_reg_word(®->ctrl_status, 0x00); in qla2100_fw_dump()
955 dmp_reg = ®->risc_hw; in qla2100_fw_dump()
956 for (cnt = 0; cnt < ARRAY_SIZE(fw->risc_hdw_reg); cnt++, dmp_reg++) in qla2100_fw_dump()
957 fw->risc_hdw_reg[cnt] = htons(rd_reg_word(dmp_reg)); in qla2100_fw_dump()
959 wrt_reg_word(®->pcr, 0x2000); in qla2100_fw_dump()
960 qla2xxx_read_window(reg, 16, fw->risc_gp0_reg); in qla2100_fw_dump()
962 wrt_reg_word(®->pcr, 0x2100); in qla2100_fw_dump()
963 qla2xxx_read_window(reg, 16, fw->risc_gp1_reg); in qla2100_fw_dump()
965 wrt_reg_word(®->pcr, 0x2200); in qla2100_fw_dump()
966 qla2xxx_read_window(reg, 16, fw->risc_gp2_reg); in qla2100_fw_dump()
968 wrt_reg_word(®->pcr, 0x2300); in qla2100_fw_dump()
969 qla2xxx_read_window(reg, 16, fw->risc_gp3_reg); in qla2100_fw_dump()
971 wrt_reg_word(®->pcr, 0x2400); in qla2100_fw_dump()
972 qla2xxx_read_window(reg, 16, fw->risc_gp4_reg); in qla2100_fw_dump()
974 wrt_reg_word(®->pcr, 0x2500); in qla2100_fw_dump()
975 qla2xxx_read_window(reg, 16, fw->risc_gp5_reg); in qla2100_fw_dump()
977 wrt_reg_word(®->pcr, 0x2600); in qla2100_fw_dump()
978 qla2xxx_read_window(reg, 16, fw->risc_gp6_reg); in qla2100_fw_dump()
980 wrt_reg_word(®->pcr, 0x2700); in qla2100_fw_dump()
981 qla2xxx_read_window(reg, 16, fw->risc_gp7_reg); in qla2100_fw_dump()
983 wrt_reg_word(®->ctrl_status, 0x10); in qla2100_fw_dump()
984 qla2xxx_read_window(reg, 16, fw->frame_buf_hdw_reg); in qla2100_fw_dump()
986 wrt_reg_word(®->ctrl_status, 0x20); in qla2100_fw_dump()
987 qla2xxx_read_window(reg, 64, fw->fpm_b0_reg); in qla2100_fw_dump()
989 wrt_reg_word(®->ctrl_status, 0x30); in qla2100_fw_dump()
990 qla2xxx_read_window(reg, 64, fw->fpm_b1_reg); in qla2100_fw_dump()
993 wrt_reg_word(®->ctrl_status, CSR_ISP_SOFT_RESET); in qla2100_fw_dump()
997 rval == QLA_SUCCESS; cnt--) { in qla2100_fw_dump()
1006 (rd_reg_word(®->mctr) & (BIT_1 | BIT_0)) != 0))) { in qla2100_fw_dump()
1008 wrt_reg_word(®->hccr, HCCR_PAUSE_RISC); in qla2100_fw_dump()
1010 (rd_reg_word(®->hccr) & HCCR_RISC_PAUSE) == 0 && in qla2100_fw_dump()
1011 rval == QLA_SUCCESS; cnt--) { in qla2100_fw_dump()
1020 wrt_reg_word(®->mctr, 0xf1); in qla2100_fw_dump()
1022 wrt_reg_word(®->mctr, 0xf2); in qla2100_fw_dump()
1023 rd_reg_word(®->mctr); /* PCI Posting. */ in qla2100_fw_dump()
1026 wrt_reg_word(®->hccr, HCCR_RELEASE_RISC); in qla2100_fw_dump()
1034 clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags); in qla2100_fw_dump()
1036 for (cnt = 0; cnt < ARRAY_SIZE(fw->risc_ram) && rval == QLA_SUCCESS; in qla2100_fw_dump()
1039 wrt_reg_word(®->hccr, HCCR_SET_HOST_INT); in qla2100_fw_dump()
1041 for (timer = 6000000; timer != 0; timer--) { in qla2100_fw_dump()
1043 if (rd_reg_word(®->istatus) & ISR_RISC_INT) { in qla2100_fw_dump()
1044 if (rd_reg_word(®->semaphore) & BIT_0) { in qla2100_fw_dump()
1046 &ha->mbx_cmd_flags); in qla2100_fw_dump()
1051 wrt_reg_word(®->semaphore, 0); in qla2100_fw_dump()
1052 wrt_reg_word(®->hccr, in qla2100_fw_dump()
1054 rd_reg_word(®->hccr); in qla2100_fw_dump()
1057 wrt_reg_word(®->hccr, HCCR_CLR_RISC_INT); in qla2100_fw_dump()
1058 rd_reg_word(®->hccr); in qla2100_fw_dump()
1063 if (test_and_clear_bit(MBX_INTERRUPT, &ha->mbx_cmd_flags)) { in qla2100_fw_dump()
1065 fw->risc_ram[cnt] = htons(mb2); in qla2100_fw_dump()
1072 qla2xxx_copy_queues(ha, &fw->queue_dump[0]); in qla2100_fw_dump()
1082 struct qla_hw_data *ha = vha->hw; in qla24xx_fw_dump()
1083 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; in qla24xx_fw_dump()
1091 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev); in qla24xx_fw_dump()
1093 lockdep_assert_held(&ha->hardware_lock); in qla24xx_fw_dump()
1098 ha->fw_dump_cap_flags = 0; in qla24xx_fw_dump()
1100 if (!ha->fw_dump) { in qla24xx_fw_dump()
1106 if (ha->fw_dumped) { in qla24xx_fw_dump()
1109 "-- ignoring request.\n", in qla24xx_fw_dump()
1110 ha->fw_dump); in qla24xx_fw_dump()
1114 fw = &ha->fw_dump->isp.isp24; in qla24xx_fw_dump()
1115 qla2xxx_prep_dump(ha, ha->fw_dump); in qla24xx_fw_dump()
1117 fw->host_status = htonl(rd_reg_dword(®->host_status)); in qla24xx_fw_dump()
1126 dmp_reg = ®->flash_addr; in qla24xx_fw_dump()
1127 for (cnt = 0; cnt < ARRAY_SIZE(fw->host_reg); cnt++, dmp_reg++) in qla24xx_fw_dump()
1128 fw->host_reg[cnt] = htonl(rd_reg_dword(dmp_reg)); in qla24xx_fw_dump()
1131 wrt_reg_dword(®->ictrl, 0); in qla24xx_fw_dump()
1132 rd_reg_dword(®->ictrl); in qla24xx_fw_dump()
1135 wrt_reg_dword(®->iobase_addr, 0x0F70); in qla24xx_fw_dump()
1136 rd_reg_dword(®->iobase_addr); in qla24xx_fw_dump()
1137 wrt_reg_dword(®->iobase_select, 0xB0000000); in qla24xx_fw_dump()
1138 fw->shadow_reg[0] = htonl(rd_reg_dword(®->iobase_sdata)); in qla24xx_fw_dump()
1140 wrt_reg_dword(®->iobase_select, 0xB0100000); in qla24xx_fw_dump()
1141 fw->shadow_reg[1] = htonl(rd_reg_dword(®->iobase_sdata)); in qla24xx_fw_dump()
1143 wrt_reg_dword(®->iobase_select, 0xB0200000); in qla24xx_fw_dump()
1144 fw->shadow_reg[2] = htonl(rd_reg_dword(®->iobase_sdata)); in qla24xx_fw_dump()
1146 wrt_reg_dword(®->iobase_select, 0xB0300000); in qla24xx_fw_dump()
1147 fw->shadow_reg[3] = htonl(rd_reg_dword(®->iobase_sdata)); in qla24xx_fw_dump()
1149 wrt_reg_dword(®->iobase_select, 0xB0400000); in qla24xx_fw_dump()
1150 fw->shadow_reg[4] = htonl(rd_reg_dword(®->iobase_sdata)); in qla24xx_fw_dump()
1152 wrt_reg_dword(®->iobase_select, 0xB0500000); in qla24xx_fw_dump()
1153 fw->shadow_reg[5] = htonl(rd_reg_dword(®->iobase_sdata)); in qla24xx_fw_dump()
1155 wrt_reg_dword(®->iobase_select, 0xB0600000); in qla24xx_fw_dump()
1156 fw->shadow_reg[6] = htonl(rd_reg_dword(®->iobase_sdata)); in qla24xx_fw_dump()
1159 mbx_reg = ®->mailbox0; in qla24xx_fw_dump()
1160 for (cnt = 0; cnt < ARRAY_SIZE(fw->mailbox_reg); cnt++, mbx_reg++) in qla24xx_fw_dump()
1161 fw->mailbox_reg[cnt] = htons(rd_reg_word(mbx_reg)); in qla24xx_fw_dump()
1164 iter_reg = fw->xseq_gp_reg; in qla24xx_fw_dump()
1165 iter_reg = qla24xx_read_window(reg, 0xBF00, 16, iter_reg); in qla24xx_fw_dump()
1166 iter_reg = qla24xx_read_window(reg, 0xBF10, 16, iter_reg); in qla24xx_fw_dump()
1167 iter_reg = qla24xx_read_window(reg, 0xBF20, 16, iter_reg); in qla24xx_fw_dump()
1168 iter_reg = qla24xx_read_window(reg, 0xBF30, 16, iter_reg); in qla24xx_fw_dump()
1169 iter_reg = qla24xx_read_window(reg, 0xBF40, 16, iter_reg); in qla24xx_fw_dump()
1170 iter_reg = qla24xx_read_window(reg, 0xBF50, 16, iter_reg); in qla24xx_fw_dump()
1171 iter_reg = qla24xx_read_window(reg, 0xBF60, 16, iter_reg); in qla24xx_fw_dump()
1172 qla24xx_read_window(reg, 0xBF70, 16, iter_reg); in qla24xx_fw_dump()
1174 qla24xx_read_window(reg, 0xBFE0, 16, fw->xseq_0_reg); in qla24xx_fw_dump()
1175 qla24xx_read_window(reg, 0xBFF0, 16, fw->xseq_1_reg); in qla24xx_fw_dump()
1178 iter_reg = fw->rseq_gp_reg; in qla24xx_fw_dump()
1179 iter_reg = qla24xx_read_window(reg, 0xFF00, 16, iter_reg); in qla24xx_fw_dump()
1180 iter_reg = qla24xx_read_window(reg, 0xFF10, 16, iter_reg); in qla24xx_fw_dump()
1181 iter_reg = qla24xx_read_window(reg, 0xFF20, 16, iter_reg); in qla24xx_fw_dump()
1182 iter_reg = qla24xx_read_window(reg, 0xFF30, 16, iter_reg); in qla24xx_fw_dump()
1183 iter_reg = qla24xx_read_window(reg, 0xFF40, 16, iter_reg); in qla24xx_fw_dump()
1184 iter_reg = qla24xx_read_window(reg, 0xFF50, 16, iter_reg); in qla24xx_fw_dump()
1185 iter_reg = qla24xx_read_window(reg, 0xFF60, 16, iter_reg); in qla24xx_fw_dump()
1186 qla24xx_read_window(reg, 0xFF70, 16, iter_reg); in qla24xx_fw_dump()
1188 qla24xx_read_window(reg, 0xFFD0, 16, fw->rseq_0_reg); in qla24xx_fw_dump()
1189 qla24xx_read_window(reg, 0xFFE0, 16, fw->rseq_1_reg); in qla24xx_fw_dump()
1190 qla24xx_read_window(reg, 0xFFF0, 16, fw->rseq_2_reg); in qla24xx_fw_dump()
1193 qla24xx_read_window(reg, 0x7100, 16, fw->cmd_dma_reg); in qla24xx_fw_dump()
1196 iter_reg = fw->req0_dma_reg; in qla24xx_fw_dump()
1198 dmp_reg = ®->iobase_q; in qla24xx_fw_dump()
1202 iter_reg = fw->resp0_dma_reg; in qla24xx_fw_dump()
1204 dmp_reg = ®->iobase_q; in qla24xx_fw_dump()
1208 iter_reg = fw->req1_dma_reg; in qla24xx_fw_dump()
1210 dmp_reg = ®->iobase_q; in qla24xx_fw_dump()
1215 iter_reg = fw->xmt0_dma_reg; in qla24xx_fw_dump()
1216 iter_reg = qla24xx_read_window(reg, 0x7600, 16, iter_reg); in qla24xx_fw_dump()
1217 qla24xx_read_window(reg, 0x7610, 16, iter_reg); in qla24xx_fw_dump()
1219 iter_reg = fw->xmt1_dma_reg; in qla24xx_fw_dump()
1220 iter_reg = qla24xx_read_window(reg, 0x7620, 16, iter_reg); in qla24xx_fw_dump()
1221 qla24xx_read_window(reg, 0x7630, 16, iter_reg); in qla24xx_fw_dump()
1223 iter_reg = fw->xmt2_dma_reg; in qla24xx_fw_dump()
1224 iter_reg = qla24xx_read_window(reg, 0x7640, 16, iter_reg); in qla24xx_fw_dump()
1225 qla24xx_read_window(reg, 0x7650, 16, iter_reg); in qla24xx_fw_dump()
1227 iter_reg = fw->xmt3_dma_reg; in qla24xx_fw_dump()
1228 iter_reg = qla24xx_read_window(reg, 0x7660, 16, iter_reg); in qla24xx_fw_dump()
1229 qla24xx_read_window(reg, 0x7670, 16, iter_reg); in qla24xx_fw_dump()
1231 iter_reg = fw->xmt4_dma_reg; in qla24xx_fw_dump()
1232 iter_reg = qla24xx_read_window(reg, 0x7680, 16, iter_reg); in qla24xx_fw_dump()
1233 qla24xx_read_window(reg, 0x7690, 16, iter_reg); in qla24xx_fw_dump()
1235 qla24xx_read_window(reg, 0x76A0, 16, fw->xmt_data_dma_reg); in qla24xx_fw_dump()
1238 iter_reg = fw->rcvt0_data_dma_reg; in qla24xx_fw_dump()
1239 iter_reg = qla24xx_read_window(reg, 0x7700, 16, iter_reg); in qla24xx_fw_dump()
1240 qla24xx_read_window(reg, 0x7710, 16, iter_reg); in qla24xx_fw_dump()
1242 iter_reg = fw->rcvt1_data_dma_reg; in qla24xx_fw_dump()
1243 iter_reg = qla24xx_read_window(reg, 0x7720, 16, iter_reg); in qla24xx_fw_dump()
1244 qla24xx_read_window(reg, 0x7730, 16, iter_reg); in qla24xx_fw_dump()
1247 iter_reg = fw->risc_gp_reg; in qla24xx_fw_dump()
1248 iter_reg = qla24xx_read_window(reg, 0x0F00, 16, iter_reg); in qla24xx_fw_dump()
1249 iter_reg = qla24xx_read_window(reg, 0x0F10, 16, iter_reg); in qla24xx_fw_dump()
1250 iter_reg = qla24xx_read_window(reg, 0x0F20, 16, iter_reg); in qla24xx_fw_dump()
1251 iter_reg = qla24xx_read_window(reg, 0x0F30, 16, iter_reg); in qla24xx_fw_dump()
1252 iter_reg = qla24xx_read_window(reg, 0x0F40, 16, iter_reg); in qla24xx_fw_dump()
1253 iter_reg = qla24xx_read_window(reg, 0x0F50, 16, iter_reg); in qla24xx_fw_dump()
1254 iter_reg = qla24xx_read_window(reg, 0x0F60, 16, iter_reg); in qla24xx_fw_dump()
1255 qla24xx_read_window(reg, 0x0F70, 16, iter_reg); in qla24xx_fw_dump()
1258 iter_reg = fw->lmc_reg; in qla24xx_fw_dump()
1259 iter_reg = qla24xx_read_window(reg, 0x3000, 16, iter_reg); in qla24xx_fw_dump()
1260 iter_reg = qla24xx_read_window(reg, 0x3010, 16, iter_reg); in qla24xx_fw_dump()
1261 iter_reg = qla24xx_read_window(reg, 0x3020, 16, iter_reg); in qla24xx_fw_dump()
1262 iter_reg = qla24xx_read_window(reg, 0x3030, 16, iter_reg); in qla24xx_fw_dump()
1263 iter_reg = qla24xx_read_window(reg, 0x3040, 16, iter_reg); in qla24xx_fw_dump()
1264 iter_reg = qla24xx_read_window(reg, 0x3050, 16, iter_reg); in qla24xx_fw_dump()
1265 qla24xx_read_window(reg, 0x3060, 16, iter_reg); in qla24xx_fw_dump()
1268 iter_reg = fw->fpm_hdw_reg; in qla24xx_fw_dump()
1269 iter_reg = qla24xx_read_window(reg, 0x4000, 16, iter_reg); in qla24xx_fw_dump()
1270 iter_reg = qla24xx_read_window(reg, 0x4010, 16, iter_reg); in qla24xx_fw_dump()
1271 iter_reg = qla24xx_read_window(reg, 0x4020, 16, iter_reg); in qla24xx_fw_dump()
1272 iter_reg = qla24xx_read_window(reg, 0x4030, 16, iter_reg); in qla24xx_fw_dump()
1273 iter_reg = qla24xx_read_window(reg, 0x4040, 16, iter_reg); in qla24xx_fw_dump()
1274 iter_reg = qla24xx_read_window(reg, 0x4050, 16, iter_reg); in qla24xx_fw_dump()
1275 iter_reg = qla24xx_read_window(reg, 0x4060, 16, iter_reg); in qla24xx_fw_dump()
1276 iter_reg = qla24xx_read_window(reg, 0x4070, 16, iter_reg); in qla24xx_fw_dump()
1277 iter_reg = qla24xx_read_window(reg, 0x4080, 16, iter_reg); in qla24xx_fw_dump()
1278 iter_reg = qla24xx_read_window(reg, 0x4090, 16, iter_reg); in qla24xx_fw_dump()
1279 iter_reg = qla24xx_read_window(reg, 0x40A0, 16, iter_reg); in qla24xx_fw_dump()
1280 qla24xx_read_window(reg, 0x40B0, 16, iter_reg); in qla24xx_fw_dump()
1283 iter_reg = fw->fb_hdw_reg; in qla24xx_fw_dump()
1284 iter_reg = qla24xx_read_window(reg, 0x6000, 16, iter_reg); in qla24xx_fw_dump()
1285 iter_reg = qla24xx_read_window(reg, 0x6010, 16, iter_reg); in qla24xx_fw_dump()
1286 iter_reg = qla24xx_read_window(reg, 0x6020, 16, iter_reg); in qla24xx_fw_dump()
1287 iter_reg = qla24xx_read_window(reg, 0x6030, 16, iter_reg); in qla24xx_fw_dump()
1288 iter_reg = qla24xx_read_window(reg, 0x6040, 16, iter_reg); in qla24xx_fw_dump()
1289 iter_reg = qla24xx_read_window(reg, 0x6100, 16, iter_reg); in qla24xx_fw_dump()
1290 iter_reg = qla24xx_read_window(reg, 0x6130, 16, iter_reg); in qla24xx_fw_dump()
1291 iter_reg = qla24xx_read_window(reg, 0x6150, 16, iter_reg); in qla24xx_fw_dump()
1292 iter_reg = qla24xx_read_window(reg, 0x6170, 16, iter_reg); in qla24xx_fw_dump()
1293 iter_reg = qla24xx_read_window(reg, 0x6190, 16, iter_reg); in qla24xx_fw_dump()
1294 qla24xx_read_window(reg, 0x61B0, 16, iter_reg); in qla24xx_fw_dump()
1300 rval = qla24xx_dump_memory(ha, fw->code_ram, sizeof(fw->code_ram), in qla24xx_fw_dump()
1309 nxt_chain = (void *)ha->fw_dump + ha->chain_offset; in qla24xx_fw_dump()
1312 ha->fw_dump->version |= htonl(DUMP_CHAIN_VARIANT); in qla24xx_fw_dump()
1317 ha->fw_dump_len = (nxt_chain - (void *)ha->fw_dump); in qla24xx_fw_dump()
1328 struct qla_hw_data *ha = vha->hw; in qla25xx_fw_dump()
1329 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; in qla25xx_fw_dump()
1336 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev); in qla25xx_fw_dump()
1338 lockdep_assert_held(&ha->hardware_lock); in qla25xx_fw_dump()
1340 ha->fw_dump_cap_flags = 0; in qla25xx_fw_dump()
1342 if (!ha->fw_dump) { in qla25xx_fw_dump()
1348 if (ha->fw_dumped) { in qla25xx_fw_dump()
1351 "-- ignoring request.\n", in qla25xx_fw_dump()
1352 ha->fw_dump); in qla25xx_fw_dump()
1356 fw = &ha->fw_dump->isp.isp25; in qla25xx_fw_dump()
1357 qla2xxx_prep_dump(ha, ha->fw_dump); in qla25xx_fw_dump()
1358 ha->fw_dump->version = htonl(2); in qla25xx_fw_dump()
1360 fw->host_status = htonl(rd_reg_dword(®->host_status)); in qla25xx_fw_dump()
1369 iter_reg = fw->host_risc_reg; in qla25xx_fw_dump()
1370 iter_reg = qla24xx_read_window(reg, 0x7000, 16, iter_reg); in qla25xx_fw_dump()
1371 qla24xx_read_window(reg, 0x7010, 16, iter_reg); in qla25xx_fw_dump()
1374 wrt_reg_dword(®->iobase_addr, 0x7C00); in qla25xx_fw_dump()
1375 rd_reg_dword(®->iobase_addr); in qla25xx_fw_dump()
1376 wrt_reg_dword(®->iobase_window, 0x01); in qla25xx_fw_dump()
1377 dmp_reg = ®->iobase_c4; in qla25xx_fw_dump()
1378 fw->pcie_regs[0] = htonl(rd_reg_dword(dmp_reg)); in qla25xx_fw_dump()
1380 fw->pcie_regs[1] = htonl(rd_reg_dword(dmp_reg)); in qla25xx_fw_dump()
1382 fw->pcie_regs[2] = htonl(rd_reg_dword(dmp_reg)); in qla25xx_fw_dump()
1383 fw->pcie_regs[3] = htonl(rd_reg_dword(®->iobase_window)); in qla25xx_fw_dump()
1385 wrt_reg_dword(®->iobase_window, 0x00); in qla25xx_fw_dump()
1386 rd_reg_dword(®->iobase_window); in qla25xx_fw_dump()
1389 dmp_reg = ®->flash_addr; in qla25xx_fw_dump()
1390 for (cnt = 0; cnt < ARRAY_SIZE(fw->host_reg); cnt++, dmp_reg++) in qla25xx_fw_dump()
1391 fw->host_reg[cnt] = htonl(rd_reg_dword(dmp_reg)); in qla25xx_fw_dump()
1394 wrt_reg_dword(®->ictrl, 0); in qla25xx_fw_dump()
1395 rd_reg_dword(®->ictrl); in qla25xx_fw_dump()
1398 wrt_reg_dword(®->iobase_addr, 0x0F70); in qla25xx_fw_dump()
1399 rd_reg_dword(®->iobase_addr); in qla25xx_fw_dump()
1400 wrt_reg_dword(®->iobase_select, 0xB0000000); in qla25xx_fw_dump()
1401 fw->shadow_reg[0] = htonl(rd_reg_dword(®->iobase_sdata)); in qla25xx_fw_dump()
1403 wrt_reg_dword(®->iobase_select, 0xB0100000); in qla25xx_fw_dump()
1404 fw->shadow_reg[1] = htonl(rd_reg_dword(®->iobase_sdata)); in qla25xx_fw_dump()
1406 wrt_reg_dword(®->iobase_select, 0xB0200000); in qla25xx_fw_dump()
1407 fw->shadow_reg[2] = htonl(rd_reg_dword(®->iobase_sdata)); in qla25xx_fw_dump()
1409 wrt_reg_dword(®->iobase_select, 0xB0300000); in qla25xx_fw_dump()
1410 fw->shadow_reg[3] = htonl(rd_reg_dword(®->iobase_sdata)); in qla25xx_fw_dump()
1412 wrt_reg_dword(®->iobase_select, 0xB0400000); in qla25xx_fw_dump()
1413 fw->shadow_reg[4] = htonl(rd_reg_dword(®->iobase_sdata)); in qla25xx_fw_dump()
1415 wrt_reg_dword(®->iobase_select, 0xB0500000); in qla25xx_fw_dump()
1416 fw->shadow_reg[5] = htonl(rd_reg_dword(®->iobase_sdata)); in qla25xx_fw_dump()
1418 wrt_reg_dword(®->iobase_select, 0xB0600000); in qla25xx_fw_dump()
1419 fw->shadow_reg[6] = htonl(rd_reg_dword(®->iobase_sdata)); in qla25xx_fw_dump()
1421 wrt_reg_dword(®->iobase_select, 0xB0700000); in qla25xx_fw_dump()
1422 fw->shadow_reg[7] = htonl(rd_reg_dword(®->iobase_sdata)); in qla25xx_fw_dump()
1424 wrt_reg_dword(®->iobase_select, 0xB0800000); in qla25xx_fw_dump()
1425 fw->shadow_reg[8] = htonl(rd_reg_dword(®->iobase_sdata)); in qla25xx_fw_dump()
1427 wrt_reg_dword(®->iobase_select, 0xB0900000); in qla25xx_fw_dump()
1428 fw->shadow_reg[9] = htonl(rd_reg_dword(®->iobase_sdata)); in qla25xx_fw_dump()
1430 wrt_reg_dword(®->iobase_select, 0xB0A00000); in qla25xx_fw_dump()
1431 fw->shadow_reg[10] = htonl(rd_reg_dword(®->iobase_sdata)); in qla25xx_fw_dump()
1434 wrt_reg_dword(®->iobase_addr, 0x0010); in qla25xx_fw_dump()
1435 fw->risc_io_reg = htonl(rd_reg_dword(®->iobase_window)); in qla25xx_fw_dump()
1438 mbx_reg = ®->mailbox0; in qla25xx_fw_dump()
1439 for (cnt = 0; cnt < ARRAY_SIZE(fw->mailbox_reg); cnt++, mbx_reg++) in qla25xx_fw_dump()
1440 fw->mailbox_reg[cnt] = htons(rd_reg_word(mbx_reg)); in qla25xx_fw_dump()
1443 iter_reg = fw->xseq_gp_reg; in qla25xx_fw_dump()
1444 iter_reg = qla24xx_read_window(reg, 0xBF00, 16, iter_reg); in qla25xx_fw_dump()
1445 iter_reg = qla24xx_read_window(reg, 0xBF10, 16, iter_reg); in qla25xx_fw_dump()
1446 iter_reg = qla24xx_read_window(reg, 0xBF20, 16, iter_reg); in qla25xx_fw_dump()
1447 iter_reg = qla24xx_read_window(reg, 0xBF30, 16, iter_reg); in qla25xx_fw_dump()
1448 iter_reg = qla24xx_read_window(reg, 0xBF40, 16, iter_reg); in qla25xx_fw_dump()
1449 iter_reg = qla24xx_read_window(reg, 0xBF50, 16, iter_reg); in qla25xx_fw_dump()
1450 iter_reg = qla24xx_read_window(reg, 0xBF60, 16, iter_reg); in qla25xx_fw_dump()
1451 qla24xx_read_window(reg, 0xBF70, 16, iter_reg); in qla25xx_fw_dump()
1453 iter_reg = fw->xseq_0_reg; in qla25xx_fw_dump()
1454 iter_reg = qla24xx_read_window(reg, 0xBFC0, 16, iter_reg); in qla25xx_fw_dump()
1455 iter_reg = qla24xx_read_window(reg, 0xBFD0, 16, iter_reg); in qla25xx_fw_dump()
1456 qla24xx_read_window(reg, 0xBFE0, 16, iter_reg); in qla25xx_fw_dump()
1458 qla24xx_read_window(reg, 0xBFF0, 16, fw->xseq_1_reg); in qla25xx_fw_dump()
1461 iter_reg = fw->rseq_gp_reg; in qla25xx_fw_dump()
1462 iter_reg = qla24xx_read_window(reg, 0xFF00, 16, iter_reg); in qla25xx_fw_dump()
1463 iter_reg = qla24xx_read_window(reg, 0xFF10, 16, iter_reg); in qla25xx_fw_dump()
1464 iter_reg = qla24xx_read_window(reg, 0xFF20, 16, iter_reg); in qla25xx_fw_dump()
1465 iter_reg = qla24xx_read_window(reg, 0xFF30, 16, iter_reg); in qla25xx_fw_dump()
1466 iter_reg = qla24xx_read_window(reg, 0xFF40, 16, iter_reg); in qla25xx_fw_dump()
1467 iter_reg = qla24xx_read_window(reg, 0xFF50, 16, iter_reg); in qla25xx_fw_dump()
1468 iter_reg = qla24xx_read_window(reg, 0xFF60, 16, iter_reg); in qla25xx_fw_dump()
1469 qla24xx_read_window(reg, 0xFF70, 16, iter_reg); in qla25xx_fw_dump()
1471 iter_reg = fw->rseq_0_reg; in qla25xx_fw_dump()
1472 iter_reg = qla24xx_read_window(reg, 0xFFC0, 16, iter_reg); in qla25xx_fw_dump()
1473 qla24xx_read_window(reg, 0xFFD0, 16, iter_reg); in qla25xx_fw_dump()
1475 qla24xx_read_window(reg, 0xFFE0, 16, fw->rseq_1_reg); in qla25xx_fw_dump()
1476 qla24xx_read_window(reg, 0xFFF0, 16, fw->rseq_2_reg); in qla25xx_fw_dump()
1479 iter_reg = fw->aseq_gp_reg; in qla25xx_fw_dump()
1480 iter_reg = qla24xx_read_window(reg, 0xB000, 16, iter_reg); in qla25xx_fw_dump()
1481 iter_reg = qla24xx_read_window(reg, 0xB010, 16, iter_reg); in qla25xx_fw_dump()
1482 iter_reg = qla24xx_read_window(reg, 0xB020, 16, iter_reg); in qla25xx_fw_dump()
1483 iter_reg = qla24xx_read_window(reg, 0xB030, 16, iter_reg); in qla25xx_fw_dump()
1484 iter_reg = qla24xx_read_window(reg, 0xB040, 16, iter_reg); in qla25xx_fw_dump()
1485 iter_reg = qla24xx_read_window(reg, 0xB050, 16, iter_reg); in qla25xx_fw_dump()
1486 iter_reg = qla24xx_read_window(reg, 0xB060, 16, iter_reg); in qla25xx_fw_dump()
1487 qla24xx_read_window(reg, 0xB070, 16, iter_reg); in qla25xx_fw_dump()
1489 iter_reg = fw->aseq_0_reg; in qla25xx_fw_dump()
1490 iter_reg = qla24xx_read_window(reg, 0xB0C0, 16, iter_reg); in qla25xx_fw_dump()
1491 qla24xx_read_window(reg, 0xB0D0, 16, iter_reg); in qla25xx_fw_dump()
1493 qla24xx_read_window(reg, 0xB0E0, 16, fw->aseq_1_reg); in qla25xx_fw_dump()
1494 qla24xx_read_window(reg, 0xB0F0, 16, fw->aseq_2_reg); in qla25xx_fw_dump()
1497 qla24xx_read_window(reg, 0x7100, 16, fw->cmd_dma_reg); in qla25xx_fw_dump()
1500 iter_reg = fw->req0_dma_reg; in qla25xx_fw_dump()
1502 dmp_reg = ®->iobase_q; in qla25xx_fw_dump()
1506 iter_reg = fw->resp0_dma_reg; in qla25xx_fw_dump()
1508 dmp_reg = ®->iobase_q; in qla25xx_fw_dump()
1512 iter_reg = fw->req1_dma_reg; in qla25xx_fw_dump()
1514 dmp_reg = ®->iobase_q; in qla25xx_fw_dump()
1519 iter_reg = fw->xmt0_dma_reg; in qla25xx_fw_dump()
1520 iter_reg = qla24xx_read_window(reg, 0x7600, 16, iter_reg); in qla25xx_fw_dump()
1521 qla24xx_read_window(reg, 0x7610, 16, iter_reg); in qla25xx_fw_dump()
1523 iter_reg = fw->xmt1_dma_reg; in qla25xx_fw_dump()
1524 iter_reg = qla24xx_read_window(reg, 0x7620, 16, iter_reg); in qla25xx_fw_dump()
1525 qla24xx_read_window(reg, 0x7630, 16, iter_reg); in qla25xx_fw_dump()
1527 iter_reg = fw->xmt2_dma_reg; in qla25xx_fw_dump()
1528 iter_reg = qla24xx_read_window(reg, 0x7640, 16, iter_reg); in qla25xx_fw_dump()
1529 qla24xx_read_window(reg, 0x7650, 16, iter_reg); in qla25xx_fw_dump()
1531 iter_reg = fw->xmt3_dma_reg; in qla25xx_fw_dump()
1532 iter_reg = qla24xx_read_window(reg, 0x7660, 16, iter_reg); in qla25xx_fw_dump()
1533 qla24xx_read_window(reg, 0x7670, 16, iter_reg); in qla25xx_fw_dump()
1535 iter_reg = fw->xmt4_dma_reg; in qla25xx_fw_dump()
1536 iter_reg = qla24xx_read_window(reg, 0x7680, 16, iter_reg); in qla25xx_fw_dump()
1537 qla24xx_read_window(reg, 0x7690, 16, iter_reg); in qla25xx_fw_dump()
1539 qla24xx_read_window(reg, 0x76A0, 16, fw->xmt_data_dma_reg); in qla25xx_fw_dump()
1542 iter_reg = fw->rcvt0_data_dma_reg; in qla25xx_fw_dump()
1543 iter_reg = qla24xx_read_window(reg, 0x7700, 16, iter_reg); in qla25xx_fw_dump()
1544 qla24xx_read_window(reg, 0x7710, 16, iter_reg); in qla25xx_fw_dump()
1546 iter_reg = fw->rcvt1_data_dma_reg; in qla25xx_fw_dump()
1547 iter_reg = qla24xx_read_window(reg, 0x7720, 16, iter_reg); in qla25xx_fw_dump()
1548 qla24xx_read_window(reg, 0x7730, 16, iter_reg); in qla25xx_fw_dump()
1551 iter_reg = fw->risc_gp_reg; in qla25xx_fw_dump()
1552 iter_reg = qla24xx_read_window(reg, 0x0F00, 16, iter_reg); in qla25xx_fw_dump()
1553 iter_reg = qla24xx_read_window(reg, 0x0F10, 16, iter_reg); in qla25xx_fw_dump()
1554 iter_reg = qla24xx_read_window(reg, 0x0F20, 16, iter_reg); in qla25xx_fw_dump()
1555 iter_reg = qla24xx_read_window(reg, 0x0F30, 16, iter_reg); in qla25xx_fw_dump()
1556 iter_reg = qla24xx_read_window(reg, 0x0F40, 16, iter_reg); in qla25xx_fw_dump()
1557 iter_reg = qla24xx_read_window(reg, 0x0F50, 16, iter_reg); in qla25xx_fw_dump()
1558 iter_reg = qla24xx_read_window(reg, 0x0F60, 16, iter_reg); in qla25xx_fw_dump()
1559 qla24xx_read_window(reg, 0x0F70, 16, iter_reg); in qla25xx_fw_dump()
1562 iter_reg = fw->lmc_reg; in qla25xx_fw_dump()
1563 iter_reg = qla24xx_read_window(reg, 0x3000, 16, iter_reg); in qla25xx_fw_dump()
1564 iter_reg = qla24xx_read_window(reg, 0x3010, 16, iter_reg); in qla25xx_fw_dump()
1565 iter_reg = qla24xx_read_window(reg, 0x3020, 16, iter_reg); in qla25xx_fw_dump()
1566 iter_reg = qla24xx_read_window(reg, 0x3030, 16, iter_reg); in qla25xx_fw_dump()
1567 iter_reg = qla24xx_read_window(reg, 0x3040, 16, iter_reg); in qla25xx_fw_dump()
1568 iter_reg = qla24xx_read_window(reg, 0x3050, 16, iter_reg); in qla25xx_fw_dump()
1569 iter_reg = qla24xx_read_window(reg, 0x3060, 16, iter_reg); in qla25xx_fw_dump()
1570 qla24xx_read_window(reg, 0x3070, 16, iter_reg); in qla25xx_fw_dump()
1573 iter_reg = fw->fpm_hdw_reg; in qla25xx_fw_dump()
1574 iter_reg = qla24xx_read_window(reg, 0x4000, 16, iter_reg); in qla25xx_fw_dump()
1575 iter_reg = qla24xx_read_window(reg, 0x4010, 16, iter_reg); in qla25xx_fw_dump()
1576 iter_reg = qla24xx_read_window(reg, 0x4020, 16, iter_reg); in qla25xx_fw_dump()
1577 iter_reg = qla24xx_read_window(reg, 0x4030, 16, iter_reg); in qla25xx_fw_dump()
1578 iter_reg = qla24xx_read_window(reg, 0x4040, 16, iter_reg); in qla25xx_fw_dump()
1579 iter_reg = qla24xx_read_window(reg, 0x4050, 16, iter_reg); in qla25xx_fw_dump()
1580 iter_reg = qla24xx_read_window(reg, 0x4060, 16, iter_reg); in qla25xx_fw_dump()
1581 iter_reg = qla24xx_read_window(reg, 0x4070, 16, iter_reg); in qla25xx_fw_dump()
1582 iter_reg = qla24xx_read_window(reg, 0x4080, 16, iter_reg); in qla25xx_fw_dump()
1583 iter_reg = qla24xx_read_window(reg, 0x4090, 16, iter_reg); in qla25xx_fw_dump()
1584 iter_reg = qla24xx_read_window(reg, 0x40A0, 16, iter_reg); in qla25xx_fw_dump()
1585 qla24xx_read_window(reg, 0x40B0, 16, iter_reg); in qla25xx_fw_dump()
1588 iter_reg = fw->fb_hdw_reg; in qla25xx_fw_dump()
1589 iter_reg = qla24xx_read_window(reg, 0x6000, 16, iter_reg); in qla25xx_fw_dump()
1590 iter_reg = qla24xx_read_window(reg, 0x6010, 16, iter_reg); in qla25xx_fw_dump()
1591 iter_reg = qla24xx_read_window(reg, 0x6020, 16, iter_reg); in qla25xx_fw_dump()
1592 iter_reg = qla24xx_read_window(reg, 0x6030, 16, iter_reg); in qla25xx_fw_dump()
1593 iter_reg = qla24xx_read_window(reg, 0x6040, 16, iter_reg); in qla25xx_fw_dump()
1594 iter_reg = qla24xx_read_window(reg, 0x6100, 16, iter_reg); in qla25xx_fw_dump()
1595 iter_reg = qla24xx_read_window(reg, 0x6130, 16, iter_reg); in qla25xx_fw_dump()
1596 iter_reg = qla24xx_read_window(reg, 0x6150, 16, iter_reg); in qla25xx_fw_dump()
1597 iter_reg = qla24xx_read_window(reg, 0x6170, 16, iter_reg); in qla25xx_fw_dump()
1598 iter_reg = qla24xx_read_window(reg, 0x6190, 16, iter_reg); in qla25xx_fw_dump()
1599 iter_reg = qla24xx_read_window(reg, 0x61B0, 16, iter_reg); in qla25xx_fw_dump()
1600 qla24xx_read_window(reg, 0x6F00, 16, iter_reg); in qla25xx_fw_dump()
1603 nxt_chain = qla25xx_copy_mq(ha, (void *)ha->fw_dump + ha->chain_offset, in qla25xx_fw_dump()
1610 rval = qla24xx_dump_memory(ha, fw->code_ram, sizeof(fw->code_ram), in qla25xx_fw_dump()
1619 /* Chain entries -- started with MQ. */ in qla25xx_fw_dump()
1625 ha->fw_dump->version |= htonl(DUMP_CHAIN_VARIANT); in qla25xx_fw_dump()
1630 ha->fw_dump_len = (nxt_chain - (void *)ha->fw_dump); in qla25xx_fw_dump()
1641 struct qla_hw_data *ha = vha->hw; in qla81xx_fw_dump()
1642 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; in qla81xx_fw_dump()
1649 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev); in qla81xx_fw_dump()
1651 lockdep_assert_held(&ha->hardware_lock); in qla81xx_fw_dump()
1653 ha->fw_dump_cap_flags = 0; in qla81xx_fw_dump()
1655 if (!ha->fw_dump) { in qla81xx_fw_dump()
1661 if (ha->fw_dumped) { in qla81xx_fw_dump()
1664 "-- ignoring request.\n", in qla81xx_fw_dump()
1665 ha->fw_dump); in qla81xx_fw_dump()
1668 fw = &ha->fw_dump->isp.isp81; in qla81xx_fw_dump()
1669 qla2xxx_prep_dump(ha, ha->fw_dump); in qla81xx_fw_dump()
1671 fw->host_status = htonl(rd_reg_dword(®->host_status)); in qla81xx_fw_dump()
1680 iter_reg = fw->host_risc_reg; in qla81xx_fw_dump()
1681 iter_reg = qla24xx_read_window(reg, 0x7000, 16, iter_reg); in qla81xx_fw_dump()
1682 qla24xx_read_window(reg, 0x7010, 16, iter_reg); in qla81xx_fw_dump()
1685 wrt_reg_dword(®->iobase_addr, 0x7C00); in qla81xx_fw_dump()
1686 rd_reg_dword(®->iobase_addr); in qla81xx_fw_dump()
1687 wrt_reg_dword(®->iobase_window, 0x01); in qla81xx_fw_dump()
1688 dmp_reg = ®->iobase_c4; in qla81xx_fw_dump()
1689 fw->pcie_regs[0] = htonl(rd_reg_dword(dmp_reg)); in qla81xx_fw_dump()
1691 fw->pcie_regs[1] = htonl(rd_reg_dword(dmp_reg)); in qla81xx_fw_dump()
1693 fw->pcie_regs[2] = htonl(rd_reg_dword(dmp_reg)); in qla81xx_fw_dump()
1694 fw->pcie_regs[3] = htonl(rd_reg_dword(®->iobase_window)); in qla81xx_fw_dump()
1696 wrt_reg_dword(®->iobase_window, 0x00); in qla81xx_fw_dump()
1697 rd_reg_dword(®->iobase_window); in qla81xx_fw_dump()
1700 dmp_reg = ®->flash_addr; in qla81xx_fw_dump()
1701 for (cnt = 0; cnt < ARRAY_SIZE(fw->host_reg); cnt++, dmp_reg++) in qla81xx_fw_dump()
1702 fw->host_reg[cnt] = htonl(rd_reg_dword(dmp_reg)); in qla81xx_fw_dump()
1705 wrt_reg_dword(®->ictrl, 0); in qla81xx_fw_dump()
1706 rd_reg_dword(®->ictrl); in qla81xx_fw_dump()
1709 wrt_reg_dword(®->iobase_addr, 0x0F70); in qla81xx_fw_dump()
1710 rd_reg_dword(®->iobase_addr); in qla81xx_fw_dump()
1711 wrt_reg_dword(®->iobase_select, 0xB0000000); in qla81xx_fw_dump()
1712 fw->shadow_reg[0] = htonl(rd_reg_dword(®->iobase_sdata)); in qla81xx_fw_dump()
1714 wrt_reg_dword(®->iobase_select, 0xB0100000); in qla81xx_fw_dump()
1715 fw->shadow_reg[1] = htonl(rd_reg_dword(®->iobase_sdata)); in qla81xx_fw_dump()
1717 wrt_reg_dword(®->iobase_select, 0xB0200000); in qla81xx_fw_dump()
1718 fw->shadow_reg[2] = htonl(rd_reg_dword(®->iobase_sdata)); in qla81xx_fw_dump()
1720 wrt_reg_dword(®->iobase_select, 0xB0300000); in qla81xx_fw_dump()
1721 fw->shadow_reg[3] = htonl(rd_reg_dword(®->iobase_sdata)); in qla81xx_fw_dump()
1723 wrt_reg_dword(®->iobase_select, 0xB0400000); in qla81xx_fw_dump()
1724 fw->shadow_reg[4] = htonl(rd_reg_dword(®->iobase_sdata)); in qla81xx_fw_dump()
1726 wrt_reg_dword(®->iobase_select, 0xB0500000); in qla81xx_fw_dump()
1727 fw->shadow_reg[5] = htonl(rd_reg_dword(®->iobase_sdata)); in qla81xx_fw_dump()
1729 wrt_reg_dword(®->iobase_select, 0xB0600000); in qla81xx_fw_dump()
1730 fw->shadow_reg[6] = htonl(rd_reg_dword(®->iobase_sdata)); in qla81xx_fw_dump()
1732 wrt_reg_dword(®->iobase_select, 0xB0700000); in qla81xx_fw_dump()
1733 fw->shadow_reg[7] = htonl(rd_reg_dword(®->iobase_sdata)); in qla81xx_fw_dump()
1735 wrt_reg_dword(®->iobase_select, 0xB0800000); in qla81xx_fw_dump()
1736 fw->shadow_reg[8] = htonl(rd_reg_dword(®->iobase_sdata)); in qla81xx_fw_dump()
1738 wrt_reg_dword(®->iobase_select, 0xB0900000); in qla81xx_fw_dump()
1739 fw->shadow_reg[9] = htonl(rd_reg_dword(®->iobase_sdata)); in qla81xx_fw_dump()
1741 wrt_reg_dword(®->iobase_select, 0xB0A00000); in qla81xx_fw_dump()
1742 fw->shadow_reg[10] = htonl(rd_reg_dword(®->iobase_sdata)); in qla81xx_fw_dump()
1745 wrt_reg_dword(®->iobase_addr, 0x0010); in qla81xx_fw_dump()
1746 fw->risc_io_reg = htonl(rd_reg_dword(®->iobase_window)); in qla81xx_fw_dump()
1749 mbx_reg = ®->mailbox0; in qla81xx_fw_dump()
1750 for (cnt = 0; cnt < ARRAY_SIZE(fw->mailbox_reg); cnt++, mbx_reg++) in qla81xx_fw_dump()
1751 fw->mailbox_reg[cnt] = htons(rd_reg_word(mbx_reg)); in qla81xx_fw_dump()
1754 iter_reg = fw->xseq_gp_reg; in qla81xx_fw_dump()
1755 iter_reg = qla24xx_read_window(reg, 0xBF00, 16, iter_reg); in qla81xx_fw_dump()
1756 iter_reg = qla24xx_read_window(reg, 0xBF10, 16, iter_reg); in qla81xx_fw_dump()
1757 iter_reg = qla24xx_read_window(reg, 0xBF20, 16, iter_reg); in qla81xx_fw_dump()
1758 iter_reg = qla24xx_read_window(reg, 0xBF30, 16, iter_reg); in qla81xx_fw_dump()
1759 iter_reg = qla24xx_read_window(reg, 0xBF40, 16, iter_reg); in qla81xx_fw_dump()
1760 iter_reg = qla24xx_read_window(reg, 0xBF50, 16, iter_reg); in qla81xx_fw_dump()
1761 iter_reg = qla24xx_read_window(reg, 0xBF60, 16, iter_reg); in qla81xx_fw_dump()
1762 qla24xx_read_window(reg, 0xBF70, 16, iter_reg); in qla81xx_fw_dump()
1764 iter_reg = fw->xseq_0_reg; in qla81xx_fw_dump()
1765 iter_reg = qla24xx_read_window(reg, 0xBFC0, 16, iter_reg); in qla81xx_fw_dump()
1766 iter_reg = qla24xx_read_window(reg, 0xBFD0, 16, iter_reg); in qla81xx_fw_dump()
1767 qla24xx_read_window(reg, 0xBFE0, 16, iter_reg); in qla81xx_fw_dump()
1769 qla24xx_read_window(reg, 0xBFF0, 16, fw->xseq_1_reg); in qla81xx_fw_dump()
1772 iter_reg = fw->rseq_gp_reg; in qla81xx_fw_dump()
1773 iter_reg = qla24xx_read_window(reg, 0xFF00, 16, iter_reg); in qla81xx_fw_dump()
1774 iter_reg = qla24xx_read_window(reg, 0xFF10, 16, iter_reg); in qla81xx_fw_dump()
1775 iter_reg = qla24xx_read_window(reg, 0xFF20, 16, iter_reg); in qla81xx_fw_dump()
1776 iter_reg = qla24xx_read_window(reg, 0xFF30, 16, iter_reg); in qla81xx_fw_dump()
1777 iter_reg = qla24xx_read_window(reg, 0xFF40, 16, iter_reg); in qla81xx_fw_dump()
1778 iter_reg = qla24xx_read_window(reg, 0xFF50, 16, iter_reg); in qla81xx_fw_dump()
1779 iter_reg = qla24xx_read_window(reg, 0xFF60, 16, iter_reg); in qla81xx_fw_dump()
1780 qla24xx_read_window(reg, 0xFF70, 16, iter_reg); in qla81xx_fw_dump()
1782 iter_reg = fw->rseq_0_reg; in qla81xx_fw_dump()
1783 iter_reg = qla24xx_read_window(reg, 0xFFC0, 16, iter_reg); in qla81xx_fw_dump()
1784 qla24xx_read_window(reg, 0xFFD0, 16, iter_reg); in qla81xx_fw_dump()
1786 qla24xx_read_window(reg, 0xFFE0, 16, fw->rseq_1_reg); in qla81xx_fw_dump()
1787 qla24xx_read_window(reg, 0xFFF0, 16, fw->rseq_2_reg); in qla81xx_fw_dump()
1790 iter_reg = fw->aseq_gp_reg; in qla81xx_fw_dump()
1791 iter_reg = qla24xx_read_window(reg, 0xB000, 16, iter_reg); in qla81xx_fw_dump()
1792 iter_reg = qla24xx_read_window(reg, 0xB010, 16, iter_reg); in qla81xx_fw_dump()
1793 iter_reg = qla24xx_read_window(reg, 0xB020, 16, iter_reg); in qla81xx_fw_dump()
1794 iter_reg = qla24xx_read_window(reg, 0xB030, 16, iter_reg); in qla81xx_fw_dump()
1795 iter_reg = qla24xx_read_window(reg, 0xB040, 16, iter_reg); in qla81xx_fw_dump()
1796 iter_reg = qla24xx_read_window(reg, 0xB050, 16, iter_reg); in qla81xx_fw_dump()
1797 iter_reg = qla24xx_read_window(reg, 0xB060, 16, iter_reg); in qla81xx_fw_dump()
1798 qla24xx_read_window(reg, 0xB070, 16, iter_reg); in qla81xx_fw_dump()
1800 iter_reg = fw->aseq_0_reg; in qla81xx_fw_dump()
1801 iter_reg = qla24xx_read_window(reg, 0xB0C0, 16, iter_reg); in qla81xx_fw_dump()
1802 qla24xx_read_window(reg, 0xB0D0, 16, iter_reg); in qla81xx_fw_dump()
1804 qla24xx_read_window(reg, 0xB0E0, 16, fw->aseq_1_reg); in qla81xx_fw_dump()
1805 qla24xx_read_window(reg, 0xB0F0, 16, fw->aseq_2_reg); in qla81xx_fw_dump()
1808 qla24xx_read_window(reg, 0x7100, 16, fw->cmd_dma_reg); in qla81xx_fw_dump()
1811 iter_reg = fw->req0_dma_reg; in qla81xx_fw_dump()
1813 dmp_reg = ®->iobase_q; in qla81xx_fw_dump()
1817 iter_reg = fw->resp0_dma_reg; in qla81xx_fw_dump()
1819 dmp_reg = ®->iobase_q; in qla81xx_fw_dump()
1823 iter_reg = fw->req1_dma_reg; in qla81xx_fw_dump()
1825 dmp_reg = ®->iobase_q; in qla81xx_fw_dump()
1830 iter_reg = fw->xmt0_dma_reg; in qla81xx_fw_dump()
1831 iter_reg = qla24xx_read_window(reg, 0x7600, 16, iter_reg); in qla81xx_fw_dump()
1832 qla24xx_read_window(reg, 0x7610, 16, iter_reg); in qla81xx_fw_dump()
1834 iter_reg = fw->xmt1_dma_reg; in qla81xx_fw_dump()
1835 iter_reg = qla24xx_read_window(reg, 0x7620, 16, iter_reg); in qla81xx_fw_dump()
1836 qla24xx_read_window(reg, 0x7630, 16, iter_reg); in qla81xx_fw_dump()
1838 iter_reg = fw->xmt2_dma_reg; in qla81xx_fw_dump()
1839 iter_reg = qla24xx_read_window(reg, 0x7640, 16, iter_reg); in qla81xx_fw_dump()
1840 qla24xx_read_window(reg, 0x7650, 16, iter_reg); in qla81xx_fw_dump()
1842 iter_reg = fw->xmt3_dma_reg; in qla81xx_fw_dump()
1843 iter_reg = qla24xx_read_window(reg, 0x7660, 16, iter_reg); in qla81xx_fw_dump()
1844 qla24xx_read_window(reg, 0x7670, 16, iter_reg); in qla81xx_fw_dump()
1846 iter_reg = fw->xmt4_dma_reg; in qla81xx_fw_dump()
1847 iter_reg = qla24xx_read_window(reg, 0x7680, 16, iter_reg); in qla81xx_fw_dump()
1848 qla24xx_read_window(reg, 0x7690, 16, iter_reg); in qla81xx_fw_dump()
1850 qla24xx_read_window(reg, 0x76A0, 16, fw->xmt_data_dma_reg); in qla81xx_fw_dump()
1853 iter_reg = fw->rcvt0_data_dma_reg; in qla81xx_fw_dump()
1854 iter_reg = qla24xx_read_window(reg, 0x7700, 16, iter_reg); in qla81xx_fw_dump()
1855 qla24xx_read_window(reg, 0x7710, 16, iter_reg); in qla81xx_fw_dump()
1857 iter_reg = fw->rcvt1_data_dma_reg; in qla81xx_fw_dump()
1858 iter_reg = qla24xx_read_window(reg, 0x7720, 16, iter_reg); in qla81xx_fw_dump()
1859 qla24xx_read_window(reg, 0x7730, 16, iter_reg); in qla81xx_fw_dump()
1862 iter_reg = fw->risc_gp_reg; in qla81xx_fw_dump()
1863 iter_reg = qla24xx_read_window(reg, 0x0F00, 16, iter_reg); in qla81xx_fw_dump()
1864 iter_reg = qla24xx_read_window(reg, 0x0F10, 16, iter_reg); in qla81xx_fw_dump()
1865 iter_reg = qla24xx_read_window(reg, 0x0F20, 16, iter_reg); in qla81xx_fw_dump()
1866 iter_reg = qla24xx_read_window(reg, 0x0F30, 16, iter_reg); in qla81xx_fw_dump()
1867 iter_reg = qla24xx_read_window(reg, 0x0F40, 16, iter_reg); in qla81xx_fw_dump()
1868 iter_reg = qla24xx_read_window(reg, 0x0F50, 16, iter_reg); in qla81xx_fw_dump()
1869 iter_reg = qla24xx_read_window(reg, 0x0F60, 16, iter_reg); in qla81xx_fw_dump()
1870 qla24xx_read_window(reg, 0x0F70, 16, iter_reg); in qla81xx_fw_dump()
1873 iter_reg = fw->lmc_reg; in qla81xx_fw_dump()
1874 iter_reg = qla24xx_read_window(reg, 0x3000, 16, iter_reg); in qla81xx_fw_dump()
1875 iter_reg = qla24xx_read_window(reg, 0x3010, 16, iter_reg); in qla81xx_fw_dump()
1876 iter_reg = qla24xx_read_window(reg, 0x3020, 16, iter_reg); in qla81xx_fw_dump()
1877 iter_reg = qla24xx_read_window(reg, 0x3030, 16, iter_reg); in qla81xx_fw_dump()
1878 iter_reg = qla24xx_read_window(reg, 0x3040, 16, iter_reg); in qla81xx_fw_dump()
1879 iter_reg = qla24xx_read_window(reg, 0x3050, 16, iter_reg); in qla81xx_fw_dump()
1880 iter_reg = qla24xx_read_window(reg, 0x3060, 16, iter_reg); in qla81xx_fw_dump()
1881 qla24xx_read_window(reg, 0x3070, 16, iter_reg); in qla81xx_fw_dump()
1884 iter_reg = fw->fpm_hdw_reg; in qla81xx_fw_dump()
1885 iter_reg = qla24xx_read_window(reg, 0x4000, 16, iter_reg); in qla81xx_fw_dump()
1886 iter_reg = qla24xx_read_window(reg, 0x4010, 16, iter_reg); in qla81xx_fw_dump()
1887 iter_reg = qla24xx_read_window(reg, 0x4020, 16, iter_reg); in qla81xx_fw_dump()
1888 iter_reg = qla24xx_read_window(reg, 0x4030, 16, iter_reg); in qla81xx_fw_dump()
1889 iter_reg = qla24xx_read_window(reg, 0x4040, 16, iter_reg); in qla81xx_fw_dump()
1890 iter_reg = qla24xx_read_window(reg, 0x4050, 16, iter_reg); in qla81xx_fw_dump()
1891 iter_reg = qla24xx_read_window(reg, 0x4060, 16, iter_reg); in qla81xx_fw_dump()
1892 iter_reg = qla24xx_read_window(reg, 0x4070, 16, iter_reg); in qla81xx_fw_dump()
1893 iter_reg = qla24xx_read_window(reg, 0x4080, 16, iter_reg); in qla81xx_fw_dump()
1894 iter_reg = qla24xx_read_window(reg, 0x4090, 16, iter_reg); in qla81xx_fw_dump()
1895 iter_reg = qla24xx_read_window(reg, 0x40A0, 16, iter_reg); in qla81xx_fw_dump()
1896 iter_reg = qla24xx_read_window(reg, 0x40B0, 16, iter_reg); in qla81xx_fw_dump()
1897 iter_reg = qla24xx_read_window(reg, 0x40C0, 16, iter_reg); in qla81xx_fw_dump()
1898 qla24xx_read_window(reg, 0x40D0, 16, iter_reg); in qla81xx_fw_dump()
1901 iter_reg = fw->fb_hdw_reg; in qla81xx_fw_dump()
1902 iter_reg = qla24xx_read_window(reg, 0x6000, 16, iter_reg); in qla81xx_fw_dump()
1903 iter_reg = qla24xx_read_window(reg, 0x6010, 16, iter_reg); in qla81xx_fw_dump()
1904 iter_reg = qla24xx_read_window(reg, 0x6020, 16, iter_reg); in qla81xx_fw_dump()
1905 iter_reg = qla24xx_read_window(reg, 0x6030, 16, iter_reg); in qla81xx_fw_dump()
1906 iter_reg = qla24xx_read_window(reg, 0x6040, 16, iter_reg); in qla81xx_fw_dump()
1907 iter_reg = qla24xx_read_window(reg, 0x6100, 16, iter_reg); in qla81xx_fw_dump()
1908 iter_reg = qla24xx_read_window(reg, 0x6130, 16, iter_reg); in qla81xx_fw_dump()
1909 iter_reg = qla24xx_read_window(reg, 0x6150, 16, iter_reg); in qla81xx_fw_dump()
1910 iter_reg = qla24xx_read_window(reg, 0x6170, 16, iter_reg); in qla81xx_fw_dump()
1911 iter_reg = qla24xx_read_window(reg, 0x6190, 16, iter_reg); in qla81xx_fw_dump()
1912 iter_reg = qla24xx_read_window(reg, 0x61B0, 16, iter_reg); in qla81xx_fw_dump()
1913 iter_reg = qla24xx_read_window(reg, 0x61C0, 16, iter_reg); in qla81xx_fw_dump()
1914 qla24xx_read_window(reg, 0x6F00, 16, iter_reg); in qla81xx_fw_dump()
1917 nxt_chain = qla25xx_copy_mq(ha, (void *)ha->fw_dump + ha->chain_offset, in qla81xx_fw_dump()
1924 rval = qla24xx_dump_memory(ha, fw->code_ram, sizeof(fw->code_ram), in qla81xx_fw_dump()
1933 /* Chain entries -- started with MQ. */ in qla81xx_fw_dump()
1940 ha->fw_dump->version |= htonl(DUMP_CHAIN_VARIANT); in qla81xx_fw_dump()
1945 ha->fw_dump_len = (nxt_chain - (void *)ha->fw_dump); in qla81xx_fw_dump()
1956 struct qla_hw_data *ha = vha->hw; in qla83xx_fw_dump()
1957 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; in qla83xx_fw_dump()
1964 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev); in qla83xx_fw_dump()
1966 lockdep_assert_held(&ha->hardware_lock); in qla83xx_fw_dump()
1968 ha->fw_dump_cap_flags = 0; in qla83xx_fw_dump()
1970 if (!ha->fw_dump) { in qla83xx_fw_dump()
1976 if (ha->fw_dumped) { in qla83xx_fw_dump()
1978 "Firmware has been previously dumped (%p) -- ignoring " in qla83xx_fw_dump()
1979 "request...\n", ha->fw_dump); in qla83xx_fw_dump()
1983 fw = &ha->fw_dump->isp.isp83; in qla83xx_fw_dump()
1984 qla2xxx_prep_dump(ha, ha->fw_dump); in qla83xx_fw_dump()
1986 fw->host_status = htonl(rd_reg_dword(®->host_status)); in qla83xx_fw_dump()
1994 wrt_reg_dword(®->iobase_addr, 0x6000); in qla83xx_fw_dump()
1995 dmp_reg = ®->iobase_window; in qla83xx_fw_dump()
1999 dmp_reg = ®->unused_4_1[0]; in qla83xx_fw_dump()
2003 wrt_reg_dword(®->iobase_addr, 0x6010); in qla83xx_fw_dump()
2004 dmp_reg = ®->unused_4_1[2]; in qla83xx_fw_dump()
2009 wrt_reg_dword(®->iobase_addr, 0x0F70); in qla83xx_fw_dump()
2010 rd_reg_dword(®->iobase_addr); in qla83xx_fw_dump()
2011 wrt_reg_dword(®->iobase_select, 0x60000000); /* write to F0h = PCR */ in qla83xx_fw_dump()
2014 iter_reg = fw->host_risc_reg; in qla83xx_fw_dump()
2015 iter_reg = qla24xx_read_window(reg, 0x7000, 16, iter_reg); in qla83xx_fw_dump()
2016 iter_reg = qla24xx_read_window(reg, 0x7010, 16, iter_reg); in qla83xx_fw_dump()
2017 qla24xx_read_window(reg, 0x7040, 16, iter_reg); in qla83xx_fw_dump()
2020 wrt_reg_dword(®->iobase_addr, 0x7C00); in qla83xx_fw_dump()
2021 rd_reg_dword(®->iobase_addr); in qla83xx_fw_dump()
2022 wrt_reg_dword(®->iobase_window, 0x01); in qla83xx_fw_dump()
2023 dmp_reg = ®->iobase_c4; in qla83xx_fw_dump()
2024 fw->pcie_regs[0] = htonl(rd_reg_dword(dmp_reg)); in qla83xx_fw_dump()
2026 fw->pcie_regs[1] = htonl(rd_reg_dword(dmp_reg)); in qla83xx_fw_dump()
2028 fw->pcie_regs[2] = htonl(rd_reg_dword(dmp_reg)); in qla83xx_fw_dump()
2029 fw->pcie_regs[3] = htonl(rd_reg_dword(®->iobase_window)); in qla83xx_fw_dump()
2031 wrt_reg_dword(®->iobase_window, 0x00); in qla83xx_fw_dump()
2032 rd_reg_dword(®->iobase_window); in qla83xx_fw_dump()
2035 dmp_reg = ®->flash_addr; in qla83xx_fw_dump()
2036 for (cnt = 0; cnt < ARRAY_SIZE(fw->host_reg); cnt++, dmp_reg++) in qla83xx_fw_dump()
2037 fw->host_reg[cnt] = htonl(rd_reg_dword(dmp_reg)); in qla83xx_fw_dump()
2040 wrt_reg_dword(®->ictrl, 0); in qla83xx_fw_dump()
2041 rd_reg_dword(®->ictrl); in qla83xx_fw_dump()
2044 wrt_reg_dword(®->iobase_addr, 0x0F70); in qla83xx_fw_dump()
2045 rd_reg_dword(®->iobase_addr); in qla83xx_fw_dump()
2046 wrt_reg_dword(®->iobase_select, 0xB0000000); in qla83xx_fw_dump()
2047 fw->shadow_reg[0] = htonl(rd_reg_dword(®->iobase_sdata)); in qla83xx_fw_dump()
2049 wrt_reg_dword(®->iobase_select, 0xB0100000); in qla83xx_fw_dump()
2050 fw->shadow_reg[1] = htonl(rd_reg_dword(®->iobase_sdata)); in qla83xx_fw_dump()
2052 wrt_reg_dword(®->iobase_select, 0xB0200000); in qla83xx_fw_dump()
2053 fw->shadow_reg[2] = htonl(rd_reg_dword(®->iobase_sdata)); in qla83xx_fw_dump()
2055 wrt_reg_dword(®->iobase_select, 0xB0300000); in qla83xx_fw_dump()
2056 fw->shadow_reg[3] = htonl(rd_reg_dword(®->iobase_sdata)); in qla83xx_fw_dump()
2058 wrt_reg_dword(®->iobase_select, 0xB0400000); in qla83xx_fw_dump()
2059 fw->shadow_reg[4] = htonl(rd_reg_dword(®->iobase_sdata)); in qla83xx_fw_dump()
2061 wrt_reg_dword(®->iobase_select, 0xB0500000); in qla83xx_fw_dump()
2062 fw->shadow_reg[5] = htonl(rd_reg_dword(®->iobase_sdata)); in qla83xx_fw_dump()
2064 wrt_reg_dword(®->iobase_select, 0xB0600000); in qla83xx_fw_dump()
2065 fw->shadow_reg[6] = htonl(rd_reg_dword(®->iobase_sdata)); in qla83xx_fw_dump()
2067 wrt_reg_dword(®->iobase_select, 0xB0700000); in qla83xx_fw_dump()
2068 fw->shadow_reg[7] = htonl(rd_reg_dword(®->iobase_sdata)); in qla83xx_fw_dump()
2070 wrt_reg_dword(®->iobase_select, 0xB0800000); in qla83xx_fw_dump()
2071 fw->shadow_reg[8] = htonl(rd_reg_dword(®->iobase_sdata)); in qla83xx_fw_dump()
2073 wrt_reg_dword(®->iobase_select, 0xB0900000); in qla83xx_fw_dump()
2074 fw->shadow_reg[9] = htonl(rd_reg_dword(®->iobase_sdata)); in qla83xx_fw_dump()
2076 wrt_reg_dword(®->iobase_select, 0xB0A00000); in qla83xx_fw_dump()
2077 fw->shadow_reg[10] = htonl(rd_reg_dword(®->iobase_sdata)); in qla83xx_fw_dump()
2080 wrt_reg_dword(®->iobase_addr, 0x0010); in qla83xx_fw_dump()
2081 fw->risc_io_reg = htonl(rd_reg_dword(®->iobase_window)); in qla83xx_fw_dump()
2084 mbx_reg = ®->mailbox0; in qla83xx_fw_dump()
2085 for (cnt = 0; cnt < ARRAY_SIZE(fw->mailbox_reg); cnt++, mbx_reg++) in qla83xx_fw_dump()
2086 fw->mailbox_reg[cnt] = htons(rd_reg_word(mbx_reg)); in qla83xx_fw_dump()
2089 iter_reg = fw->xseq_gp_reg; in qla83xx_fw_dump()
2090 iter_reg = qla24xx_read_window(reg, 0xBE00, 16, iter_reg); in qla83xx_fw_dump()
2091 iter_reg = qla24xx_read_window(reg, 0xBE10, 16, iter_reg); in qla83xx_fw_dump()
2092 iter_reg = qla24xx_read_window(reg, 0xBE20, 16, iter_reg); in qla83xx_fw_dump()
2093 iter_reg = qla24xx_read_window(reg, 0xBE30, 16, iter_reg); in qla83xx_fw_dump()
2094 iter_reg = qla24xx_read_window(reg, 0xBE40, 16, iter_reg); in qla83xx_fw_dump()
2095 iter_reg = qla24xx_read_window(reg, 0xBE50, 16, iter_reg); in qla83xx_fw_dump()
2096 iter_reg = qla24xx_read_window(reg, 0xBE60, 16, iter_reg); in qla83xx_fw_dump()
2097 iter_reg = qla24xx_read_window(reg, 0xBE70, 16, iter_reg); in qla83xx_fw_dump()
2098 iter_reg = qla24xx_read_window(reg, 0xBF00, 16, iter_reg); in qla83xx_fw_dump()
2099 iter_reg = qla24xx_read_window(reg, 0xBF10, 16, iter_reg); in qla83xx_fw_dump()
2100 iter_reg = qla24xx_read_window(reg, 0xBF20, 16, iter_reg); in qla83xx_fw_dump()
2101 iter_reg = qla24xx_read_window(reg, 0xBF30, 16, iter_reg); in qla83xx_fw_dump()
2102 iter_reg = qla24xx_read_window(reg, 0xBF40, 16, iter_reg); in qla83xx_fw_dump()
2103 iter_reg = qla24xx_read_window(reg, 0xBF50, 16, iter_reg); in qla83xx_fw_dump()
2104 iter_reg = qla24xx_read_window(reg, 0xBF60, 16, iter_reg); in qla83xx_fw_dump()
2105 qla24xx_read_window(reg, 0xBF70, 16, iter_reg); in qla83xx_fw_dump()
2107 iter_reg = fw->xseq_0_reg; in qla83xx_fw_dump()
2108 iter_reg = qla24xx_read_window(reg, 0xBFC0, 16, iter_reg); in qla83xx_fw_dump()
2109 iter_reg = qla24xx_read_window(reg, 0xBFD0, 16, iter_reg); in qla83xx_fw_dump()
2110 qla24xx_read_window(reg, 0xBFE0, 16, iter_reg); in qla83xx_fw_dump()
2112 qla24xx_read_window(reg, 0xBFF0, 16, fw->xseq_1_reg); in qla83xx_fw_dump()
2114 qla24xx_read_window(reg, 0xBEF0, 16, fw->xseq_2_reg); in qla83xx_fw_dump()
2117 iter_reg = fw->rseq_gp_reg; in qla83xx_fw_dump()
2118 iter_reg = qla24xx_read_window(reg, 0xFE00, 16, iter_reg); in qla83xx_fw_dump()
2119 iter_reg = qla24xx_read_window(reg, 0xFE10, 16, iter_reg); in qla83xx_fw_dump()
2120 iter_reg = qla24xx_read_window(reg, 0xFE20, 16, iter_reg); in qla83xx_fw_dump()
2121 iter_reg = qla24xx_read_window(reg, 0xFE30, 16, iter_reg); in qla83xx_fw_dump()
2122 iter_reg = qla24xx_read_window(reg, 0xFE40, 16, iter_reg); in qla83xx_fw_dump()
2123 iter_reg = qla24xx_read_window(reg, 0xFE50, 16, iter_reg); in qla83xx_fw_dump()
2124 iter_reg = qla24xx_read_window(reg, 0xFE60, 16, iter_reg); in qla83xx_fw_dump()
2125 iter_reg = qla24xx_read_window(reg, 0xFE70, 16, iter_reg); in qla83xx_fw_dump()
2126 iter_reg = qla24xx_read_window(reg, 0xFF00, 16, iter_reg); in qla83xx_fw_dump()
2127 iter_reg = qla24xx_read_window(reg, 0xFF10, 16, iter_reg); in qla83xx_fw_dump()
2128 iter_reg = qla24xx_read_window(reg, 0xFF20, 16, iter_reg); in qla83xx_fw_dump()
2129 iter_reg = qla24xx_read_window(reg, 0xFF30, 16, iter_reg); in qla83xx_fw_dump()
2130 iter_reg = qla24xx_read_window(reg, 0xFF40, 16, iter_reg); in qla83xx_fw_dump()
2131 iter_reg = qla24xx_read_window(reg, 0xFF50, 16, iter_reg); in qla83xx_fw_dump()
2132 iter_reg = qla24xx_read_window(reg, 0xFF60, 16, iter_reg); in qla83xx_fw_dump()
2133 qla24xx_read_window(reg, 0xFF70, 16, iter_reg); in qla83xx_fw_dump()
2135 iter_reg = fw->rseq_0_reg; in qla83xx_fw_dump()
2136 iter_reg = qla24xx_read_window(reg, 0xFFC0, 16, iter_reg); in qla83xx_fw_dump()
2137 qla24xx_read_window(reg, 0xFFD0, 16, iter_reg); in qla83xx_fw_dump()
2139 qla24xx_read_window(reg, 0xFFE0, 16, fw->rseq_1_reg); in qla83xx_fw_dump()
2140 qla24xx_read_window(reg, 0xFFF0, 16, fw->rseq_2_reg); in qla83xx_fw_dump()
2141 qla24xx_read_window(reg, 0xFEF0, 16, fw->rseq_3_reg); in qla83xx_fw_dump()
2144 iter_reg = fw->aseq_gp_reg; in qla83xx_fw_dump()
2145 iter_reg = qla24xx_read_window(reg, 0xB000, 16, iter_reg); in qla83xx_fw_dump()
2146 iter_reg = qla24xx_read_window(reg, 0xB010, 16, iter_reg); in qla83xx_fw_dump()
2147 iter_reg = qla24xx_read_window(reg, 0xB020, 16, iter_reg); in qla83xx_fw_dump()
2148 iter_reg = qla24xx_read_window(reg, 0xB030, 16, iter_reg); in qla83xx_fw_dump()
2149 iter_reg = qla24xx_read_window(reg, 0xB040, 16, iter_reg); in qla83xx_fw_dump()
2150 iter_reg = qla24xx_read_window(reg, 0xB050, 16, iter_reg); in qla83xx_fw_dump()
2151 iter_reg = qla24xx_read_window(reg, 0xB060, 16, iter_reg); in qla83xx_fw_dump()
2152 iter_reg = qla24xx_read_window(reg, 0xB070, 16, iter_reg); in qla83xx_fw_dump()
2153 iter_reg = qla24xx_read_window(reg, 0xB100, 16, iter_reg); in qla83xx_fw_dump()
2154 iter_reg = qla24xx_read_window(reg, 0xB110, 16, iter_reg); in qla83xx_fw_dump()
2155 iter_reg = qla24xx_read_window(reg, 0xB120, 16, iter_reg); in qla83xx_fw_dump()
2156 iter_reg = qla24xx_read_window(reg, 0xB130, 16, iter_reg); in qla83xx_fw_dump()
2157 iter_reg = qla24xx_read_window(reg, 0xB140, 16, iter_reg); in qla83xx_fw_dump()
2158 iter_reg = qla24xx_read_window(reg, 0xB150, 16, iter_reg); in qla83xx_fw_dump()
2159 iter_reg = qla24xx_read_window(reg, 0xB160, 16, iter_reg); in qla83xx_fw_dump()
2160 qla24xx_read_window(reg, 0xB170, 16, iter_reg); in qla83xx_fw_dump()
2162 iter_reg = fw->aseq_0_reg; in qla83xx_fw_dump()
2163 iter_reg = qla24xx_read_window(reg, 0xB0C0, 16, iter_reg); in qla83xx_fw_dump()
2164 qla24xx_read_window(reg, 0xB0D0, 16, iter_reg); in qla83xx_fw_dump()
2166 qla24xx_read_window(reg, 0xB0E0, 16, fw->aseq_1_reg); in qla83xx_fw_dump()
2167 qla24xx_read_window(reg, 0xB0F0, 16, fw->aseq_2_reg); in qla83xx_fw_dump()
2168 qla24xx_read_window(reg, 0xB1F0, 16, fw->aseq_3_reg); in qla83xx_fw_dump()
2171 iter_reg = fw->cmd_dma_reg; in qla83xx_fw_dump()
2172 iter_reg = qla24xx_read_window(reg, 0x7100, 16, iter_reg); in qla83xx_fw_dump()
2173 iter_reg = qla24xx_read_window(reg, 0x7120, 16, iter_reg); in qla83xx_fw_dump()
2174 iter_reg = qla24xx_read_window(reg, 0x7130, 16, iter_reg); in qla83xx_fw_dump()
2175 qla24xx_read_window(reg, 0x71F0, 16, iter_reg); in qla83xx_fw_dump()
2178 iter_reg = fw->req0_dma_reg; in qla83xx_fw_dump()
2180 dmp_reg = ®->iobase_q; in qla83xx_fw_dump()
2184 iter_reg = fw->resp0_dma_reg; in qla83xx_fw_dump()
2186 dmp_reg = ®->iobase_q; in qla83xx_fw_dump()
2190 iter_reg = fw->req1_dma_reg; in qla83xx_fw_dump()
2192 dmp_reg = ®->iobase_q; in qla83xx_fw_dump()
2197 iter_reg = fw->xmt0_dma_reg; in qla83xx_fw_dump()
2198 iter_reg = qla24xx_read_window(reg, 0x7600, 16, iter_reg); in qla83xx_fw_dump()
2199 qla24xx_read_window(reg, 0x7610, 16, iter_reg); in qla83xx_fw_dump()
2201 iter_reg = fw->xmt1_dma_reg; in qla83xx_fw_dump()
2202 iter_reg = qla24xx_read_window(reg, 0x7620, 16, iter_reg); in qla83xx_fw_dump()
2203 qla24xx_read_window(reg, 0x7630, 16, iter_reg); in qla83xx_fw_dump()
2205 iter_reg = fw->xmt2_dma_reg; in qla83xx_fw_dump()
2206 iter_reg = qla24xx_read_window(reg, 0x7640, 16, iter_reg); in qla83xx_fw_dump()
2207 qla24xx_read_window(reg, 0x7650, 16, iter_reg); in qla83xx_fw_dump()
2209 iter_reg = fw->xmt3_dma_reg; in qla83xx_fw_dump()
2210 iter_reg = qla24xx_read_window(reg, 0x7660, 16, iter_reg); in qla83xx_fw_dump()
2211 qla24xx_read_window(reg, 0x7670, 16, iter_reg); in qla83xx_fw_dump()
2213 iter_reg = fw->xmt4_dma_reg; in qla83xx_fw_dump()
2214 iter_reg = qla24xx_read_window(reg, 0x7680, 16, iter_reg); in qla83xx_fw_dump()
2215 qla24xx_read_window(reg, 0x7690, 16, iter_reg); in qla83xx_fw_dump()
2217 qla24xx_read_window(reg, 0x76A0, 16, fw->xmt_data_dma_reg); in qla83xx_fw_dump()
2220 iter_reg = fw->rcvt0_data_dma_reg; in qla83xx_fw_dump()
2221 iter_reg = qla24xx_read_window(reg, 0x7700, 16, iter_reg); in qla83xx_fw_dump()
2222 qla24xx_read_window(reg, 0x7710, 16, iter_reg); in qla83xx_fw_dump()
2224 iter_reg = fw->rcvt1_data_dma_reg; in qla83xx_fw_dump()
2225 iter_reg = qla24xx_read_window(reg, 0x7720, 16, iter_reg); in qla83xx_fw_dump()
2226 qla24xx_read_window(reg, 0x7730, 16, iter_reg); in qla83xx_fw_dump()
2229 iter_reg = fw->risc_gp_reg; in qla83xx_fw_dump()
2230 iter_reg = qla24xx_read_window(reg, 0x0F00, 16, iter_reg); in qla83xx_fw_dump()
2231 iter_reg = qla24xx_read_window(reg, 0x0F10, 16, iter_reg); in qla83xx_fw_dump()
2232 iter_reg = qla24xx_read_window(reg, 0x0F20, 16, iter_reg); in qla83xx_fw_dump()
2233 iter_reg = qla24xx_read_window(reg, 0x0F30, 16, iter_reg); in qla83xx_fw_dump()
2234 iter_reg = qla24xx_read_window(reg, 0x0F40, 16, iter_reg); in qla83xx_fw_dump()
2235 iter_reg = qla24xx_read_window(reg, 0x0F50, 16, iter_reg); in qla83xx_fw_dump()
2236 iter_reg = qla24xx_read_window(reg, 0x0F60, 16, iter_reg); in qla83xx_fw_dump()
2237 qla24xx_read_window(reg, 0x0F70, 16, iter_reg); in qla83xx_fw_dump()
2240 iter_reg = fw->lmc_reg; in qla83xx_fw_dump()
2241 iter_reg = qla24xx_read_window(reg, 0x3000, 16, iter_reg); in qla83xx_fw_dump()
2242 iter_reg = qla24xx_read_window(reg, 0x3010, 16, iter_reg); in qla83xx_fw_dump()
2243 iter_reg = qla24xx_read_window(reg, 0x3020, 16, iter_reg); in qla83xx_fw_dump()
2244 iter_reg = qla24xx_read_window(reg, 0x3030, 16, iter_reg); in qla83xx_fw_dump()
2245 iter_reg = qla24xx_read_window(reg, 0x3040, 16, iter_reg); in qla83xx_fw_dump()
2246 iter_reg = qla24xx_read_window(reg, 0x3050, 16, iter_reg); in qla83xx_fw_dump()
2247 iter_reg = qla24xx_read_window(reg, 0x3060, 16, iter_reg); in qla83xx_fw_dump()
2248 qla24xx_read_window(reg, 0x3070, 16, iter_reg); in qla83xx_fw_dump()
2251 iter_reg = fw->fpm_hdw_reg; in qla83xx_fw_dump()
2252 iter_reg = qla24xx_read_window(reg, 0x4000, 16, iter_reg); in qla83xx_fw_dump()
2253 iter_reg = qla24xx_read_window(reg, 0x4010, 16, iter_reg); in qla83xx_fw_dump()
2254 iter_reg = qla24xx_read_window(reg, 0x4020, 16, iter_reg); in qla83xx_fw_dump()
2255 iter_reg = qla24xx_read_window(reg, 0x4030, 16, iter_reg); in qla83xx_fw_dump()
2256 iter_reg = qla24xx_read_window(reg, 0x4040, 16, iter_reg); in qla83xx_fw_dump()
2257 iter_reg = qla24xx_read_window(reg, 0x4050, 16, iter_reg); in qla83xx_fw_dump()
2258 iter_reg = qla24xx_read_window(reg, 0x4060, 16, iter_reg); in qla83xx_fw_dump()
2259 iter_reg = qla24xx_read_window(reg, 0x4070, 16, iter_reg); in qla83xx_fw_dump()
2260 iter_reg = qla24xx_read_window(reg, 0x4080, 16, iter_reg); in qla83xx_fw_dump()
2261 iter_reg = qla24xx_read_window(reg, 0x4090, 16, iter_reg); in qla83xx_fw_dump()
2262 iter_reg = qla24xx_read_window(reg, 0x40A0, 16, iter_reg); in qla83xx_fw_dump()
2263 iter_reg = qla24xx_read_window(reg, 0x40B0, 16, iter_reg); in qla83xx_fw_dump()
2264 iter_reg = qla24xx_read_window(reg, 0x40C0, 16, iter_reg); in qla83xx_fw_dump()
2265 iter_reg = qla24xx_read_window(reg, 0x40D0, 16, iter_reg); in qla83xx_fw_dump()
2266 iter_reg = qla24xx_read_window(reg, 0x40E0, 16, iter_reg); in qla83xx_fw_dump()
2267 qla24xx_read_window(reg, 0x40F0, 16, iter_reg); in qla83xx_fw_dump()
2270 iter_reg = fw->rq0_array_reg; in qla83xx_fw_dump()
2271 iter_reg = qla24xx_read_window(reg, 0x5C00, 16, iter_reg); in qla83xx_fw_dump()
2272 iter_reg = qla24xx_read_window(reg, 0x5C10, 16, iter_reg); in qla83xx_fw_dump()
2273 iter_reg = qla24xx_read_window(reg, 0x5C20, 16, iter_reg); in qla83xx_fw_dump()
2274 iter_reg = qla24xx_read_window(reg, 0x5C30, 16, iter_reg); in qla83xx_fw_dump()
2275 iter_reg = qla24xx_read_window(reg, 0x5C40, 16, iter_reg); in qla83xx_fw_dump()
2276 iter_reg = qla24xx_read_window(reg, 0x5C50, 16, iter_reg); in qla83xx_fw_dump()
2277 iter_reg = qla24xx_read_window(reg, 0x5C60, 16, iter_reg); in qla83xx_fw_dump()
2278 iter_reg = qla24xx_read_window(reg, 0x5C70, 16, iter_reg); in qla83xx_fw_dump()
2279 iter_reg = qla24xx_read_window(reg, 0x5C80, 16, iter_reg); in qla83xx_fw_dump()
2280 iter_reg = qla24xx_read_window(reg, 0x5C90, 16, iter_reg); in qla83xx_fw_dump()
2281 iter_reg = qla24xx_read_window(reg, 0x5CA0, 16, iter_reg); in qla83xx_fw_dump()
2282 iter_reg = qla24xx_read_window(reg, 0x5CB0, 16, iter_reg); in qla83xx_fw_dump()
2283 iter_reg = qla24xx_read_window(reg, 0x5CC0, 16, iter_reg); in qla83xx_fw_dump()
2284 iter_reg = qla24xx_read_window(reg, 0x5CD0, 16, iter_reg); in qla83xx_fw_dump()
2285 iter_reg = qla24xx_read_window(reg, 0x5CE0, 16, iter_reg); in qla83xx_fw_dump()
2286 qla24xx_read_window(reg, 0x5CF0, 16, iter_reg); in qla83xx_fw_dump()
2289 iter_reg = fw->rq1_array_reg; in qla83xx_fw_dump()
2290 iter_reg = qla24xx_read_window(reg, 0x5D00, 16, iter_reg); in qla83xx_fw_dump()
2291 iter_reg = qla24xx_read_window(reg, 0x5D10, 16, iter_reg); in qla83xx_fw_dump()
2292 iter_reg = qla24xx_read_window(reg, 0x5D20, 16, iter_reg); in qla83xx_fw_dump()
2293 iter_reg = qla24xx_read_window(reg, 0x5D30, 16, iter_reg); in qla83xx_fw_dump()
2294 iter_reg = qla24xx_read_window(reg, 0x5D40, 16, iter_reg); in qla83xx_fw_dump()
2295 iter_reg = qla24xx_read_window(reg, 0x5D50, 16, iter_reg); in qla83xx_fw_dump()
2296 iter_reg = qla24xx_read_window(reg, 0x5D60, 16, iter_reg); in qla83xx_fw_dump()
2297 iter_reg = qla24xx_read_window(reg, 0x5D70, 16, iter_reg); in qla83xx_fw_dump()
2298 iter_reg = qla24xx_read_window(reg, 0x5D80, 16, iter_reg); in qla83xx_fw_dump()
2299 iter_reg = qla24xx_read_window(reg, 0x5D90, 16, iter_reg); in qla83xx_fw_dump()
2300 iter_reg = qla24xx_read_window(reg, 0x5DA0, 16, iter_reg); in qla83xx_fw_dump()
2301 iter_reg = qla24xx_read_window(reg, 0x5DB0, 16, iter_reg); in qla83xx_fw_dump()
2302 iter_reg = qla24xx_read_window(reg, 0x5DC0, 16, iter_reg); in qla83xx_fw_dump()
2303 iter_reg = qla24xx_read_window(reg, 0x5DD0, 16, iter_reg); in qla83xx_fw_dump()
2304 iter_reg = qla24xx_read_window(reg, 0x5DE0, 16, iter_reg); in qla83xx_fw_dump()
2305 qla24xx_read_window(reg, 0x5DF0, 16, iter_reg); in qla83xx_fw_dump()
2308 iter_reg = fw->rp0_array_reg; in qla83xx_fw_dump()
2309 iter_reg = qla24xx_read_window(reg, 0x5E00, 16, iter_reg); in qla83xx_fw_dump()
2310 iter_reg = qla24xx_read_window(reg, 0x5E10, 16, iter_reg); in qla83xx_fw_dump()
2311 iter_reg = qla24xx_read_window(reg, 0x5E20, 16, iter_reg); in qla83xx_fw_dump()
2312 iter_reg = qla24xx_read_window(reg, 0x5E30, 16, iter_reg); in qla83xx_fw_dump()
2313 iter_reg = qla24xx_read_window(reg, 0x5E40, 16, iter_reg); in qla83xx_fw_dump()
2314 iter_reg = qla24xx_read_window(reg, 0x5E50, 16, iter_reg); in qla83xx_fw_dump()
2315 iter_reg = qla24xx_read_window(reg, 0x5E60, 16, iter_reg); in qla83xx_fw_dump()
2316 iter_reg = qla24xx_read_window(reg, 0x5E70, 16, iter_reg); in qla83xx_fw_dump()
2317 iter_reg = qla24xx_read_window(reg, 0x5E80, 16, iter_reg); in qla83xx_fw_dump()
2318 iter_reg = qla24xx_read_window(reg, 0x5E90, 16, iter_reg); in qla83xx_fw_dump()
2319 iter_reg = qla24xx_read_window(reg, 0x5EA0, 16, iter_reg); in qla83xx_fw_dump()
2320 iter_reg = qla24xx_read_window(reg, 0x5EB0, 16, iter_reg); in qla83xx_fw_dump()
2321 iter_reg = qla24xx_read_window(reg, 0x5EC0, 16, iter_reg); in qla83xx_fw_dump()
2322 iter_reg = qla24xx_read_window(reg, 0x5ED0, 16, iter_reg); in qla83xx_fw_dump()
2323 iter_reg = qla24xx_read_window(reg, 0x5EE0, 16, iter_reg); in qla83xx_fw_dump()
2324 qla24xx_read_window(reg, 0x5EF0, 16, iter_reg); in qla83xx_fw_dump()
2327 iter_reg = fw->rp1_array_reg; in qla83xx_fw_dump()
2328 iter_reg = qla24xx_read_window(reg, 0x5F00, 16, iter_reg); in qla83xx_fw_dump()
2329 iter_reg = qla24xx_read_window(reg, 0x5F10, 16, iter_reg); in qla83xx_fw_dump()
2330 iter_reg = qla24xx_read_window(reg, 0x5F20, 16, iter_reg); in qla83xx_fw_dump()
2331 iter_reg = qla24xx_read_window(reg, 0x5F30, 16, iter_reg); in qla83xx_fw_dump()
2332 iter_reg = qla24xx_read_window(reg, 0x5F40, 16, iter_reg); in qla83xx_fw_dump()
2333 iter_reg = qla24xx_read_window(reg, 0x5F50, 16, iter_reg); in qla83xx_fw_dump()
2334 iter_reg = qla24xx_read_window(reg, 0x5F60, 16, iter_reg); in qla83xx_fw_dump()
2335 iter_reg = qla24xx_read_window(reg, 0x5F70, 16, iter_reg); in qla83xx_fw_dump()
2336 iter_reg = qla24xx_read_window(reg, 0x5F80, 16, iter_reg); in qla83xx_fw_dump()
2337 iter_reg = qla24xx_read_window(reg, 0x5F90, 16, iter_reg); in qla83xx_fw_dump()
2338 iter_reg = qla24xx_read_window(reg, 0x5FA0, 16, iter_reg); in qla83xx_fw_dump()
2339 iter_reg = qla24xx_read_window(reg, 0x5FB0, 16, iter_reg); in qla83xx_fw_dump()
2340 iter_reg = qla24xx_read_window(reg, 0x5FC0, 16, iter_reg); in qla83xx_fw_dump()
2341 iter_reg = qla24xx_read_window(reg, 0x5FD0, 16, iter_reg); in qla83xx_fw_dump()
2342 iter_reg = qla24xx_read_window(reg, 0x5FE0, 16, iter_reg); in qla83xx_fw_dump()
2343 qla24xx_read_window(reg, 0x5FF0, 16, iter_reg); in qla83xx_fw_dump()
2345 iter_reg = fw->at0_array_reg; in qla83xx_fw_dump()
2346 iter_reg = qla24xx_read_window(reg, 0x7080, 16, iter_reg); in qla83xx_fw_dump()
2347 iter_reg = qla24xx_read_window(reg, 0x7090, 16, iter_reg); in qla83xx_fw_dump()
2348 iter_reg = qla24xx_read_window(reg, 0x70A0, 16, iter_reg); in qla83xx_fw_dump()
2349 iter_reg = qla24xx_read_window(reg, 0x70B0, 16, iter_reg); in qla83xx_fw_dump()
2350 iter_reg = qla24xx_read_window(reg, 0x70C0, 16, iter_reg); in qla83xx_fw_dump()
2351 iter_reg = qla24xx_read_window(reg, 0x70D0, 16, iter_reg); in qla83xx_fw_dump()
2352 iter_reg = qla24xx_read_window(reg, 0x70E0, 16, iter_reg); in qla83xx_fw_dump()
2353 qla24xx_read_window(reg, 0x70F0, 16, iter_reg); in qla83xx_fw_dump()
2356 qla24xx_read_window(reg, 0x7800, 16, fw->queue_control_reg); in qla83xx_fw_dump()
2359 iter_reg = fw->fb_hdw_reg; in qla83xx_fw_dump()
2360 iter_reg = qla24xx_read_window(reg, 0x6000, 16, iter_reg); in qla83xx_fw_dump()
2361 iter_reg = qla24xx_read_window(reg, 0x6010, 16, iter_reg); in qla83xx_fw_dump()
2362 iter_reg = qla24xx_read_window(reg, 0x6020, 16, iter_reg); in qla83xx_fw_dump()
2363 iter_reg = qla24xx_read_window(reg, 0x6030, 16, iter_reg); in qla83xx_fw_dump()
2364 iter_reg = qla24xx_read_window(reg, 0x6040, 16, iter_reg); in qla83xx_fw_dump()
2365 iter_reg = qla24xx_read_window(reg, 0x6060, 16, iter_reg); in qla83xx_fw_dump()
2366 iter_reg = qla24xx_read_window(reg, 0x6070, 16, iter_reg); in qla83xx_fw_dump()
2367 iter_reg = qla24xx_read_window(reg, 0x6100, 16, iter_reg); in qla83xx_fw_dump()
2368 iter_reg = qla24xx_read_window(reg, 0x6130, 16, iter_reg); in qla83xx_fw_dump()
2369 iter_reg = qla24xx_read_window(reg, 0x6150, 16, iter_reg); in qla83xx_fw_dump()
2370 iter_reg = qla24xx_read_window(reg, 0x6170, 16, iter_reg); in qla83xx_fw_dump()
2371 iter_reg = qla24xx_read_window(reg, 0x6190, 16, iter_reg); in qla83xx_fw_dump()
2372 iter_reg = qla24xx_read_window(reg, 0x61B0, 16, iter_reg); in qla83xx_fw_dump()
2373 iter_reg = qla24xx_read_window(reg, 0x61C0, 16, iter_reg); in qla83xx_fw_dump()
2374 iter_reg = qla24xx_read_window(reg, 0x6530, 16, iter_reg); in qla83xx_fw_dump()
2375 iter_reg = qla24xx_read_window(reg, 0x6540, 16, iter_reg); in qla83xx_fw_dump()
2376 iter_reg = qla24xx_read_window(reg, 0x6550, 16, iter_reg); in qla83xx_fw_dump()
2377 iter_reg = qla24xx_read_window(reg, 0x6560, 16, iter_reg); in qla83xx_fw_dump()
2378 iter_reg = qla24xx_read_window(reg, 0x6570, 16, iter_reg); in qla83xx_fw_dump()
2379 iter_reg = qla24xx_read_window(reg, 0x6580, 16, iter_reg); in qla83xx_fw_dump()
2380 iter_reg = qla24xx_read_window(reg, 0x6590, 16, iter_reg); in qla83xx_fw_dump()
2381 iter_reg = qla24xx_read_window(reg, 0x65A0, 16, iter_reg); in qla83xx_fw_dump()
2382 iter_reg = qla24xx_read_window(reg, 0x65B0, 16, iter_reg); in qla83xx_fw_dump()
2383 iter_reg = qla24xx_read_window(reg, 0x65C0, 16, iter_reg); in qla83xx_fw_dump()
2384 iter_reg = qla24xx_read_window(reg, 0x65D0, 16, iter_reg); in qla83xx_fw_dump()
2385 iter_reg = qla24xx_read_window(reg, 0x65E0, 16, iter_reg); in qla83xx_fw_dump()
2386 qla24xx_read_window(reg, 0x6F00, 16, iter_reg); in qla83xx_fw_dump()
2389 nxt_chain = qla25xx_copy_mq(ha, (void *)ha->fw_dump + ha->chain_offset, in qla83xx_fw_dump()
2400 wrt_reg_dword(®->hccr, HCCRX_SET_RISC_RESET); in qla83xx_fw_dump()
2401 rd_reg_dword(®->hccr); in qla83xx_fw_dump()
2403 wrt_reg_dword(®->hccr, HCCRX_REL_RISC_PAUSE); in qla83xx_fw_dump()
2404 rd_reg_dword(®->hccr); in qla83xx_fw_dump()
2406 wrt_reg_dword(®->hccr, HCCRX_CLR_RISC_RESET); in qla83xx_fw_dump()
2407 rd_reg_dword(®->hccr); in qla83xx_fw_dump()
2409 for (cnt = 30000; cnt && (rd_reg_word(®->mailbox0)); cnt--) in qla83xx_fw_dump()
2413 nxt = fw->code_ram; in qla83xx_fw_dump()
2414 nxt += sizeof(fw->code_ram); in qla83xx_fw_dump()
2415 nxt += (ha->fw_memory_size - 0x100000 + 1); in qla83xx_fw_dump()
2418 set_bit(RISC_RDY_AFT_RESET, &ha->fw_dump_cap_flags); in qla83xx_fw_dump()
2424 rval = qla24xx_dump_memory(ha, fw->code_ram, sizeof(fw->code_ram), in qla83xx_fw_dump()
2434 /* Chain entries -- started with MQ. */ in qla83xx_fw_dump()
2441 ha->fw_dump->version |= htonl(DUMP_CHAIN_VARIANT); in qla83xx_fw_dump()
2446 ha->fw_dump_len = (nxt_chain - (void *)ha->fw_dump); in qla83xx_fw_dump()
2461 const struct pci_dev *pdev = vha->hw->pdev; in ql_dbg_prefix()
2463 /* <module-name> [<dev-name>]-<msg-id>:<host>: */ in ql_dbg_prefix()
2464 snprintf(pbuf, pbuf_size, "%s [%s]-%04x:%lu: ", QL_MSGHDR, in ql_dbg_prefix()
2465 dev_name(&(pdev->dev)), msg_id, vha->host_no); in ql_dbg_prefix()
2467 snprintf(pbuf, pbuf_size, "%s [%s]-%04x: : ", QL_MSGHDR, in ql_dbg_prefix()
2468 dev_name(&pdev->dev), msg_id); in ql_dbg_prefix()
2470 /* <module-name> [<dev-name>]-<msg-id>: : */ in ql_dbg_prefix()
2471 snprintf(pbuf, pbuf_size, "%s [%s]-%04x: : ", QL_MSGHDR, in ql_dbg_prefix()
2666 struct qla_hw_data *ha = vha->hw; in ql_dump_regs()
2667 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in ql_dump_regs()
2668 struct device_reg_24xx __iomem *reg24 = &ha->iobase->isp24; in ql_dump_regs()
2669 struct device_reg_82xx __iomem *reg82 = &ha->iobase->isp82; in ql_dump_regs()
2676 mbx_reg = ®82->mailbox_in[0]; in ql_dump_regs()
2678 mbx_reg = ®24->mailbox0; in ql_dump_regs()
2698 "%-+5d 0 1 2 3 4 5 6 7 8 9 A B C D E F\n", size); in ql_dump_buffer()
2700 "----- -----------------------------------------------\n"); in ql_dump_buffer()
2701 for (cnt = 0; cnt < size; cnt += 16) { in ql_dump_buffer()
2703 print_hex_dump(KERN_CONT, "", DUMP_PREFIX_NONE, 16, 1, in ql_dump_buffer()
2704 buf + cnt, min(16U, size - cnt), false); in ql_dump_buffer()
2732 ql_ktrace(0, level, pbuf, NULL, qpair ? qpair->vha : NULL, id, fmt); in ql_log_qp()
2736 qpair ? qpair->vha : NULL, id); in ql_log_qp()
2782 ql_ktrace(1, level, pbuf, NULL, qpair ? qpair->vha : NULL, id, fmt); in ql_dbg_qp()
2794 qpair ? qpair->vha : NULL, id + ql_dbg_offset); in ql_dbg_qp()