Lines Matching +full:qe +full:- +full:firmware

1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2005-2014 Brocade Communications Systems, Inc.
4 * Copyright (c) 2014- QLogic Corporation.
8 * Linux driver for QLogic BR-series Fibre Channel Host Bus Adapter.
21 #include <linux/firmware.h>
47 int bfa_linkup_delay = -1;
55 /* Firmware releated */
59 #define BFAD_FW_FILE_CB "cbfw-3.2.5.1.bin"
60 #define BFAD_FW_FILE_CT "ctfw-3.2.5.1.bin"
61 #define BFAD_FW_FILE_CT2 "ct2fw-3.2.5.1.bin"
126 MODULE_PARM_DESC(msix_disable_cb, "Disable Message Signaled Interrupts for QLogic-415/425/815/825 cards, default=0 Range[false:0|true:1]");
128 MODULE_PARM_DESC(msix_disable_ct, "Disable Message Signaled Interrupts if possible for QLogic-1010/1020/804/1007/902/1741 cards, default=0, Range[false:0|true:1]");
170 bfad->bfad_tsk = kthread_create(bfad_worker, (void *) bfad,
172 if (IS_ERR(bfad->bfad_tsk)) {
174 "creation failed!\n", bfad->inst_no);
204 init_completion(&bfad->comp);
209 bfad->inst_no);
214 spin_lock_irqsave(&bfad->bfad_lock, flags);
215 bfa_iocfc_init(&bfad->bfa);
216 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
219 if ((bfad->bfad_flags & BFAD_MSIX_ON) &&
222 __func__, bfad->inst_no);
227 wait_for_completion(&bfad->comp);
229 if ((bfad->bfad_flags & BFAD_HAL_INIT_DONE)) {
234 bfad->pci_name);
235 spin_lock_irqsave(&bfad->bfad_lock, flags);
236 bfa_fcs_init(&bfad->bfa_fcs);
237 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
241 init_completion(&bfad->comp);
243 spin_lock_irqsave(&bfad->bfad_lock, flags);
244 bfad->pport.flags |= BFAD_PORT_DELETE;
245 bfa_fcs_exit(&bfad->bfa_fcs);
246 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
248 wait_for_completion(&bfad->comp);
253 bfad->bfad_flags |= BFAD_HAL_INIT_FAIL;
278 kthread_stop(bfad->bfad_tsk);
279 spin_lock_irqsave(&bfad->bfad_lock, flags);
280 bfad->bfad_tsk = NULL;
281 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
293 kthread_stop(bfad->bfad_tsk);
294 spin_lock_irqsave(&bfad->bfad_lock, flags);
295 bfad->bfad_tsk = NULL;
296 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
330 timer_delete_sync(&bfad->hal_tmo);
379 timer_delete_sync(&bfad->hal_tmo);
381 bfad->bfad_flags &= ~BFAD_FC4_PROBE_DONE;
399 fcomp->status = status;
400 complete(&fcomp->comp);
412 bfad->bfad_flags |= BFAD_HAL_INIT_DONE;
419 if ((bfad->bfad_flags & BFAD_HAL_INIT_FAIL)) {
420 bfad->bfad_flags &= ~BFAD_HAL_INIT_FAIL;
421 wake_up_process(bfad->bfad_tsk);
425 complete(&bfad->comp);
440 port_drv = &bfad->pport;
441 port_drv->pvb_type = BFAD_PORT_PHYS_BASE;
443 port_drv = &vf_drv->base_port;
444 port_drv->pvb_type = BFAD_PORT_VF_BASE;
446 port_drv = &vp_drv->drv_port;
447 port_drv->pvb_type = BFAD_PORT_PHYS_VPORT;
449 port_drv = &vp_drv->drv_port;
450 port_drv->pvb_type = BFAD_PORT_VF_VPORT;
453 port_drv->fcs_port = port;
454 port_drv->roles = roles;
482 *rport = &(*rport_drv)->fcs_rport;
505 vport->drv_port.bfad = bfad;
511 rc = bfa_fcs_pbc_vport_create(&vport->fcs_vport, &bfad->bfa_fcs, 0,
519 list_add_tail(&vport->list_entry, &bfad->pbc_vport_list);
525 struct bfa_meminfo_s *hal_meminfo = &bfad->meminfo;
530 dma_info = &hal_meminfo->dma_info;
531 kva_info = &hal_meminfo->kva_info;
534 list_for_each(km_qe, &kva_info->qe) {
536 vfree(kva_elem->kva);
540 list_for_each(dm_qe, &dma_info->qe) {
542 dma_free_coherent(&bfad->pcidev->dev,
543 dma_elem->mem_len, dma_elem->kva,
544 (dma_addr_t) dma_elem->dma);
554 bfa_cfg->fwcfg.num_rports = num_rports;
556 bfa_cfg->fwcfg.num_ioim_reqs = num_ios;
558 bfa_cfg->fwcfg.num_tskim_reqs = num_tms;
560 bfa_cfg->fwcfg.num_fcxp_reqs = num_fcxps;
562 bfa_cfg->fwcfg.num_uf_bufs = num_ufbufs;
564 bfa_cfg->drvcfg.num_reqq_elems = reqq_size;
566 bfa_cfg->drvcfg.num_rspq_elems = rspq_size;
568 bfa_cfg->drvcfg.num_sgpgs = num_sgpgs;
574 num_rports = bfa_cfg->fwcfg.num_rports;
575 num_ios = bfa_cfg->fwcfg.num_ioim_reqs;
576 num_tms = bfa_cfg->fwcfg.num_tskim_reqs;
577 num_fcxps = bfa_cfg->fwcfg.num_fcxp_reqs;
578 num_ufbufs = bfa_cfg->fwcfg.num_uf_bufs;
579 reqq_size = bfa_cfg->drvcfg.num_reqq_elems;
580 rspq_size = bfa_cfg->drvcfg.num_rspq_elems;
581 num_sgpgs = bfa_cfg->drvcfg.num_sgpgs;
587 struct bfa_meminfo_s *hal_meminfo = &bfad->meminfo;
594 bfa_cfg_get_default(&bfad->ioc_cfg);
595 bfad_update_hal_cfg(&bfad->ioc_cfg);
596 bfad->cfg_data.ioc_queue_depth = bfad->ioc_cfg.fwcfg.num_ioim_reqs;
597 bfa_cfg_get_meminfo(&bfad->ioc_cfg, hal_meminfo, &bfad->bfa);
599 dma_info = &hal_meminfo->dma_info;
600 kva_info = &hal_meminfo->kva_info;
603 list_for_each(km_qe, &kva_info->qe) {
605 kva_elem->kva = vzalloc(kva_elem->mem_len);
606 if (kva_elem->kva == NULL) {
614 list_for_each(dm_qe, &dma_info->qe) {
616 dma_elem->kva = dma_alloc_coherent(&bfad->pcidev->dev,
617 dma_elem->mem_len,
619 if (dma_elem->kva == NULL) {
624 dma_elem->dma = phys_addr;
625 memset(dma_elem->kva, 0, dma_elem->mem_len);
649 vport->drv_port.bfad = bfad;
650 spin_lock_irqsave(&bfad->bfad_lock, flags);
651 rc = bfa_fcs_vport_create(&vport->fcs_vport, &bfad->bfa_fcs, vf_id,
653 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
658 if (port_cfg->roles & BFA_LPORT_ROLE_FCP_IM) {
659 rc = bfad_im_scsi_host_alloc(bfad, vport->drv_port.im_port,
665 spin_lock_irqsave(&bfad->bfad_lock, flags);
666 bfa_fcs_vport_start(&vport->fcs_vport);
667 list_add_tail(&vport->list_entry, &bfad->vport_list);
668 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
673 spin_lock_irqsave(&bfad->bfad_lock, flags);
674 vport->comp_del = &fcomp;
675 init_completion(vport->comp_del);
676 bfa_fcs_vport_delete(&vport->fcs_vport);
677 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
678 wait_for_completion(vport->comp_del);
693 spin_lock_irqsave(&bfad->bfad_lock, flags);
695 bfa_timer_beat(&bfad->bfa.timer_mod);
697 bfa_comp_deq(&bfad->bfa, &doneq);
698 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
701 bfa_comp_process(&bfad->bfa, &doneq);
702 spin_lock_irqsave(&bfad->bfad_lock, flags);
703 bfa_comp_free(&bfad->bfa, &doneq);
704 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
707 mod_timer(&bfad->hal_tmo,
714 timer_setup(&bfad->hal_tmo, bfad_bfa_tmo, 0);
716 mod_timer(&bfad->hal_tmo,
723 int rc = -ENODEV;
735 rc = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64));
737 rc = -ENODEV;
742 bfad->pci_bar0_kva = pci_iomap(pdev, 0, pci_resource_len(pdev, 0));
743 bfad->pci_bar2_kva = pci_iomap(pdev, 2, pci_resource_len(pdev, 2));
745 if (bfad->pci_bar0_kva == NULL) {
747 rc = -ENODEV;
751 bfad->hal_pcidev.pci_slot = PCI_SLOT(pdev->devfn);
752 bfad->hal_pcidev.pci_func = PCI_FUNC(pdev->devfn);
753 bfad->hal_pcidev.pci_bar_kva = bfad->pci_bar0_kva;
754 bfad->hal_pcidev.device_id = pdev->device;
755 bfad->hal_pcidev.ssid = pdev->subsystem_device;
756 bfad->pci_name = pci_name(pdev);
758 bfad->pci_attr.vendor_id = pdev->vendor;
759 bfad->pci_attr.device_id = pdev->device;
760 bfad->pci_attr.ssid = pdev->subsystem_device;
761 bfad->pci_attr.ssvid = pdev->subsystem_vendor;
762 bfad->pci_attr.pcifn = PCI_FUNC(pdev->devfn);
764 bfad->pcidev = pdev;
774 "reset to %d\n", bfad->pci_name, max_rq,
780 bfad->pci_name, pcie_max_read_reqsz);
799 pci_iounmap(pdev, bfad->pci_bar0_kva);
800 pci_iounmap(pdev, bfad->pci_bar2_kva);
811 bfad->cfg_data.rport_del_timeout = rport_del_timeout;
812 bfad->cfg_data.lun_queue_depth = bfa_lun_queue_depth;
813 bfad->cfg_data.io_max_sge = bfa_io_max_sge;
814 bfad->cfg_data.binding_method = FCP_PWWN_BINDING;
819 bfad->inst_no);
821 "Not enough memory to attach all QLogic BR-series HBA ports. System may need more memory.\n");
825 bfad->bfa.trcmod = bfad->trcmod;
826 bfad->bfa.plog = &bfad->plog_buf;
827 bfa_plog_init(&bfad->plog_buf);
828 bfa_plog_str(&bfad->plog_buf, BFA_PL_MID_DRVR, BFA_PL_EID_DRIVER_START,
831 bfa_attach(&bfad->bfa, bfad, &bfad->ioc_cfg, &bfad->meminfo,
832 &bfad->hal_pcidev);
835 spin_lock_irqsave(&bfad->bfad_lock, flags);
836 bfad->bfa_fcs.trcmod = bfad->trcmod;
837 bfa_fcs_attach(&bfad->bfa_fcs, &bfad->bfa, bfad, BFA_FALSE);
838 bfad->bfa_fcs.fdmi_enabled = fdmi_enable;
839 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
841 bfad->bfad_flags |= BFAD_DRV_INIT_DONE;
851 spin_lock_irqsave(&bfad->bfad_lock, flags);
852 bfa_iocfc_start(&bfad->bfa);
853 bfa_fcs_pbc_vport_init(&bfad->bfa_fcs);
854 bfa_fcs_fabric_modstart(&bfad->bfa_fcs);
855 bfad->bfad_flags |= BFAD_HAL_START_DONE;
856 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
858 if (bfad->im)
859 flush_workqueue(bfad->im->drv_workq);
867 spin_lock_irqsave(&bfad->bfad_lock, flags);
868 init_completion(&bfad->comp);
869 bfad->pport.flags |= BFAD_PORT_DELETE;
870 bfa_fcs_exit(&bfad->bfa_fcs);
871 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
872 wait_for_completion(&bfad->comp);
882 spin_lock_irqsave(&bfad->bfad_lock, flags);
883 init_completion(&bfad->comp);
884 bfa_iocfc_stop(&bfad->bfa);
885 bfad->bfad_flags &= ~BFAD_HAL_START_DONE;
886 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
887 wait_for_completion(&bfad->comp);
900 if (bfad->pport.im_port == NULL) {
905 rc = bfad_im_scsi_host_alloc(bfad, bfad->pport.im_port,
906 &bfad->pcidev->dev);
910 bfad->pport.roles |= BFA_LPORT_ROLE_FCP_IM;
913 bfad->bfad_flags |= BFAD_CFG_PPORT_DONE;
923 (bfad->pport.roles & BFA_LPORT_ROLE_FCP_IM)) {
924 bfad_im_scsi_host_free(bfad, bfad->pport.im_port);
925 bfad_im_port_clean(bfad->pport.im_port);
926 kfree(bfad->pport.im_port);
927 bfad->pport.roles &= ~BFA_LPORT_ROLE_FCP_IM;
930 bfad->bfad_flags &= ~BFAD_CFG_PPORT_DONE;
941 /* Limit min/max. xfer size to [64k-32MB] */
961 strscpy(driver_info.os_device_name, bfad->pci_name,
965 spin_lock_irqsave(&bfad->bfad_lock, flags);
966 bfa_fcs_driver_info_init(&bfad->bfa_fcs, &driver_info);
968 if (bfad->bfad_flags & BFAD_CFG_PPORT_DONE)
969 bfa_fcs_update_cfg(&bfad->bfa_fcs);
971 bfa_fcs_init(&bfad->bfa_fcs);
973 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
975 if (!(bfad->bfad_flags & BFAD_CFG_PPORT_DONE)) {
982 bfad_fc_host_init(bfad->pport.im_port);
992 bfad->bfad_flags |= BFAD_FC4_PROBE_DONE;
997 list_for_each_entry_safe(vport, vport_new, &bfad->pbc_vport_list,
1008 (&((vport->fcs_vport).lport.port_cfg.nwwn)));
1010 (&((vport->fcs_vport).lport.port_cfg.pwwn)));
1011 fc_vport = fc_vport_create(bfad->pport.im_port->shost, 0, &vid);
1015 " %s\n", bfad->inst_no, pwwn_buf);
1017 list_del(&vport->list_entry);
1022 * If bfa_linkup_delay is set to -1 default; try to retrive the
1029 bfa_linkup_delay = -1;
1050 spin_lock_irqsave(&bfad->bfad_lock, flags);
1051 bfad->bfad_tsk = NULL;
1052 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
1068 spin_lock_irqsave(&bfad->bfad_lock, flags);
1069 rc = bfa_intx(&bfad->bfa);
1071 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
1075 bfa_comp_deq(&bfad->bfa, &doneq);
1076 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
1079 bfa_comp_process(&bfad->bfa, &doneq);
1081 spin_lock_irqsave(&bfad->bfad_lock, flags);
1082 bfa_comp_free(&bfad->bfa, &doneq);
1083 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
1094 struct bfad_s *bfad = vec->bfad;
1098 spin_lock_irqsave(&bfad->bfad_lock, flags);
1100 bfa_msix(&bfad->bfa, vec->msix.entry);
1101 bfa_comp_deq(&bfad->bfa, &doneq);
1102 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
1105 bfa_comp_process(&bfad->bfa, &doneq);
1107 spin_lock_irqsave(&bfad->bfad_lock, flags);
1108 bfa_comp_free(&bfad->bfa, &doneq);
1109 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
1125 for (i = 0, bfad->nvec = 0; i < MAX_MSIX_ENTRY; i++) {
1127 bfad->msix_tab[bfad->nvec].msix.entry = i;
1128 bfad->msix_tab[bfad->nvec].bfad = bfad;
1129 msix_entries[bfad->nvec].entry = i;
1130 bfad->nvec++;
1143 for (i = 0; i < bfad->nvec; i++) {
1144 sprintf(bfad->msix_tab[i].name, "bfa-%s-%s",
1145 bfad->pci_name,
1146 ((bfa_asic_id_cb(bfad->hal_pcidev.device_id)) ?
1149 error = request_irq(bfad->msix_tab[i].msix.vector,
1151 bfad->msix_tab[i].name, &bfad->msix_tab[i]);
1153 bfa_trc(bfad, bfad->msix_tab[i].msix.vector);
1158 free_irq(bfad->msix_tab[j].msix.vector,
1159 &bfad->msix_tab[j]);
1161 bfad->bfad_flags &= ~BFAD_MSIX_ON;
1162 pci_disable_msix(bfad->pcidev);
1180 struct pci_dev *pdev = bfad->pcidev;
1184 bfa_msix_getvecs(&bfad->bfa, &mask, &num_bit, &max_bit);
1189 if ((bfa_asic_id_ctc(pdev->device) && !msix_disable_ct) ||
1190 (bfa_asic_id_cb(pdev->device) && !msix_disable_cb)) {
1192 error = pci_enable_msix_exact(bfad->pcidev,
1193 msix_entries, bfad->nvec);
1195 if (error == -ENOSPC && bfa_asic_id_ctc(pdev->device)) {
1198 bfad->pci_name, bfad->nvec, error);
1199 bfad->nvec = 1;
1200 error = pci_enable_msix_exact(bfad->pcidev,
1208 bfad->inst_no, error);
1212 /* Disable INTX in MSI-X mode */
1220 for (i = 0; i < bfad->nvec; i++) {
1222 bfad->msix_tab[i].msix.vector = msix_entries[i].vector;
1225 bfa_msix_init(&bfad->bfa, bfad->nvec);
1227 bfad->bfad_flags |= BFAD_MSIX_ON;
1233 error = request_irq(bfad->pcidev->irq, (irq_handler_t)bfad_intx,
1238 bfad->bfad_flags |= BFAD_INTX_ON;
1248 if (bfad->bfad_flags & BFAD_MSIX_ON) {
1249 for (i = 0; i < bfad->nvec; i++)
1250 free_irq(bfad->msix_tab[i].msix.vector,
1251 &bfad->msix_tab[i]);
1253 pci_disable_msix(bfad->pcidev);
1254 bfad->bfad_flags &= ~BFAD_MSIX_ON;
1255 } else if (bfad->bfad_flags & BFAD_INTX_ON) {
1256 free_irq(bfad->pcidev->irq, bfad);
1267 int error = -ENODEV, retval, i;
1269 /* For single port cards - only claim function 0 */
1270 if ((pdev->device == BFA_PCI_DEVICE_ID_FC_8G1P) &&
1271 (PCI_FUNC(pdev->devfn) != 0))
1272 return -ENODEV;
1276 error = -ENOMEM;
1280 bfad->trcmod = kzalloc(sizeof(struct bfa_trc_mod_s), GFP_KERNEL);
1281 if (!bfad->trcmod) {
1283 error = -ENOMEM;
1288 bfa_trc_init(bfad->trcmod);
1292 INIT_LIST_HEAD(&bfad->free_aen_q);
1293 INIT_LIST_HEAD(&bfad->active_aen_q);
1295 list_add_tail(&bfad->aen_list[i].qe, &bfad->free_aen_q);
1298 kfree(bfad->trcmod);
1310 bfad->inst_no = bfad_inst++;
1311 list_add_tail(&bfad->list_entry, &bfad_list);
1317 spin_lock_init(&bfad->bfad_lock);
1318 spin_lock_init(&bfad->bfad_aen_spinlock);
1322 bfad->ref_count = 0;
1323 bfad->pport.bfad = bfad;
1324 INIT_LIST_HEAD(&bfad->pbc_vport_list);
1325 INIT_LIST_HEAD(&bfad->vport_list);
1329 bfad_debugfs_init(&bfad->pport);
1346 kfree(bfad->regdata);
1347 bfad_debugfs_exit(&bfad->pport);
1349 bfad_inst--;
1350 list_del(&bfad->list_entry);
1354 kfree(bfad->trcmod);
1370 bfa_trc(bfad, bfad->inst_no);
1372 spin_lock_irqsave(&bfad->bfad_lock, flags);
1373 if (bfad->bfad_tsk != NULL) {
1374 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
1375 kthread_stop(bfad->bfad_tsk);
1377 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
1384 spin_lock_irqsave(&bfad->bfad_lock, flags);
1385 bfa_detach(&bfad->bfa);
1386 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
1390 kfree(bfad->regdata);
1391 bfad_debugfs_exit(&bfad->pport);
1395 bfad_inst--;
1396 list_del(&bfad->list_entry);
1400 kfree(bfad->trcmod);
1414 dev_printk(KERN_ERR, &pdev->dev,
1415 "error detected state: %d - flags: 0x%x\n",
1416 state, bfad->bfad_flags);
1419 case pci_channel_io_normal: /* non-fatal error */
1420 spin_lock_irqsave(&bfad->bfad_lock, flags);
1421 bfad->bfad_flags &= ~BFAD_EEH_BUSY;
1423 bfa_ioc_suspend(&bfad->bfa.ioc);
1424 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
1425 timer_delete_sync(&bfad->hal_tmo);
1429 init_completion(&bfad->comp);
1430 spin_lock_irqsave(&bfad->bfad_lock, flags);
1431 bfad->bfad_flags |= BFAD_EEH_BUSY;
1433 bfa_ioc_suspend(&bfad->bfa.ioc);
1434 bfa_fcs_stop(&bfad->bfa_fcs);
1435 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
1436 wait_for_completion(&bfad->comp);
1439 timer_delete_sync(&bfad->hal_tmo);
1444 spin_lock_irqsave(&bfad->bfad_lock, flags);
1445 bfad->bfad_flags |= BFAD_EEH_BUSY |
1447 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
1450 * pci_channel_io_perm_failure - it will subsequently call
1452 * system - So defer the cleanup to pci_remove(); cleaning up
1467 struct pci_dev *pdev = bfad->pcidev;
1469 bfa_attach(&bfad->bfa, bfad, &bfad->ioc_cfg,
1470 &bfad->meminfo, &bfad->hal_pcidev);
1474 dev_printk(KERN_WARNING, &pdev->dev,
1475 "%s: bfad_setup_intr failed\n", bfad->pci_name);
1477 return -1;
1480 init_completion(&bfad->comp);
1481 spin_lock_irqsave(&bfad->bfad_lock, flags);
1482 bfa_iocfc_init(&bfad->bfa);
1483 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
1486 if ((bfad->bfad_flags & BFAD_MSIX_ON) &&
1488 dev_printk(KERN_WARNING, &pdev->dev,
1489 "%s: install_msix failed.\n", bfad->pci_name);
1492 wait_for_completion(&bfad->comp);
1499 * PCI Error Recovery entry, re-initialize the chip.
1508 dev_printk(KERN_ERR, &pdev->dev,
1509 "bfad_pci_slot_reset flags: 0x%x\n", bfad->bfad_flags);
1512 dev_printk(KERN_ERR, &pdev->dev, "Cannot re-enable "
1521 * be 0xff any time) to make sure - we did not hit another PCI error
1526 dev_printk(KERN_ERR, &pdev->dev,
1533 rc = dma_set_mask_and_coherent(&bfad->pcidev->dev, DMA_BIT_MASK(64));
1537 if (restart_bfa(bfad) == -1)
1540 dev_printk(KERN_WARNING, &pdev->dev,
1541 "slot_reset completed flags: 0x%x!\n", bfad->bfad_flags);
1556 dev_printk(KERN_INFO, &pdev->dev, "mmio_enabled\n");
1559 bfa_ioc_debug_save_ftrc(&bfad->bfa.ioc);
1562 spin_lock_irqsave(&bfad->bfad_lock, flags);
1563 init_completion(&bfad->comp);
1564 bfa_fcs_stop(&bfad->bfa_fcs);
1565 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
1566 wait_for_completion(&bfad->comp);
1569 timer_delete_sync(&bfad->hal_tmo);
1581 dev_printk(KERN_WARNING, &pdev->dev, "resume\n");
1586 spin_lock_irqsave(&bfad->bfad_lock, flags);
1587 bfad->bfad_flags &= ~BFAD_EEH_BUSY;
1588 spin_unlock_irqrestore(&bfad->bfad_lock, flags);
1668 pr_info("QLogic BR-series BFA FC/FCOE SCSI driver - version: %s\n",
1677 return -ENOMEM;
1711 /* Firmware handling */
1716 const struct firmware *fw;
1718 if (request_firmware(&fw, fw_name, &pdev->dev)) {
1719 printk(KERN_ALERT "Can't locate firmware %s\n", fw_name);
1724 *bfi_image = vmalloc(fw->size);
1727 "size=%x!\n", (u32) fw->size);
1731 memcpy(*bfi_image, fw->data, fw->size);
1732 *bfi_image_size = fw->size/sizeof(u32);
1740 if (bfa_asic_id_ct2(pdev->device)) {
1745 } else if (bfa_asic_id_ct(pdev->device)) {
1750 } else if (bfa_asic_id_cb(pdev->device)) {
1774 MODULE_DESCRIPTION("QLogic BR-series Fibre Channel HBA Driver" BFAD_PROTO_NAME);