Lines Matching +full:rom +full:- +full:val

1 // SPDX-License-Identifier: GPL-2.0-only
4 * Copyright (c) 2009-2013 QLogic Corporation
151 u32 val; member
274 return hdr->saved_state[index]; in qlcnic_82xx_get_saved_state()
282 hdr->saved_state[index] = value; in qlcnic_82xx_set_saved_state()
289 hdr = fw_dump->tmpl_hdr; in qlcnic_82xx_cache_tmpl_hdr_values()
290 fw_dump->tmpl_hdr_size = hdr->size; in qlcnic_82xx_cache_tmpl_hdr_values()
291 fw_dump->version = hdr->version; in qlcnic_82xx_cache_tmpl_hdr_values()
292 fw_dump->num_entries = hdr->num_entries; in qlcnic_82xx_cache_tmpl_hdr_values()
293 fw_dump->offset = hdr->offset; in qlcnic_82xx_cache_tmpl_hdr_values()
295 hdr->drv_cap_mask = hdr->cap_mask; in qlcnic_82xx_cache_tmpl_hdr_values()
296 fw_dump->cap_mask = hdr->cap_mask; in qlcnic_82xx_cache_tmpl_hdr_values()
298 fw_dump->use_pex_dma = (hdr->capabilities & BIT_0) ? true : false; in qlcnic_82xx_cache_tmpl_hdr_values()
305 return hdr->cap_sizes[index]; in qlcnic_82xx_get_cap_size()
312 hdr->sys_info[idx] = value; in qlcnic_82xx_set_sys_info()
319 hdr->drv_cap_mask = mask; in qlcnic_82xx_store_cap_mask()
326 return hdr->saved_state[index]; in qlcnic_83xx_get_saved_state()
334 hdr->saved_state[index] = value; in qlcnic_83xx_set_saved_state()
343 hdr = fw_dump->tmpl_hdr; in qlcnic_83xx_cache_tmpl_hdr_values()
344 fw_dump->tmpl_hdr_size = hdr->size; in qlcnic_83xx_cache_tmpl_hdr_values()
345 fw_dump->version = hdr->version; in qlcnic_83xx_cache_tmpl_hdr_values()
346 fw_dump->num_entries = hdr->num_entries; in qlcnic_83xx_cache_tmpl_hdr_values()
347 fw_dump->offset = hdr->offset; in qlcnic_83xx_cache_tmpl_hdr_values()
349 hdr->drv_cap_mask = hdr->cap_mask; in qlcnic_83xx_cache_tmpl_hdr_values()
350 fw_dump->cap_mask = hdr->cap_mask; in qlcnic_83xx_cache_tmpl_hdr_values()
352 fw_dump->use_pex_dma = (fw_dump->version & 0xfffff) >= in qlcnic_83xx_cache_tmpl_hdr_values()
360 return hdr->cap_sizes[index]; in qlcnic_83xx_get_cap_size()
367 hdr->sys_info[idx] = value; in qlcnic_83xx_set_sys_info()
375 hdr->drv_cap_mask = mask; in qlcnic_83xx_store_cap_mask()
389 struct __crb *crb = &entry->region.crb; in qlcnic_dump_crb()
391 addr = crb->addr; in qlcnic_dump_crb()
393 for (i = 0; i < crb->no_ops; i++) { in qlcnic_dump_crb()
397 addr += crb->stride; in qlcnic_dump_crb()
399 return crb->no_ops * 2 * sizeof(u32); in qlcnic_dump_crb()
405 void *hdr = adapter->ahw->fw_dump.tmpl_hdr; in qlcnic_dump_ctrl()
406 struct __ctrl *ctr = &entry->region.ctrl; in qlcnic_dump_ctrl()
411 addr = ctr->addr; in qlcnic_dump_ctrl()
412 no_ops = ctr->no_ops; in qlcnic_dump_ctrl()
417 if (!(ctr->opcode & (1 << k))) in qlcnic_dump_ctrl()
421 qlcnic_ind_wr(adapter, addr, ctr->val1); in qlcnic_dump_ctrl()
430 (data & ctr->val2)); in qlcnic_dump_ctrl()
435 (data | ctr->val3)); in qlcnic_dump_ctrl()
438 while (timeout <= ctr->timeout) { in qlcnic_dump_ctrl()
440 if ((data & ctr->val2) == ctr->val1) in qlcnic_dump_ctrl()
445 if (timeout > ctr->timeout) { in qlcnic_dump_ctrl()
446 dev_info(&adapter->pdev->dev, in qlcnic_dump_ctrl()
448 return -EINVAL; in qlcnic_dump_ctrl()
452 temp = ctr->index_a; in qlcnic_dump_ctrl()
459 ctr->index_v, data); in qlcnic_dump_ctrl()
462 temp = ctr->index_v; in qlcnic_dump_ctrl()
468 data = ctr->val1; in qlcnic_dump_ctrl()
470 temp = ctr->index_a; in qlcnic_dump_ctrl()
479 ctr->index_v); in qlcnic_dump_ctrl()
480 data <<= ctr->shl_val; in qlcnic_dump_ctrl()
481 data >>= ctr->shr_val; in qlcnic_dump_ctrl()
482 if (ctr->val2) in qlcnic_dump_ctrl()
483 data &= ctr->val2; in qlcnic_dump_ctrl()
484 data |= ctr->val3; in qlcnic_dump_ctrl()
485 data += ctr->val1; in qlcnic_dump_ctrl()
487 ctr->index_v, data); in qlcnic_dump_ctrl()
490 dev_info(&adapter->pdev->dev, in qlcnic_dump_ctrl()
495 addr += ctr->stride; in qlcnic_dump_ctrl()
504 u32 val, data = 0; in qlcnic_dump_mux() local
505 struct __mux *mux = &entry->region.mux; in qlcnic_dump_mux()
507 val = mux->val; in qlcnic_dump_mux()
508 for (loop = 0; loop < mux->no_ops; loop++) { in qlcnic_dump_mux()
509 qlcnic_ind_wr(adapter, mux->addr, val); in qlcnic_dump_mux()
510 data = qlcnic_ind_rd(adapter, mux->read_addr); in qlcnic_dump_mux()
511 *buffer++ = cpu_to_le32(val); in qlcnic_dump_mux()
513 val += mux->val_stride; in qlcnic_dump_mux()
515 return 2 * mux->no_ops * sizeof(u32); in qlcnic_dump_mux()
523 struct __queue *que = &entry->region.que; in qlcnic_dump_que()
525 addr = que->read_addr; in qlcnic_dump_que()
526 cnt = que->read_addr_cnt; in qlcnic_dump_que()
528 for (loop = 0; loop < que->no_ops; loop++) { in qlcnic_dump_que()
529 qlcnic_ind_wr(adapter, que->sel_addr, que_id); in qlcnic_dump_que()
530 addr = que->read_addr; in qlcnic_dump_que()
534 addr += que->read_addr_stride; in qlcnic_dump_que()
536 que_id += que->stride; in qlcnic_dump_que()
538 return que->no_ops * cnt * sizeof(u32); in qlcnic_dump_que()
547 struct __ocm *ocm = &entry->region.ocm; in qlcnic_dump_ocm()
549 addr = adapter->ahw->pci_base0 + ocm->read_addr; in qlcnic_dump_ocm()
550 for (i = 0; i < ocm->no_ops; i++) { in qlcnic_dump_ocm()
553 addr += ocm->read_addr_stride; in qlcnic_dump_ocm()
555 return ocm->no_ops * sizeof(u32); in qlcnic_dump_ocm()
562 u32 fl_addr, size, val, lck_val, addr; in qlcnic_read_rom() local
563 struct __mem *rom = &entry->region.mem; in qlcnic_read_rom() local
565 fl_addr = rom->addr; in qlcnic_read_rom()
566 size = rom->size / 4; in qlcnic_read_rom()
575 adapter->ahw->pci_func); in qlcnic_read_rom()
580 val = qlcnic_ind_rd(adapter, addr); in qlcnic_read_rom()
582 *buffer++ = cpu_to_le32(val); in qlcnic_read_rom()
585 return rom->size; in qlcnic_read_rom()
592 u32 cnt, val, data, addr; in qlcnic_dump_l1_cache() local
593 struct __cache *l1 = &entry->region.cache; in qlcnic_dump_l1_cache()
595 val = l1->init_tag_val; in qlcnic_dump_l1_cache()
597 for (i = 0; i < l1->no_ops; i++) { in qlcnic_dump_l1_cache()
598 qlcnic_ind_wr(adapter, l1->addr, val); in qlcnic_dump_l1_cache()
599 qlcnic_ind_wr(adapter, l1->ctrl_addr, LSW(l1->ctrl_val)); in qlcnic_dump_l1_cache()
600 addr = l1->read_addr; in qlcnic_dump_l1_cache()
601 cnt = l1->read_addr_num; in qlcnic_dump_l1_cache()
605 addr += l1->read_addr_stride; in qlcnic_dump_l1_cache()
606 cnt--; in qlcnic_dump_l1_cache()
608 val += l1->stride; in qlcnic_dump_l1_cache()
610 return l1->no_ops * l1->read_addr_num * sizeof(u32); in qlcnic_dump_l1_cache()
617 u32 cnt, val, data, addr; in qlcnic_dump_l2_cache() local
619 struct __cache *l2 = &entry->region.cache; in qlcnic_dump_l2_cache()
621 val = l2->init_tag_val; in qlcnic_dump_l2_cache()
622 poll_mask = LSB(MSW(l2->ctrl_val)); in qlcnic_dump_l2_cache()
623 poll_to = MSB(MSW(l2->ctrl_val)); in qlcnic_dump_l2_cache()
625 for (i = 0; i < l2->no_ops; i++) { in qlcnic_dump_l2_cache()
626 qlcnic_ind_wr(adapter, l2->addr, val); in qlcnic_dump_l2_cache()
627 if (LSW(l2->ctrl_val)) in qlcnic_dump_l2_cache()
628 qlcnic_ind_wr(adapter, l2->ctrl_addr, in qlcnic_dump_l2_cache()
629 LSW(l2->ctrl_val)); in qlcnic_dump_l2_cache()
633 data = qlcnic_ind_rd(adapter, l2->ctrl_addr); in qlcnic_dump_l2_cache()
641 dev_err(&adapter->pdev->dev, in qlcnic_dump_l2_cache()
644 return -EINVAL; in qlcnic_dump_l2_cache()
647 addr = l2->read_addr; in qlcnic_dump_l2_cache()
648 cnt = l2->read_addr_num; in qlcnic_dump_l2_cache()
652 addr += l2->read_addr_stride; in qlcnic_dump_l2_cache()
653 cnt--; in qlcnic_dump_l2_cache()
655 val += l2->stride; in qlcnic_dump_l2_cache()
657 return l2->no_ops * l2->read_addr_num * sizeof(u32); in qlcnic_dump_l2_cache()
667 reg_read = mem->size; in qlcnic_read_memory_test_agent()
668 addr = mem->addr; in qlcnic_read_memory_test_agent()
671 dev_info(&adapter->pdev->dev, in qlcnic_read_memory_test_agent()
674 *ret = -EINVAL; in qlcnic_read_memory_test_agent()
678 mutex_lock(&adapter->ahw->mem_lock); in qlcnic_read_memory_test_agent()
692 dev_err(&adapter->pdev->dev, in qlcnic_read_memory_test_agent()
694 *ret = -EIO; in qlcnic_read_memory_test_agent()
703 reg_read -= 16; in qlcnic_read_memory_test_agent()
708 mutex_unlock(&adapter->ahw->mem_lock); in qlcnic_read_memory_test_agent()
709 return mem->size; in qlcnic_read_memory_test_agent()
723 struct device *dev = &adapter->pdev->dev; in qlcnic_start_pex_dma()
728 tmpl_hdr = adapter->ahw->fw_dump.tmpl_hdr; in qlcnic_start_pex_dma()
734 ret = qlcnic_ind_wr(adapter, temp_addr, mem->desc_card_addr); in qlcnic_start_pex_dma()
744 ret = qlcnic_ind_wr(adapter, temp_addr, mem->start_dma_cmd); in qlcnic_start_pex_dma()
761 ret = -EIO; in qlcnic_start_pex_dma()
771 struct qlcnic_fw_dump *fw_dump = &adapter->ahw->fw_dump; in qlcnic_read_memory_pexdma()
774 struct device *dev = &adapter->pdev->dev; in qlcnic_read_memory_pexdma()
779 tmpl_hdr = fw_dump->tmpl_hdr; in qlcnic_read_memory_pexdma()
790 *ret = -EIO; in qlcnic_read_memory_pexdma()
798 *ret = -ENOMEM; in qlcnic_read_memory_pexdma()
803 * dma_desc_cmd 16:19 = mem->dma_desc_cmd 0:3 in qlcnic_read_memory_pexdma()
805 * dma_desc_cmd 24:31 = mem->dma_desc_cmd 8:15 in qlcnic_read_memory_pexdma()
807 dma_phys_addr = fw_dump->phys_addr; in qlcnic_read_memory_pexdma()
808 dma_buffer = fw_dump->dma_buffer; in qlcnic_read_memory_pexdma()
810 temp = mem->dma_desc_cmd & 0xff0f; in qlcnic_read_memory_pexdma()
811 temp |= (adapter->ahw->pci_func & 0xf) << 4; in qlcnic_read_memory_pexdma()
812 dma_descr->dma_desc_cmd = (temp << 16) & 0xffff0000; in qlcnic_read_memory_pexdma()
813 dma_descr->dma_bus_addr_low = LSD(dma_phys_addr); in qlcnic_read_memory_pexdma()
814 dma_descr->dma_bus_addr_high = MSD(dma_phys_addr); in qlcnic_read_memory_pexdma()
815 dma_descr->src_addr_high = 0; in qlcnic_read_memory_pexdma()
818 while (read_size < mem->size) { in qlcnic_read_memory_pexdma()
819 if (mem->size - read_size >= QLC_PEX_DMA_READ_SIZE) in qlcnic_read_memory_pexdma()
822 size = mem->size - read_size; in qlcnic_read_memory_pexdma()
824 dma_descr->src_addr_low = mem->addr + read_size; in qlcnic_read_memory_pexdma()
825 dma_descr->read_data_size = size; in qlcnic_read_memory_pexdma()
829 *ret = qlcnic_ms_mem_write128(adapter, mem->desc_card_addr, in qlcnic_read_memory_pexdma()
833 mem->desc_card_addr); in qlcnic_read_memory_pexdma()
857 struct qlcnic_fw_dump *fw_dump = &adapter->ahw->fw_dump; in qlcnic_read_memory()
858 struct device *dev = &adapter->pdev->dev; in qlcnic_read_memory()
859 struct __mem *mem = &entry->region.mem; in qlcnic_read_memory()
863 if (fw_dump->use_pex_dma) { in qlcnic_read_memory()
869 entry->hdr.mask); in qlcnic_read_memory()
878 entry->hdr.mask); in qlcnic_read_memory()
888 entry->hdr.flags |= QLCNIC_DUMP_SKIP; in qlcnic_dump_nop()
896 if (size != entry->hdr.cap_size) { in qlcnic_valid_dump_entry()
899 entry->hdr.type, entry->hdr.mask, size, in qlcnic_valid_dump_entry()
900 entry->hdr.cap_size); in qlcnic_valid_dump_entry()
910 struct __pollrdmwr *poll = &entry->region.pollrdmwr; in qlcnic_read_pollrdmwr()
913 poll_wait = poll->poll_wait; in qlcnic_read_pollrdmwr()
915 qlcnic_ind_wr(adapter, poll->addr1, poll->val1); in qlcnic_read_pollrdmwr()
919 data = qlcnic_ind_rd(adapter, poll->addr1); in qlcnic_read_pollrdmwr()
920 if ((data & poll->poll_mask) != 0) in qlcnic_read_pollrdmwr()
926 dev_err(&adapter->pdev->dev, in qlcnic_read_pollrdmwr()
932 data = qlcnic_ind_rd(adapter, poll->addr2) & poll->mod_mask; in qlcnic_read_pollrdmwr()
933 qlcnic_ind_wr(adapter, poll->addr2, data); in qlcnic_read_pollrdmwr()
934 qlcnic_ind_wr(adapter, poll->addr1, poll->val2); in qlcnic_read_pollrdmwr()
938 temp = qlcnic_ind_rd(adapter, poll->addr1); in qlcnic_read_pollrdmwr()
939 if ((temp & poll->poll_mask) != 0) in qlcnic_read_pollrdmwr()
944 *buffer++ = cpu_to_le32(poll->addr2); in qlcnic_read_pollrdmwr()
954 struct __pollrd *pollrd = &entry->region.pollrd; in qlcnic_read_pollrd()
958 poll_wait = pollrd->poll_wait; in qlcnic_read_pollrd()
959 sel_val = pollrd->sel_val; in qlcnic_read_pollrd()
961 for (i = 0; i < pollrd->no_ops; i++) { in qlcnic_read_pollrd()
962 qlcnic_ind_wr(adapter, pollrd->sel_addr, sel_val); in qlcnic_read_pollrd()
965 data = qlcnic_ind_rd(adapter, pollrd->sel_addr); in qlcnic_read_pollrd()
966 if ((data & pollrd->poll_mask) != 0) in qlcnic_read_pollrd()
972 dev_err(&adapter->pdev->dev, in qlcnic_read_pollrd()
978 data = qlcnic_ind_rd(adapter, pollrd->read_addr); in qlcnic_read_pollrd()
981 sel_val += pollrd->sel_val_stride; in qlcnic_read_pollrd()
983 return pollrd->no_ops * (2 * sizeof(u32)); in qlcnic_read_pollrd()
989 struct __mux2 *mux2 = &entry->region.mux2; in qlcnic_read_mux2()
994 sel_val1 = mux2->sel_val1; in qlcnic_read_mux2()
995 sel_val2 = mux2->sel_val2; in qlcnic_read_mux2()
997 for (i = 0; i < mux2->no_ops; i++) { in qlcnic_read_mux2()
998 qlcnic_ind_wr(adapter, mux2->sel_addr1, sel_val1); in qlcnic_read_mux2()
999 t_sel_val = sel_val1 & mux2->sel_val_mask; in qlcnic_read_mux2()
1000 qlcnic_ind_wr(adapter, mux2->sel_addr2, t_sel_val); in qlcnic_read_mux2()
1001 data = qlcnic_ind_rd(adapter, mux2->read_addr); in qlcnic_read_mux2()
1004 qlcnic_ind_wr(adapter, mux2->sel_addr1, sel_val2); in qlcnic_read_mux2()
1005 t_sel_val = sel_val2 & mux2->sel_val_mask; in qlcnic_read_mux2()
1006 qlcnic_ind_wr(adapter, mux2->sel_addr2, t_sel_val); in qlcnic_read_mux2()
1007 data = qlcnic_ind_rd(adapter, mux2->read_addr); in qlcnic_read_mux2()
1010 sel_val1 += mux2->sel_val_stride; in qlcnic_read_mux2()
1011 sel_val2 += mux2->sel_val_stride; in qlcnic_read_mux2()
1014 return mux2->no_ops * (4 * sizeof(u32)); in qlcnic_read_mux2()
1021 struct __mem *rom = &entry->region.mem; in qlcnic_83xx_dump_rom() local
1023 fl_addr = rom->addr; in qlcnic_83xx_dump_rom()
1024 size = rom->size / 4; in qlcnic_83xx_dump_rom()
1028 return rom->size; in qlcnic_83xx_dump_rom()
1086 while (count-- > 0) in qlcnic_temp_checksum()
1099 return -EIO; in qlcnic_fw_flash_get_minidump_temp()
1102 return -EIO; in qlcnic_fw_flash_get_minidump_temp()
1122 return -EIO; in qlcnic_fw_flash_get_minidump_temp_size()
1125 return -EIO; in qlcnic_fw_flash_get_minidump_temp_size()
1133 cmd->rsp.arg[2] = tmp_hdr.size; in qlcnic_fw_flash_get_minidump_temp_size()
1134 cmd->rsp.arg[3] = tmp_hdr.version; in qlcnic_fw_flash_get_minidump_temp_size()
1147 return -ENOMEM; in qlcnic_fw_get_minidump_temp_size()
1153 return -EIO; in qlcnic_fw_get_minidump_temp_size()
1163 return -EIO; in qlcnic_fw_get_minidump_temp_size()
1177 tmp_addr = dma_alloc_coherent(&adapter->pdev->dev, temp_size, in __qlcnic_fw_cmd_get_minidump_temp()
1180 return -ENOMEM; in __qlcnic_fw_cmd_get_minidump_temp()
1183 err = -ENOMEM; in __qlcnic_fw_cmd_get_minidump_temp()
1201 dma_free_coherent(&adapter->pdev->dev, temp_size, tmp_addr, tmp_addr_t); in __qlcnic_fw_cmd_get_minidump_temp()
1216 ahw = adapter->ahw; in qlcnic_fw_cmd_get_minidump_temp()
1217 fw_dump = &ahw->fw_dump; in qlcnic_fw_cmd_get_minidump_temp()
1221 dev_err(&adapter->pdev->dev, in qlcnic_fw_cmd_get_minidump_temp()
1223 return -EIO; in qlcnic_fw_cmd_get_minidump_temp()
1226 fw_dump->tmpl_hdr = vzalloc(temp_size); in qlcnic_fw_cmd_get_minidump_temp()
1227 if (!fw_dump->tmpl_hdr) in qlcnic_fw_cmd_get_minidump_temp()
1228 return -ENOMEM; in qlcnic_fw_cmd_get_minidump_temp()
1230 tmp_buf = (u32 *)fw_dump->tmpl_hdr; in qlcnic_fw_cmd_get_minidump_temp()
1242 dev_err(&adapter->pdev->dev, in qlcnic_fw_cmd_get_minidump_temp()
1245 vfree(fw_dump->tmpl_hdr); in qlcnic_fw_cmd_get_minidump_temp()
1246 fw_dump->tmpl_hdr = NULL; in qlcnic_fw_cmd_get_minidump_temp()
1247 return -EIO; in qlcnic_fw_cmd_get_minidump_temp()
1254 dev_err(&adapter->pdev->dev, in qlcnic_fw_cmd_get_minidump_temp()
1256 vfree(fw_dump->tmpl_hdr); in qlcnic_fw_cmd_get_minidump_temp()
1257 fw_dump->tmpl_hdr = NULL; in qlcnic_fw_cmd_get_minidump_temp()
1258 return -EIO; in qlcnic_fw_cmd_get_minidump_temp()
1263 if (fw_dump->use_pex_dma) { in qlcnic_fw_cmd_get_minidump_temp()
1264 fw_dump->dma_buffer = NULL; in qlcnic_fw_cmd_get_minidump_temp()
1265 temp_buffer = dma_alloc_coherent(&adapter->pdev->dev, in qlcnic_fw_cmd_get_minidump_temp()
1267 &fw_dump->phys_addr, in qlcnic_fw_cmd_get_minidump_temp()
1270 fw_dump->use_pex_dma = false; in qlcnic_fw_cmd_get_minidump_temp()
1272 fw_dump->dma_buffer = temp_buffer; in qlcnic_fw_cmd_get_minidump_temp()
1276 dev_info(&adapter->pdev->dev, in qlcnic_fw_cmd_get_minidump_temp()
1278 fw_dump->cap_mask); in qlcnic_fw_cmd_get_minidump_temp()
1287 struct qlcnic_fw_dump *fw_dump = &adapter->ahw->fw_dump; in qlcnic_dump_fw()
1292 struct device *dev = &adapter->pdev->dev; in qlcnic_dump_fw()
1301 ahw = adapter->ahw; in qlcnic_dump_fw()
1302 tmpl_hdr = fw_dump->tmpl_hdr; in qlcnic_dump_fw()
1306 return -EIO; in qlcnic_dump_fw()
1309 dev_info(&adapter->pdev->dev, "Dump not enabled\n"); in qlcnic_dump_fw()
1310 return -EIO; in qlcnic_dump_fw()
1313 if (fw_dump->clr) { in qlcnic_dump_fw()
1314 dev_info(&adapter->pdev->dev, in qlcnic_dump_fw()
1316 return -EIO; in qlcnic_dump_fw()
1319 netif_info(adapter->ahw, drv, adapter->netdev, "Take FW dump\n"); in qlcnic_dump_fw()
1322 if (i & fw_dump->cap_mask) in qlcnic_dump_fw()
1326 return -EIO; in qlcnic_dump_fw()
1328 fw_dump->data = vzalloc(dump_size); in qlcnic_dump_fw()
1329 if (!fw_dump->data) in qlcnic_dump_fw()
1330 return -ENOMEM; in qlcnic_dump_fw()
1332 buffer = fw_dump->data; in qlcnic_dump_fw()
1333 fw_dump->size = dump_size; in qlcnic_dump_fw()
1334 no_entries = fw_dump->num_entries; in qlcnic_dump_fw()
1335 entry_offset = fw_dump->offset; in qlcnic_dump_fw()
1337 qlcnic_set_sys_info(adapter, tmpl_hdr, 1, adapter->fw_version); in qlcnic_dump_fw()
1346 ocm_window = hdr_83xx->ocm_wnd_reg[ahw->pci_func]; in qlcnic_dump_fw()
1347 hdr_83xx->saved_state[QLC_83XX_OCM_INDEX] = ocm_window; in qlcnic_dump_fw()
1348 hdr_83xx->saved_state[QLC_83XX_PCI_INDEX] = ahw->pci_func; in qlcnic_dump_fw()
1353 if (!(entry->hdr.mask & fw_dump->cap_mask)) { in qlcnic_dump_fw()
1354 entry->hdr.flags |= QLCNIC_DUMP_SKIP; in qlcnic_dump_fw()
1355 entry_offset += entry->hdr.offset; in qlcnic_dump_fw()
1362 if (entry->hdr.type == fw_dump_ops[ops_index].opcode) in qlcnic_dump_fw()
1369 entry->hdr.type); in qlcnic_dump_fw()
1370 entry->hdr.flags |= QLCNIC_DUMP_SKIP; in qlcnic_dump_fw()
1371 entry_offset += entry->hdr.offset; in qlcnic_dump_fw()
1378 entry->hdr.flags |= QLCNIC_DUMP_SKIP; in qlcnic_dump_fw()
1379 entry_offset += entry->hdr.offset; in qlcnic_dump_fw()
1383 buf_offset += entry->hdr.cap_size; in qlcnic_dump_fw()
1384 entry_offset += entry->hdr.offset; in qlcnic_dump_fw()
1385 buffer = fw_dump->data + buf_offset; in qlcnic_dump_fw()
1389 fw_dump->clr = 1; in qlcnic_dump_fw()
1390 snprintf(mesg, sizeof(mesg), "FW_DUMP=%s", adapter->netdev->name); in qlcnic_dump_fw()
1391 netdev_info(adapter->netdev, in qlcnic_dump_fw()
1393 fw_dump->size, fw_dump->data, fw_dump->tmpl_hdr_size, in qlcnic_dump_fw()
1394 fw_dump->tmpl_hdr); in qlcnic_dump_fw()
1396 kobject_uevent_env(&dev->kobj, KOBJ_CHANGE, msg); in qlcnic_dump_fw()
1409 return ((adapter->pdev->device == PCI_DEVICE_ID_QLOGIC_QLE8830) && in qlcnic_83xx_md_check_extended_dump_capability()
1410 (adapter->ahw->extra_capability[0] & in qlcnic_83xx_md_check_extended_dump_capability()
1417 struct qlcnic_hardware_context *ahw = adapter->ahw; in qlcnic_83xx_get_minidump_template()
1418 struct qlcnic_fw_dump *fw_dump = &ahw->fw_dump; in qlcnic_83xx_get_minidump_template()
1419 struct pci_dev *pdev = adapter->pdev; in qlcnic_83xx_get_minidump_template()
1423 prev_version = adapter->fw_version; in qlcnic_83xx_get_minidump_template()
1426 if (fw_dump->tmpl_hdr == NULL || current_version > prev_version) { in qlcnic_83xx_get_minidump_template()
1427 vfree(fw_dump->tmpl_hdr); in qlcnic_83xx_get_minidump_template()
1428 fw_dump->tmpl_hdr = NULL; in qlcnic_83xx_get_minidump_template()
1437 dev_info(&pdev->dev, "Supports FW dump capability\n"); in qlcnic_83xx_get_minidump_template()
1446 hdr = fw_dump->tmpl_hdr; in qlcnic_83xx_get_minidump_template()
1449 hdr->drv_cap_mask = 0x1f; in qlcnic_83xx_get_minidump_template()
1450 fw_dump->cap_mask = 0x1f; in qlcnic_83xx_get_minidump_template()
1451 dev_info(&pdev->dev, in qlcnic_83xx_get_minidump_template()