• Home
  • Raw
  • Download

Lines Matching refs:ha

62 	struct qla_hw_data *ha = vha->hw;  in qla2x00_initialize_adapter()  local
63 struct req_que *req = ha->req_q_map[0]; in qla2x00_initialize_adapter()
73 ha->mbx_flags = 0; in qla2x00_initialize_adapter()
74 ha->isp_abort_cnt = 0; in qla2x00_initialize_adapter()
75 ha->beacon_blink_led = 0; in qla2x00_initialize_adapter()
78 set_bit(0, ha->req_qid_map); in qla2x00_initialize_adapter()
79 set_bit(0, ha->rsp_qid_map); in qla2x00_initialize_adapter()
81 qla_printk(KERN_INFO, ha, "Configuring PCI space...\n"); in qla2x00_initialize_adapter()
82 rval = ha->isp_ops->pci_config(vha); in qla2x00_initialize_adapter()
89 ha->isp_ops->reset_chip(vha); in qla2x00_initialize_adapter()
98 ha->isp_ops->get_flash_version(vha, req->ring); in qla2x00_initialize_adapter()
100 qla_printk(KERN_INFO, ha, "Configure NVRAM parameters...\n"); in qla2x00_initialize_adapter()
102 ha->isp_ops->nvram_config(vha); in qla2x00_initialize_adapter()
104 if (ha->flags.disable_serdes) { in qla2x00_initialize_adapter()
106 qla_printk(KERN_INFO, ha, "Masking HBA WWPN " in qla2x00_initialize_adapter()
115 qla_printk(KERN_INFO, ha, "Verifying loaded RISC code...\n"); in qla2x00_initialize_adapter()
118 rval = ha->isp_ops->chip_diag(vha); in qla2x00_initialize_adapter()
125 if (IS_QLA84XX(ha)) { in qla2x00_initialize_adapter()
126 ha->cs84xx = qla84xx_get_chip(vha); in qla2x00_initialize_adapter()
127 if (!ha->cs84xx) { in qla2x00_initialize_adapter()
128 qla_printk(KERN_ERR, ha, in qla2x00_initialize_adapter()
149 struct qla_hw_data *ha = vha->hw; in qla2100_pci_config() local
150 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2100_pci_config()
152 pci_set_master(ha->pdev); in qla2100_pci_config()
153 pci_try_set_mwi(ha->pdev); in qla2100_pci_config()
155 pci_read_config_word(ha->pdev, PCI_COMMAND, &w); in qla2100_pci_config()
157 pci_write_config_word(ha->pdev, PCI_COMMAND, w); in qla2100_pci_config()
159 pci_disable_rom(ha->pdev); in qla2100_pci_config()
162 spin_lock_irqsave(&ha->hardware_lock, flags); in qla2100_pci_config()
163 ha->pci_attr = RD_REG_WORD(&reg->ctrl_status); in qla2100_pci_config()
164 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla2100_pci_config()
181 struct qla_hw_data *ha = vha->hw; in qla2300_pci_config() local
182 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2300_pci_config()
184 pci_set_master(ha->pdev); in qla2300_pci_config()
185 pci_try_set_mwi(ha->pdev); in qla2300_pci_config()
187 pci_read_config_word(ha->pdev, PCI_COMMAND, &w); in qla2300_pci_config()
190 if (IS_QLA2322(ha) || IS_QLA6322(ha)) in qla2300_pci_config()
192 pci_write_config_word(ha->pdev, PCI_COMMAND, w); in qla2300_pci_config()
201 if (IS_QLA2300(ha)) { in qla2300_pci_config()
202 spin_lock_irqsave(&ha->hardware_lock, flags); in qla2300_pci_config()
218 ha->fb_rev = RD_FB_CMD_REG(ha, reg); in qla2300_pci_config()
220 if (ha->fb_rev == FPM_2300) in qla2300_pci_config()
221 pci_clear_mwi(ha->pdev); in qla2300_pci_config()
236 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla2300_pci_config()
239 pci_write_config_byte(ha->pdev, PCI_LATENCY_TIMER, 0x80); in qla2300_pci_config()
241 pci_disable_rom(ha->pdev); in qla2300_pci_config()
244 spin_lock_irqsave(&ha->hardware_lock, flags); in qla2300_pci_config()
245 ha->pci_attr = RD_REG_WORD(&reg->ctrl_status); in qla2300_pci_config()
246 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla2300_pci_config()
262 struct qla_hw_data *ha = vha->hw; in qla24xx_pci_config() local
263 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; in qla24xx_pci_config()
265 pci_set_master(ha->pdev); in qla24xx_pci_config()
266 pci_try_set_mwi(ha->pdev); in qla24xx_pci_config()
268 pci_read_config_word(ha->pdev, PCI_COMMAND, &w); in qla24xx_pci_config()
271 pci_write_config_word(ha->pdev, PCI_COMMAND, w); in qla24xx_pci_config()
273 pci_write_config_byte(ha->pdev, PCI_LATENCY_TIMER, 0x80); in qla24xx_pci_config()
276 if (pci_find_capability(ha->pdev, PCI_CAP_ID_PCIX)) in qla24xx_pci_config()
277 pcix_set_mmrbc(ha->pdev, 2048); in qla24xx_pci_config()
280 if (pci_find_capability(ha->pdev, PCI_CAP_ID_EXP)) in qla24xx_pci_config()
281 pcie_set_readrq(ha->pdev, 2048); in qla24xx_pci_config()
283 pci_disable_rom(ha->pdev); in qla24xx_pci_config()
285 ha->chip_revision = ha->pdev->revision; in qla24xx_pci_config()
288 spin_lock_irqsave(&ha->hardware_lock, flags); in qla24xx_pci_config()
289 ha->pci_attr = RD_REG_DWORD(&reg->ctrl_status); in qla24xx_pci_config()
290 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla24xx_pci_config()
305 struct qla_hw_data *ha = vha->hw; in qla25xx_pci_config() local
307 pci_set_master(ha->pdev); in qla25xx_pci_config()
308 pci_try_set_mwi(ha->pdev); in qla25xx_pci_config()
310 pci_read_config_word(ha->pdev, PCI_COMMAND, &w); in qla25xx_pci_config()
313 pci_write_config_word(ha->pdev, PCI_COMMAND, w); in qla25xx_pci_config()
316 if (pci_find_capability(ha->pdev, PCI_CAP_ID_EXP)) in qla25xx_pci_config()
317 pcie_set_readrq(ha->pdev, 2048); in qla25xx_pci_config()
319 pci_disable_rom(ha->pdev); in qla25xx_pci_config()
321 ha->chip_revision = ha->pdev->revision; in qla25xx_pci_config()
338 struct qla_hw_data *ha = vha->hw; in qla2x00_isp_firmware() local
343 if (ha->flags.disable_risc_code_load) { in qla2x00_isp_firmware()
346 qla_printk(KERN_INFO, ha, "RISC CODE NOT loaded\n"); in qla2x00_isp_firmware()
349 rval = qla2x00_verify_checksum(vha, ha->fw_srisc_address); in qla2x00_isp_firmware()
375 struct qla_hw_data *ha = vha->hw; in qla2x00_reset_chip() local
376 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_reset_chip()
380 ha->isp_ops->disable_intrs(ha); in qla2x00_reset_chip()
382 spin_lock_irqsave(&ha->hardware_lock, flags); in qla2x00_reset_chip()
386 pci_read_config_word(ha->pdev, PCI_COMMAND, &cmd); in qla2x00_reset_chip()
388 pci_write_config_word(ha->pdev, PCI_COMMAND, cmd); in qla2x00_reset_chip()
390 if (!IS_QLA2100(ha)) { in qla2x00_reset_chip()
393 if (IS_QLA2200(ha) || IS_QLA2300(ha)) { in qla2x00_reset_chip()
414 if (!IS_QLA2200(ha)) { in qla2x00_reset_chip()
424 if (IS_QLA2200(ha)) { in qla2x00_reset_chip()
425 WRT_FB_CMD_REG(ha, reg, 0xa000); in qla2x00_reset_chip()
426 RD_FB_CMD_REG(ha, reg); /* PCI Posting. */ in qla2x00_reset_chip()
428 WRT_FB_CMD_REG(ha, reg, 0x00fc); in qla2x00_reset_chip()
432 if ((RD_FB_CMD_REG(ha, reg) & 0xff) == 0) in qla2x00_reset_chip()
458 if (IS_QLA2100(ha) || IS_QLA2200(ha) || IS_QLA2300(ha)) { in qla2x00_reset_chip()
483 if (IS_QLA2100(ha) || IS_QLA2200(ha) || IS_QLA2300(ha)) { in qla2x00_reset_chip()
485 if (RD_MAILBOX_REG(ha, reg, 0) != MBS_BUSY) in qla2x00_reset_chip()
495 pci_write_config_word(ha->pdev, PCI_COMMAND, cmd); in qla2x00_reset_chip()
498 if (!IS_QLA2100(ha)) { in qla2x00_reset_chip()
503 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla2x00_reset_chip()
517 struct qla_hw_data *ha = vha->hw; in qla24xx_reset_risc() local
518 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; in qla24xx_reset_risc()
522 spin_lock_irqsave(&ha->hardware_lock, flags); in qla24xx_reset_risc()
535 pci_read_config_word(ha->pdev, PCI_COMMAND, &wd); in qla24xx_reset_risc()
572 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla24xx_reset_risc()
574 if (IS_NOPOLLING_TYPE(ha)) in qla24xx_reset_risc()
575 ha->isp_ops->enable_intrs(ha); in qla24xx_reset_risc()
587 struct qla_hw_data *ha = vha->hw; in qla24xx_reset_chip() local
588 ha->isp_ops->disable_intrs(ha); in qla24xx_reset_chip()
604 struct qla_hw_data *ha = vha->hw; in qla2x00_chip_diag() local
605 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_chip_diag()
610 struct req_que *req = ha->req_q_map[0]; in qla2x00_chip_diag()
618 spin_lock_irqsave(&ha->hardware_lock, flags); in qla2x00_chip_diag()
639 ha->host_no)); in qla2x00_chip_diag()
646 if (IS_QLA2100(ha) || IS_QLA2200(ha) || IS_QLA2300(ha)) { in qla2x00_chip_diag()
647 data = qla2x00_debounce_register(MAILBOX_REG(ha, reg, 0)); in qla2x00_chip_diag()
650 data = RD_MAILBOX_REG(ha, reg, 0); in qla2x00_chip_diag()
660 DEBUG3(printk("scsi(%ld): Checking product ID of chip\n", ha->host_no)); in qla2x00_chip_diag()
662 mb[1] = RD_MAILBOX_REG(ha, reg, 1); in qla2x00_chip_diag()
663 mb[2] = RD_MAILBOX_REG(ha, reg, 2); in qla2x00_chip_diag()
664 mb[3] = RD_MAILBOX_REG(ha, reg, 3); in qla2x00_chip_diag()
665 mb[4] = qla2x00_debounce_register(MAILBOX_REG(ha, reg, 4)); in qla2x00_chip_diag()
668 qla_printk(KERN_WARNING, ha, in qla2x00_chip_diag()
673 ha->product_id[0] = mb[1]; in qla2x00_chip_diag()
674 ha->product_id[1] = mb[2]; in qla2x00_chip_diag()
675 ha->product_id[2] = mb[3]; in qla2x00_chip_diag()
676 ha->product_id[3] = mb[4]; in qla2x00_chip_diag()
680 ha->fw_transfer_size = REQUEST_ENTRY_SIZE * 1024; in qla2x00_chip_diag()
682 ha->fw_transfer_size = REQUEST_ENTRY_SIZE * in qla2x00_chip_diag()
685 if (IS_QLA2200(ha) && in qla2x00_chip_diag()
686 RD_MAILBOX_REG(ha, reg, 7) == QLA2200A_RISC_ROM_VER) { in qla2x00_chip_diag()
691 ha->device_type |= DT_ISP2200A; in qla2x00_chip_diag()
692 ha->fw_transfer_size = 128; in qla2x00_chip_diag()
696 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla2x00_chip_diag()
703 qla_printk(KERN_WARNING, ha, in qla2x00_chip_diag()
710 spin_lock_irqsave(&ha->hardware_lock, flags); in qla2x00_chip_diag()
717 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla2x00_chip_diag()
732 struct qla_hw_data *ha = vha->hw; in qla24xx_chip_diag() local
733 struct req_que *req = ha->req_q_map[0]; in qla24xx_chip_diag()
738 ha->fw_transfer_size = REQUEST_ENTRY_SIZE * req->length; in qla24xx_chip_diag()
744 qla_printk(KERN_WARNING, ha, in qla24xx_chip_diag()
762 struct qla_hw_data *ha = vha->hw; in qla2x00_alloc_fw_dump() local
763 struct req_que *req = ha->req_q_map[0]; in qla2x00_alloc_fw_dump()
764 struct rsp_que *rsp = ha->rsp_q_map[0]; in qla2x00_alloc_fw_dump()
766 if (ha->fw_dump) { in qla2x00_alloc_fw_dump()
767 qla_printk(KERN_WARNING, ha, in qla2x00_alloc_fw_dump()
772 ha->fw_dumped = 0; in qla2x00_alloc_fw_dump()
774 if (IS_QLA2100(ha) || IS_QLA2200(ha)) { in qla2x00_alloc_fw_dump()
776 } else if (IS_QLA23XX(ha)) { in qla2x00_alloc_fw_dump()
778 mem_size = (ha->fw_memory_size - 0x11000 + 1) * in qla2x00_alloc_fw_dump()
780 } else if (IS_FWI2_CAPABLE(ha)) { in qla2x00_alloc_fw_dump()
781 if (IS_QLA81XX(ha)) in qla2x00_alloc_fw_dump()
783 else if (IS_QLA25XX(ha)) in qla2x00_alloc_fw_dump()
787 mem_size = (ha->fw_memory_size - 0x100000 + 1) * in qla2x00_alloc_fw_dump()
789 if (ha->mqenable) in qla2x00_alloc_fw_dump()
793 if (!IS_QLA25XX(ha) && !IS_QLA81XX(ha)) in qla2x00_alloc_fw_dump()
796 tc = dma_alloc_coherent(&ha->pdev->dev, FCE_SIZE, &tc_dma, in qla2x00_alloc_fw_dump()
799 qla_printk(KERN_WARNING, ha, "Unable to allocate " in qla2x00_alloc_fw_dump()
806 ha->fce_mb, &ha->fce_bufs); in qla2x00_alloc_fw_dump()
808 qla_printk(KERN_WARNING, ha, "Unable to initialize " in qla2x00_alloc_fw_dump()
810 dma_free_coherent(&ha->pdev->dev, FCE_SIZE, tc, in qla2x00_alloc_fw_dump()
812 ha->flags.fce_enabled = 0; in qla2x00_alloc_fw_dump()
816 qla_printk(KERN_INFO, ha, "Allocated (%d KB) for FCE...\n", in qla2x00_alloc_fw_dump()
820 ha->flags.fce_enabled = 1; in qla2x00_alloc_fw_dump()
821 ha->fce_dma = tc_dma; in qla2x00_alloc_fw_dump()
822 ha->fce = tc; in qla2x00_alloc_fw_dump()
825 tc = dma_alloc_coherent(&ha->pdev->dev, EFT_SIZE, &tc_dma, in qla2x00_alloc_fw_dump()
828 qla_printk(KERN_WARNING, ha, "Unable to allocate " in qla2x00_alloc_fw_dump()
836 qla_printk(KERN_WARNING, ha, "Unable to initialize " in qla2x00_alloc_fw_dump()
838 dma_free_coherent(&ha->pdev->dev, EFT_SIZE, tc, in qla2x00_alloc_fw_dump()
843 qla_printk(KERN_INFO, ha, "Allocated (%d KB) for EFT...\n", in qla2x00_alloc_fw_dump()
847 ha->eft_dma = tc_dma; in qla2x00_alloc_fw_dump()
848 ha->eft = tc; in qla2x00_alloc_fw_dump()
857 ha->chain_offset = dump_size; in qla2x00_alloc_fw_dump()
860 ha->fw_dump = vmalloc(dump_size); in qla2x00_alloc_fw_dump()
861 if (!ha->fw_dump) { in qla2x00_alloc_fw_dump()
862 qla_printk(KERN_WARNING, ha, "Unable to allocate (%d KB) for " in qla2x00_alloc_fw_dump()
865 if (ha->eft) { in qla2x00_alloc_fw_dump()
866 dma_free_coherent(&ha->pdev->dev, eft_size, ha->eft, in qla2x00_alloc_fw_dump()
867 ha->eft_dma); in qla2x00_alloc_fw_dump()
868 ha->eft = NULL; in qla2x00_alloc_fw_dump()
869 ha->eft_dma = 0; in qla2x00_alloc_fw_dump()
873 qla_printk(KERN_INFO, ha, "Allocated (%d KB) for firmware dump...\n", in qla2x00_alloc_fw_dump()
876 ha->fw_dump_len = dump_size; in qla2x00_alloc_fw_dump()
877 ha->fw_dump->signature[0] = 'Q'; in qla2x00_alloc_fw_dump()
878 ha->fw_dump->signature[1] = 'L'; in qla2x00_alloc_fw_dump()
879 ha->fw_dump->signature[2] = 'G'; in qla2x00_alloc_fw_dump()
880 ha->fw_dump->signature[3] = 'C'; in qla2x00_alloc_fw_dump()
881 ha->fw_dump->version = __constant_htonl(1); in qla2x00_alloc_fw_dump()
883 ha->fw_dump->fixed_size = htonl(fixed_size); in qla2x00_alloc_fw_dump()
884 ha->fw_dump->mem_size = htonl(mem_size); in qla2x00_alloc_fw_dump()
885 ha->fw_dump->req_q_size = htonl(req_q_size); in qla2x00_alloc_fw_dump()
886 ha->fw_dump->rsp_q_size = htonl(rsp_q_size); in qla2x00_alloc_fw_dump()
888 ha->fw_dump->eft_size = htonl(eft_size); in qla2x00_alloc_fw_dump()
889 ha->fw_dump->eft_addr_l = htonl(LSD(ha->eft_dma)); in qla2x00_alloc_fw_dump()
890 ha->fw_dump->eft_addr_h = htonl(MSD(ha->eft_dma)); in qla2x00_alloc_fw_dump()
892 ha->fw_dump->header_size = in qla2x00_alloc_fw_dump()
910 struct qla_hw_data *ha = vha->hw; in qla2x00_resize_request_q() local
911 struct req_que *req = ha->req_q_map[0]; in qla2x00_resize_request_q()
914 if (IS_QLA2100(ha) || IS_QLA2200(ha)) in qla2x00_resize_request_q()
919 &ha->max_npiv_vports); in qla2x00_resize_request_q()
929 request_ring = dma_alloc_coherent(&ha->pdev->dev, in qla2x00_resize_request_q()
936 qla_printk(KERN_INFO, ha, "Extended memory detected (%d KB)...\n", in qla2x00_resize_request_q()
937 (ha->fw_memory_size + 1) / 1024); in qla2x00_resize_request_q()
938 qla_printk(KERN_INFO, ha, "Resizing request queue depth " in qla2x00_resize_request_q()
942 dma_free_coherent(&ha->pdev->dev, in qla2x00_resize_request_q()
963 struct qla_hw_data *ha = vha->hw; in qla2x00_setup_chip() local
964 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_setup_chip()
967 if (!IS_FWI2_CAPABLE(ha) && !IS_QLA2100(ha) && !IS_QLA2200(ha)) { in qla2x00_setup_chip()
969 spin_lock_irqsave(&ha->hardware_lock, flags); in qla2x00_setup_chip()
972 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla2x00_setup_chip()
976 rval = ha->isp_ops->load_risc(vha, &srisc_address); in qla2x00_setup_chip()
989 if (rval == QLA_SUCCESS && ha->fw_major_version == 0) { in qla2x00_setup_chip()
991 &ha->fw_major_version, in qla2x00_setup_chip()
992 &ha->fw_minor_version, in qla2x00_setup_chip()
993 &ha->fw_subminor_version, in qla2x00_setup_chip()
994 &ha->fw_attributes, &ha->fw_memory_size, in qla2x00_setup_chip()
995 ha->mpi_version, &ha->mpi_capabilities); in qla2x00_setup_chip()
996 ha->flags.npiv_supported = 0; in qla2x00_setup_chip()
997 if (IS_QLA2XXX_MIDTYPE(ha) && in qla2x00_setup_chip()
998 (ha->fw_attributes & BIT_2)) { in qla2x00_setup_chip()
999 ha->flags.npiv_supported = 1; in qla2x00_setup_chip()
1000 if ((!ha->max_npiv_vports) || in qla2x00_setup_chip()
1001 ((ha->max_npiv_vports + 1) % in qla2x00_setup_chip()
1003 ha->max_npiv_vports = in qla2x00_setup_chip()
1018 if (!IS_FWI2_CAPABLE(ha) && !IS_QLA2100(ha) && !IS_QLA2200(ha)) { in qla2x00_setup_chip()
1020 spin_lock_irqsave(&ha->hardware_lock, flags); in qla2x00_setup_chip()
1021 if (IS_QLA2300(ha)) in qla2x00_setup_chip()
1028 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla2x00_setup_chip()
1072 struct qla_hw_data *ha = vha->hw; in qla2x00_update_fw_options() local
1074 memset(ha->fw_options, 0, sizeof(ha->fw_options)); in qla2x00_update_fw_options()
1075 qla2x00_get_fw_options(vha, ha->fw_options); in qla2x00_update_fw_options()
1077 if (IS_QLA2100(ha) || IS_QLA2200(ha)) in qla2x00_update_fw_options()
1083 DEBUG3(qla2x00_dump_buffer((uint8_t *)&ha->fw_seriallink_options, in qla2x00_update_fw_options()
1084 sizeof(ha->fw_seriallink_options))); in qla2x00_update_fw_options()
1086 ha->fw_options[1] &= ~FO1_SET_EMPHASIS_SWING; in qla2x00_update_fw_options()
1087 if (ha->fw_seriallink_options[3] & BIT_2) { in qla2x00_update_fw_options()
1088 ha->fw_options[1] |= FO1_SET_EMPHASIS_SWING; in qla2x00_update_fw_options()
1091 swing = ha->fw_seriallink_options[2] & (BIT_2 | BIT_1 | BIT_0); in qla2x00_update_fw_options()
1092 emphasis = (ha->fw_seriallink_options[2] & in qla2x00_update_fw_options()
1094 tx_sens = ha->fw_seriallink_options[0] & in qla2x00_update_fw_options()
1096 rx_sens = (ha->fw_seriallink_options[0] & in qla2x00_update_fw_options()
1098 ha->fw_options[10] = (emphasis << 14) | (swing << 8); in qla2x00_update_fw_options()
1099 if (IS_QLA2300(ha) || IS_QLA2312(ha) || IS_QLA6312(ha)) { in qla2x00_update_fw_options()
1102 ha->fw_options[10] |= (tx_sens << 4) | rx_sens; in qla2x00_update_fw_options()
1103 } else if (IS_QLA2322(ha) || IS_QLA6322(ha)) in qla2x00_update_fw_options()
1104 ha->fw_options[10] |= BIT_5 | in qla2x00_update_fw_options()
1109 swing = (ha->fw_seriallink_options[2] & in qla2x00_update_fw_options()
1111 emphasis = ha->fw_seriallink_options[3] & (BIT_1 | BIT_0); in qla2x00_update_fw_options()
1112 tx_sens = ha->fw_seriallink_options[1] & in qla2x00_update_fw_options()
1114 rx_sens = (ha->fw_seriallink_options[1] & in qla2x00_update_fw_options()
1116 ha->fw_options[11] = (emphasis << 14) | (swing << 8); in qla2x00_update_fw_options()
1117 if (IS_QLA2300(ha) || IS_QLA2312(ha) || IS_QLA6312(ha)) { in qla2x00_update_fw_options()
1120 ha->fw_options[11] |= (tx_sens << 4) | rx_sens; in qla2x00_update_fw_options()
1121 } else if (IS_QLA2322(ha) || IS_QLA6322(ha)) in qla2x00_update_fw_options()
1122 ha->fw_options[11] |= BIT_5 | in qla2x00_update_fw_options()
1129 ha->fw_options[3] |= BIT_13; in qla2x00_update_fw_options()
1132 if (ha->flags.enable_led_scheme) in qla2x00_update_fw_options()
1133 ha->fw_options[2] |= BIT_12; in qla2x00_update_fw_options()
1136 if (IS_QLA6312(ha)) in qla2x00_update_fw_options()
1137 ha->fw_options[2] |= BIT_13; in qla2x00_update_fw_options()
1140 qla2x00_set_fw_options(vha, ha->fw_options); in qla2x00_update_fw_options()
1147 struct qla_hw_data *ha = vha->hw; in qla24xx_update_fw_options() local
1150 if ((le16_to_cpu(ha->fw_seriallink_options24[0]) & BIT_0) == 0) in qla24xx_update_fw_options()
1154 le16_to_cpu(ha->fw_seriallink_options24[1]), in qla24xx_update_fw_options()
1155 le16_to_cpu(ha->fw_seriallink_options24[2]), in qla24xx_update_fw_options()
1156 le16_to_cpu(ha->fw_seriallink_options24[3])); in qla24xx_update_fw_options()
1158 qla_printk(KERN_WARNING, ha, in qla24xx_update_fw_options()
1166 struct qla_hw_data *ha = vha->hw; in qla2x00_config_rings() local
1167 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_config_rings()
1168 struct req_que *req = ha->req_q_map[0]; in qla2x00_config_rings()
1169 struct rsp_que *rsp = ha->rsp_q_map[0]; in qla2x00_config_rings()
1172 ha->init_cb->request_q_outpointer = __constant_cpu_to_le16(0); in qla2x00_config_rings()
1173 ha->init_cb->response_q_inpointer = __constant_cpu_to_le16(0); in qla2x00_config_rings()
1174 ha->init_cb->request_q_length = cpu_to_le16(req->length); in qla2x00_config_rings()
1175 ha->init_cb->response_q_length = cpu_to_le16(rsp->length); in qla2x00_config_rings()
1176 ha->init_cb->request_q_address[0] = cpu_to_le32(LSD(req->dma)); in qla2x00_config_rings()
1177 ha->init_cb->request_q_address[1] = cpu_to_le32(MSD(req->dma)); in qla2x00_config_rings()
1178 ha->init_cb->response_q_address[0] = cpu_to_le32(LSD(rsp->dma)); in qla2x00_config_rings()
1179 ha->init_cb->response_q_address[1] = cpu_to_le32(MSD(rsp->dma)); in qla2x00_config_rings()
1181 WRT_REG_WORD(ISP_REQ_Q_IN(ha, reg), 0); in qla2x00_config_rings()
1182 WRT_REG_WORD(ISP_REQ_Q_OUT(ha, reg), 0); in qla2x00_config_rings()
1183 WRT_REG_WORD(ISP_RSP_Q_IN(ha, reg), 0); in qla2x00_config_rings()
1184 WRT_REG_WORD(ISP_RSP_Q_OUT(ha, reg), 0); in qla2x00_config_rings()
1185 RD_REG_WORD(ISP_RSP_Q_OUT(ha, reg)); /* PCI Posting. */ in qla2x00_config_rings()
1191 struct qla_hw_data *ha = vha->hw; in qla24xx_config_rings() local
1192 device_reg_t __iomem *reg = ISP_QUE_REG(ha, 0); in qla24xx_config_rings()
1193 struct device_reg_2xxx __iomem *ioreg = &ha->iobase->isp; in qla24xx_config_rings()
1197 struct req_que *req = ha->req_q_map[0]; in qla24xx_config_rings()
1198 struct rsp_que *rsp = ha->rsp_q_map[0]; in qla24xx_config_rings()
1201 icb = (struct init_cb_24xx *)ha->init_cb; in qla24xx_config_rings()
1211 if (ha->mqenable) { in qla24xx_config_rings()
1214 if (ha->flags.msix_enabled) { in qla24xx_config_rings()
1215 msix = &ha->msix_entries[1]; in qla24xx_config_rings()
1261 struct qla_hw_data *ha = vha->hw; in qla2x00_init_rings() local
1266 (struct mid_init_cb_24xx *) ha->init_cb; in qla2x00_init_rings()
1268 spin_lock_irqsave(&ha->hardware_lock, flags); in qla2x00_init_rings()
1271 for (que = 0; que < ha->max_queues; que++) { in qla2x00_init_rings()
1272 req = ha->req_q_map[que]; in qla2x00_init_rings()
1286 for (que = 0; que < ha->max_queues; que++) { in qla2x00_init_rings()
1287 rsp = ha->rsp_q_map[que]; in qla2x00_init_rings()
1298 list_for_each_entry(vp, &ha->vp_list, list) { in qla2x00_init_rings()
1302 ha->isp_ops->config_rings(vha); in qla2x00_init_rings()
1304 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla2x00_init_rings()
1307 ha->isp_ops->update_fw_options(vha); in qla2x00_init_rings()
1311 if (ha->flags.npiv_supported) { in qla2x00_init_rings()
1312 if (ha->operating_mode == LOOP) in qla2x00_init_rings()
1313 ha->max_npiv_vports = MIN_MULTI_ID_FABRIC - 1; in qla2x00_init_rings()
1314 mid_init_cb->count = cpu_to_le16(ha->max_npiv_vports); in qla2x00_init_rings()
1320 rval = qla2x00_init_firmware(vha, ha->init_cb_size); in qla2x00_init_rings()
1346 struct qla_hw_data *ha = vha->hw; in qla2x00_fw_ready() local
1357 if ((wait_time = (ha->retry_count*ha->login_timeout) + 5) < min_wait) { in qla2x00_fw_ready()
1369 qla_printk(KERN_INFO, ha, "Waiting for LIP to complete...\n"); in qla2x00_fw_ready()
1380 if (IS_QLA84XX(ha) && state[0] != FSTATE_READY) { in qla2x00_fw_ready()
1406 qla2x00_get_retry_cnt(vha, &ha->retry_count, in qla2x00_fw_ready()
1407 &ha->login_timeout, &ha->r_a_tov); in qla2x00_fw_ready()
1421 qla_printk(KERN_INFO, ha, in qla2x00_fw_ready()
1479 struct qla_hw_data *ha = vha->hw; in qla2x00_configure_hba() local
1485 if (LOOP_TRANSITION(vha) || atomic_read(&ha->loop_down_timer) || in qla2x00_configure_hba()
1490 qla_printk(KERN_WARNING, ha, in qla2x00_configure_hba()
1498 qla_printk(KERN_INFO, ha, in qla2x00_configure_hba()
1506 ha->min_external_loopid = SNS_FIRST_LOOP_ID; in qla2x00_configure_hba()
1507 ha->operating_mode = LOOP; in qla2x00_configure_hba()
1508 ha->switch_cap = 0; in qla2x00_configure_hba()
1514 ha->current_topology = ISP_CFG_NL; in qla2x00_configure_hba()
1521 ha->switch_cap = sw_cap; in qla2x00_configure_hba()
1522 ha->current_topology = ISP_CFG_FL; in qla2x00_configure_hba()
1529 ha->operating_mode = P2P; in qla2x00_configure_hba()
1530 ha->current_topology = ISP_CFG_N; in qla2x00_configure_hba()
1537 ha->switch_cap = sw_cap; in qla2x00_configure_hba()
1538 ha->operating_mode = P2P; in qla2x00_configure_hba()
1539 ha->current_topology = ISP_CFG_F; in qla2x00_configure_hba()
1547 ha->current_topology = ISP_CFG_NL; in qla2x00_configure_hba()
1559 qla_printk(KERN_INFO, ha, in qla2x00_configure_hba()
1578 struct qla_hw_data *ha = vha->hw; in qla2x00_set_model_info() local
1581 strncpy(ha->model_number, model, len); in qla2x00_set_model_info()
1582 st = en = ha->model_number; in qla2x00_set_model_info()
1590 index = (ha->pdev->subsystem_device & 0xff); in qla2x00_set_model_info()
1591 if (ha->pdev->subsystem_vendor == PCI_VENDOR_ID_QLOGIC && in qla2x00_set_model_info()
1593 strncpy(ha->model_desc, in qla2x00_set_model_info()
1595 sizeof(ha->model_desc) - 1); in qla2x00_set_model_info()
1597 index = (ha->pdev->subsystem_device & 0xff); in qla2x00_set_model_info()
1598 if (ha->pdev->subsystem_vendor == PCI_VENDOR_ID_QLOGIC && in qla2x00_set_model_info()
1600 strcpy(ha->model_number, in qla2x00_set_model_info()
1602 strncpy(ha->model_desc, in qla2x00_set_model_info()
1604 sizeof(ha->model_desc) - 1); in qla2x00_set_model_info()
1606 strcpy(ha->model_number, def); in qla2x00_set_model_info()
1609 if (IS_FWI2_CAPABLE(ha)) in qla2x00_set_model_info()
1610 qla2xxx_get_vpd_field(vha, "\x82", ha->model_desc, in qla2x00_set_model_info()
1611 sizeof(ha->model_desc)); in qla2x00_set_model_info()
1620 struct qla_hw_data *ha = vha->hw; in qla2xxx_nvram_wwn_from_ofw() local
1621 struct pci_dev *pdev = ha->pdev; in qla2xxx_nvram_wwn_from_ofw()
1656 struct qla_hw_data *ha = vha->hw; in qla2x00_nvram_config() local
1657 init_cb_t *icb = ha->init_cb; in qla2x00_nvram_config()
1658 nvram_t *nv = ha->nvram; in qla2x00_nvram_config()
1659 uint8_t *ptr = ha->nvram; in qla2x00_nvram_config()
1660 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_nvram_config()
1665 ha->nvram_size = sizeof(nvram_t); in qla2x00_nvram_config()
1666 ha->nvram_base = 0; in qla2x00_nvram_config()
1667 if (!IS_QLA2100(ha) && !IS_QLA2200(ha) && !IS_QLA2300(ha)) in qla2x00_nvram_config()
1669 ha->nvram_base = 0x80; in qla2x00_nvram_config()
1672 ha->isp_ops->read_nvram(vha, ptr, ha->nvram_base, ha->nvram_size); in qla2x00_nvram_config()
1673 for (cnt = 0, chksum = 0; cnt < ha->nvram_size; cnt++) in qla2x00_nvram_config()
1677 DEBUG5(qla2x00_dump_buffer((uint8_t *)nv, ha->nvram_size)); in qla2x00_nvram_config()
1683 qla_printk(KERN_WARNING, ha, "Inconsistent NVRAM detected: " in qla2x00_nvram_config()
1686 qla_printk(KERN_WARNING, ha, "Falling back to functioning (yet " in qla2x00_nvram_config()
1692 memset(nv, 0, ha->nvram_size); in qla2x00_nvram_config()
1695 if (IS_QLA23XX(ha)) { in qla2x00_nvram_config()
1702 } else if (IS_QLA2200(ha)) { in qla2x00_nvram_config()
1708 } else if (IS_QLA2100(ha)) { in qla2x00_nvram_config()
1748 if (IS_QLA23XX(ha)) in qla2x00_nvram_config()
1754 memset(icb, 0, ha->init_cb_size); in qla2x00_nvram_config()
1764 if (IS_QLA23XX(ha)) { in qla2x00_nvram_config()
1769 if (IS_QLA2300(ha)) { in qla2x00_nvram_config()
1770 if (ha->fb_rev == FPM_2310) { in qla2x00_nvram_config()
1771 strcpy(ha->model_number, "QLA2310"); in qla2x00_nvram_config()
1773 strcpy(ha->model_number, "QLA2300"); in qla2x00_nvram_config()
1779 } else if (IS_QLA2200(ha)) { in qla2x00_nvram_config()
1791 strcpy(ha->model_number, "QLA22xx"); in qla2x00_nvram_config()
1793 strcpy(ha->model_number, "QLA2100"); in qla2x00_nvram_config()
1832 ha->flags.disable_risc_code_load = ((nv->host_p[0] & BIT_4) ? 1 : 0); in qla2x00_nvram_config()
1834 if (!IS_QLA2100(ha) && !IS_QLA2200(ha)) in qla2x00_nvram_config()
1835 ha->flags.disable_risc_code_load = 0; in qla2x00_nvram_config()
1836 ha->flags.enable_lip_reset = ((nv->host_p[1] & BIT_1) ? 1 : 0); in qla2x00_nvram_config()
1837 ha->flags.enable_lip_full_login = ((nv->host_p[1] & BIT_2) ? 1 : 0); in qla2x00_nvram_config()
1838 ha->flags.enable_target_reset = ((nv->host_p[1] & BIT_3) ? 1 : 0); in qla2x00_nvram_config()
1839 ha->flags.enable_led_scheme = (nv->special_options[1] & BIT_4) ? 1 : 0; in qla2x00_nvram_config()
1840 ha->flags.disable_serdes = 0; in qla2x00_nvram_config()
1842 ha->operating_mode = in qla2x00_nvram_config()
1845 memcpy(ha->fw_seriallink_options, nv->seriallink_options, in qla2x00_nvram_config()
1846 sizeof(ha->fw_seriallink_options)); in qla2x00_nvram_config()
1849 ha->serial0 = icb->port_name[5]; in qla2x00_nvram_config()
1850 ha->serial1 = icb->port_name[6]; in qla2x00_nvram_config()
1851 ha->serial2 = icb->port_name[7]; in qla2x00_nvram_config()
1857 ha->retry_count = nv->retry_count; in qla2x00_nvram_config()
1864 ha->login_timeout = nv->login_timeout; in qla2x00_nvram_config()
1868 ha->r_a_tov = 100; in qla2x00_nvram_config()
1870 ha->loop_reset_delay = nv->reset_delay; in qla2x00_nvram_config()
1883 ha->loop_down_abort_time = in qla2x00_nvram_config()
1886 ha->link_down_timeout = nv->link_down_timeout; in qla2x00_nvram_config()
1887 ha->loop_down_abort_time = in qla2x00_nvram_config()
1888 (LOOP_DOWN_TIME - ha->link_down_timeout); in qla2x00_nvram_config()
1894 ha->port_down_retry_count = nv->port_down_retry_count; in qla2x00_nvram_config()
1896 ha->port_down_retry_count = qlport_down_retry; in qla2x00_nvram_config()
1898 ha->login_retry_count = nv->retry_count; in qla2x00_nvram_config()
1899 if (ha->port_down_retry_count == nv->port_down_retry_count && in qla2x00_nvram_config()
1900 ha->port_down_retry_count > 3) in qla2x00_nvram_config()
1901 ha->login_retry_count = ha->port_down_retry_count; in qla2x00_nvram_config()
1902 else if (ha->port_down_retry_count > (int)ha->login_retry_count) in qla2x00_nvram_config()
1903 ha->login_retry_count = ha->port_down_retry_count; in qla2x00_nvram_config()
1905 ha->login_retry_count = ql2xloginretrycount; in qla2x00_nvram_config()
1912 if (IS_QLA2100(ha) || IS_QLA2200(ha)) { in qla2x00_nvram_config()
1925 ha->zio_mode = icb->add_firmware_options[0] & in qla2x00_nvram_config()
1927 ha->zio_timer = icb->interrupt_delay_timer ? in qla2x00_nvram_config()
1933 if (ha->zio_mode != QLA_ZIO_DISABLED) { in qla2x00_nvram_config()
1934 ha->zio_mode = QLA_ZIO_MODE_6; in qla2x00_nvram_config()
1937 "delay (%d us).\n", vha->host_no, ha->zio_mode, in qla2x00_nvram_config()
1938 ha->zio_timer * 100)); in qla2x00_nvram_config()
1939 qla_printk(KERN_INFO, ha, in qla2x00_nvram_config()
1941 ha->zio_mode, ha->zio_timer * 100); in qla2x00_nvram_config()
1943 icb->add_firmware_options[0] |= (uint8_t)ha->zio_mode; in qla2x00_nvram_config()
1944 icb->interrupt_delay_timer = (uint8_t)ha->zio_timer; in qla2x00_nvram_config()
2015 struct qla_hw_data *ha = vha->hw; in qla2x00_configure_loop() local
2040 if (ha->current_topology == ISP_CFG_FL && in qla2x00_configure_loop()
2046 } else if (ha->current_topology == ISP_CFG_F && in qla2x00_configure_loop()
2053 } else if (ha->current_topology == ISP_CFG_N) { in qla2x00_configure_loop()
2132 struct qla_hw_data *ha = vha->hw; in qla2x00_configure_local_loop() local
2142 memset(ha->gid_list, 0, GID_LIST_SIZE); in qla2x00_configure_local_loop()
2143 rval = qla2x00_get_id_list(vha, ha->gid_list, ha->gid_list_dma, in qla2x00_configure_local_loop()
2149 ha->host_no, entries)); in qla2x00_configure_local_loop()
2150 DEBUG3(qla2x00_dump_buffer((uint8_t *)ha->gid_list, in qla2x00_configure_local_loop()
2179 id_iter = (char *)ha->gid_list; in qla2x00_configure_local_loop()
2184 if (IS_QLA2100(ha) || IS_QLA2200(ha)) in qla2x00_configure_local_loop()
2190 id_iter += ha->gid_list_info_size; in qla2x00_configure_local_loop()
2263 fcport->fp_speed = ha->link_data_rate; in qla2x00_configure_local_loop()
2293 struct qla_hw_data *ha = vha->hw; in qla2x00_iidma_fcport() local
2295 if (!IS_IIDMA_CAPABLE(ha)) in qla2x00_iidma_fcport()
2299 fcport->fp_speed > ha->link_data_rate) in qla2x00_iidma_fcport()
2313 DEBUG2(qla_printk(KERN_INFO, ha, in qla2x00_iidma_fcport()
2329 struct qla_hw_data *ha = vha->hw; in qla2x00_reg_remote_port() local
2341 qla_printk(KERN_WARNING, ha, in qla2x00_reg_remote_port()
2377 struct qla_hw_data *ha = vha->hw; in qla2x00_update_fcport() local
2381 fcport->port_login_retry_count = ha->port_down_retry_count * in qla2x00_update_fcport()
2383 atomic_set(&fcport->port_down_timer, ha->port_down_retry_count * in qla2x00_update_fcport()
2414 struct qla_hw_data *ha = vha->hw; in qla2x00_configure_fabric() local
2415 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev); in qla2x00_configure_fabric()
2418 if (IS_FWI2_CAPABLE(ha)) in qla2x00_configure_fabric()
2445 if (IS_FWI2_CAPABLE(ha)) in qla2x00_configure_fabric()
2449 ha->isp_ops->fabric_login(vha, loop_id, 0xff, 0xff, in qla2x00_configure_fabric()
2452 DEBUG2(qla_printk(KERN_INFO, ha, in qla2x00_configure_fabric()
2503 ha->isp_ops->fabric_logout(vha, in qla2x00_configure_fabric()
2514 next_loopid = ha->min_external_loopid; in qla2x00_configure_fabric()
2615 struct qla_hw_data *ha = vha->hw; in qla2x00_find_all_fabric_devs() local
2616 struct scsi_qla_host *vp, *base_vha = pci_get_drvdata(ha->pdev); in qla2x00_find_all_fabric_devs()
2656 loop_id = ha->min_external_loopid; in qla2x00_find_all_fabric_devs()
2657 for (; loop_id <= ha->max_loop_id; loop_id++) { in qla2x00_find_all_fabric_devs()
2686 qla_printk(KERN_WARNING, ha, in qla2x00_find_all_fabric_devs()
2716 if (ha->num_vhosts) { in qla2x00_find_all_fabric_devs()
2717 list_for_each_entry_safe(vp, tvp, &ha->vp_list, list) { in qla2x00_find_all_fabric_devs()
2729 (vha->d_id.b24 & 0xffff00)) && ha->current_topology == in qla2x00_find_all_fabric_devs()
2783 ha->isp_ops->fabric_logout(vha, fcport->loop_id, in qla2x00_find_all_fabric_devs()
2838 struct qla_hw_data *ha = vha->hw; in qla2x00_find_new_loop_id() local
2857 if (dev->loop_id > ha->max_loop_id) { in qla2x00_find_new_loop_id()
2859 dev->loop_id = ha->min_external_loopid; in qla2x00_find_new_loop_id()
2865 list_for_each_entry_safe(vp, tvp, &ha->vp_list, list) { in qla2x00_find_new_loop_id()
3025 struct qla_hw_data *ha = vha->hw; in qla2x00_fabric_dev_login() local
3038 ha->isp_ops->fabric_logout(vha, fcport->loop_id, in qla2x00_fabric_dev_login()
3072 struct qla_hw_data *ha = vha->hw; in qla2x00_fabric_login() local
3084 ha->isp_ops->fabric_login(vha, fcport->loop_id, in qla2x00_fabric_login()
3152 ha->isp_ops->fabric_logout(vha, fcport->loop_id, in qla2x00_fabric_login()
3170 ha->isp_ops->fabric_logout(vha, fcport->loop_id, in qla2x00_fabric_login()
3232 struct qla_hw_data *ha = vha->hw; in qla2x00_loop_resync() local
3233 struct req_que *req = ha->req_q_map[vha->req_ques[0]]; in qla2x00_loop_resync()
3298 struct qla_hw_data *ha = vha->hw; in qla2x00_abort_isp() local
3301 struct req_que *req = ha->req_q_map[0]; in qla2x00_abort_isp()
3306 ha->qla_stats.total_isp_aborts++; in qla2x00_abort_isp()
3308 qla_printk(KERN_INFO, ha, in qla2x00_abort_isp()
3309 "Performing ISP error recovery - ha= %p.\n", ha); in qla2x00_abort_isp()
3310 ha->isp_ops->reset_chip(vha); in qla2x00_abort_isp()
3316 list_for_each_entry_safe(vp, tvp, &ha->vp_list, list) in qla2x00_abort_isp()
3327 ha->isp_ops->get_flash_version(vha, req->ring); in qla2x00_abort_isp()
3329 ha->isp_ops->nvram_config(vha); in qla2x00_abort_isp()
3344 ha->isp_ops->enable_intrs(ha); in qla2x00_abort_isp()
3346 ha->isp_abort_cnt = 0; in qla2x00_abort_isp()
3349 if (ha->fce) { in qla2x00_abort_isp()
3350 ha->flags.fce_enabled = 1; in qla2x00_abort_isp()
3351 memset(ha->fce, 0, in qla2x00_abort_isp()
3352 fce_calc_size(ha->fce_bufs)); in qla2x00_abort_isp()
3354 ha->fce_dma, ha->fce_bufs, ha->fce_mb, in qla2x00_abort_isp()
3355 &ha->fce_bufs); in qla2x00_abort_isp()
3357 qla_printk(KERN_WARNING, ha, in qla2x00_abort_isp()
3360 ha->flags.fce_enabled = 0; in qla2x00_abort_isp()
3364 if (ha->eft) { in qla2x00_abort_isp()
3365 memset(ha->eft, 0, EFT_SIZE); in qla2x00_abort_isp()
3367 ha->eft_dma, EFT_NUM_BUFFERS); in qla2x00_abort_isp()
3369 qla_printk(KERN_WARNING, ha, in qla2x00_abort_isp()
3377 if (ha->isp_abort_cnt == 0) { in qla2x00_abort_isp()
3378 qla_printk(KERN_WARNING, ha, in qla2x00_abort_isp()
3385 ha->isp_ops->reset_adapter(vha); in qla2x00_abort_isp()
3391 ha->isp_abort_cnt--; in qla2x00_abort_isp()
3394 vha->host_no, ha->isp_abort_cnt)); in qla2x00_abort_isp()
3398 ha->isp_abort_cnt = MAX_RETRIES_OF_ISP_ABORT; in qla2x00_abort_isp()
3401 vha->host_no, ha->isp_abort_cnt)); in qla2x00_abort_isp()
3413 list_for_each_entry_safe(vp, tvp, &ha->vp_list, list) { in qla2x00_abort_isp()
3418 qla_printk(KERN_INFO, ha, in qla2x00_abort_isp()
3440 struct qla_hw_data *ha = vha->hw; in qla2x00_restart_isp() local
3441 struct req_que *req = ha->req_q_map[0]; in qla2x00_restart_isp()
3442 struct rsp_que *rsp = ha->rsp_q_map[0]; in qla2x00_restart_isp()
3447 status = ha->isp_ops->chip_diag(vha); in qla2x00_restart_isp()
3455 qla25xx_init_queues(ha); in qla2x00_restart_isp()
3490 qla25xx_init_queues(struct qla_hw_data *ha) in qla25xx_init_queues() argument
3494 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev); in qla25xx_init_queues()
3498 for (i = 1; i < ha->max_queues; i++) { in qla25xx_init_queues()
3499 rsp = ha->rsp_q_map[i]; in qla25xx_init_queues()
3512 req = ha->req_q_map[i]; in qla25xx_init_queues()
3541 struct qla_hw_data *ha = vha->hw; in qla2x00_reset_adapter() local
3542 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_reset_adapter()
3545 ha->isp_ops->disable_intrs(ha); in qla2x00_reset_adapter()
3547 spin_lock_irqsave(&ha->hardware_lock, flags); in qla2x00_reset_adapter()
3552 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla2x00_reset_adapter()
3559 struct qla_hw_data *ha = vha->hw; in qla24xx_reset_adapter() local
3560 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; in qla24xx_reset_adapter()
3563 ha->isp_ops->disable_intrs(ha); in qla24xx_reset_adapter()
3565 spin_lock_irqsave(&ha->hardware_lock, flags); in qla24xx_reset_adapter()
3570 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla24xx_reset_adapter()
3572 if (IS_NOPOLLING_TYPE(ha)) in qla24xx_reset_adapter()
3573 ha->isp_ops->enable_intrs(ha); in qla24xx_reset_adapter()
3583 struct qla_hw_data *ha = vha->hw; in qla24xx_nvram_wwn_from_ofw() local
3584 struct pci_dev *pdev = ha->pdev; in qla24xx_nvram_wwn_from_ofw()
3609 struct qla_hw_data *ha = vha->hw; in qla24xx_nvram_config() local
3612 icb = (struct init_cb_24xx *)ha->init_cb; in qla24xx_nvram_config()
3613 nv = ha->nvram; in qla24xx_nvram_config()
3616 ha->nvram_size = sizeof(struct nvram_24xx); in qla24xx_nvram_config()
3617 ha->nvram_base = FA_NVRAM_FUNC0_ADDR; in qla24xx_nvram_config()
3618 ha->vpd_size = FA_NVRAM_VPD_SIZE; in qla24xx_nvram_config()
3619 ha->vpd_base = FA_NVRAM_VPD0_ADDR; in qla24xx_nvram_config()
3620 if (PCI_FUNC(ha->pdev->devfn)) { in qla24xx_nvram_config()
3621 ha->nvram_base = FA_NVRAM_FUNC1_ADDR; in qla24xx_nvram_config()
3622 ha->vpd_base = FA_NVRAM_VPD1_ADDR; in qla24xx_nvram_config()
3626 ha->vpd = ha->nvram + VPD_OFFSET; in qla24xx_nvram_config()
3627 ha->isp_ops->read_nvram(vha, (uint8_t *)ha->vpd, in qla24xx_nvram_config()
3628 ha->nvram_base - FA_NVRAM_FUNC0_ADDR, FA_NVRAM_VPD_SIZE * 4); in qla24xx_nvram_config()
3632 ha->isp_ops->read_nvram(vha, (uint8_t *)dptr, ha->nvram_base, in qla24xx_nvram_config()
3633 ha->nvram_size); in qla24xx_nvram_config()
3634 for (cnt = 0, chksum = 0; cnt < ha->nvram_size >> 2; cnt++) in qla24xx_nvram_config()
3637 DEBUG5(printk("scsi(%ld): Contents of NVRAM\n", ha->host_no)); in qla24xx_nvram_config()
3638 DEBUG5(qla2x00_dump_buffer((uint8_t *)nv, ha->nvram_size)); in qla24xx_nvram_config()
3645 qla_printk(KERN_WARNING, ha, "Inconsistent NVRAM detected: " in qla24xx_nvram_config()
3648 qla_printk(KERN_WARNING, ha, "Falling back to functioning (yet " in qla24xx_nvram_config()
3654 memset(nv, 0, ha->nvram_size); in qla24xx_nvram_config()
3662 nv->port_name[1] = 0x00 + PCI_FUNC(ha->pdev->devfn); in qla24xx_nvram_config()
3697 memset(icb, 0, ha->init_cb_size); in qla24xx_nvram_config()
3740 ha->flags.disable_risc_code_load = 0; in qla24xx_nvram_config()
3741 ha->flags.enable_lip_reset = 0; in qla24xx_nvram_config()
3742 ha->flags.enable_lip_full_login = in qla24xx_nvram_config()
3744 ha->flags.enable_target_reset = in qla24xx_nvram_config()
3746 ha->flags.enable_led_scheme = 0; in qla24xx_nvram_config()
3747 ha->flags.disable_serdes = le32_to_cpu(nv->host_p) & BIT_5 ? 1: 0; in qla24xx_nvram_config()
3749 ha->operating_mode = (le32_to_cpu(icb->firmware_options_2) & in qla24xx_nvram_config()
3752 memcpy(ha->fw_seriallink_options24, nv->seriallink_options, in qla24xx_nvram_config()
3753 sizeof(ha->fw_seriallink_options24)); in qla24xx_nvram_config()
3756 ha->serial0 = icb->port_name[5]; in qla24xx_nvram_config()
3757 ha->serial1 = icb->port_name[6]; in qla24xx_nvram_config()
3758 ha->serial2 = icb->port_name[7]; in qla24xx_nvram_config()
3764 ha->retry_count = le16_to_cpu(nv->login_retry_count); in qla24xx_nvram_config()
3771 ha->login_timeout = le16_to_cpu(nv->login_timeout); in qla24xx_nvram_config()
3775 ha->r_a_tov = 100; in qla24xx_nvram_config()
3777 ha->loop_reset_delay = nv->reset_delay; in qla24xx_nvram_config()
3790 ha->loop_down_abort_time = in qla24xx_nvram_config()
3793 ha->link_down_timeout = le16_to_cpu(nv->link_down_timeout); in qla24xx_nvram_config()
3794 ha->loop_down_abort_time = in qla24xx_nvram_config()
3795 (LOOP_DOWN_TIME - ha->link_down_timeout); in qla24xx_nvram_config()
3799 ha->port_down_retry_count = le16_to_cpu(nv->port_down_retry_count); in qla24xx_nvram_config()
3801 ha->port_down_retry_count = qlport_down_retry; in qla24xx_nvram_config()
3804 ha->login_retry_count = le16_to_cpu(nv->login_retry_count); in qla24xx_nvram_config()
3805 if (ha->port_down_retry_count == in qla24xx_nvram_config()
3807 ha->port_down_retry_count > 3) in qla24xx_nvram_config()
3808 ha->login_retry_count = ha->port_down_retry_count; in qla24xx_nvram_config()
3809 else if (ha->port_down_retry_count > (int)ha->login_retry_count) in qla24xx_nvram_config()
3810 ha->login_retry_count = ha->port_down_retry_count; in qla24xx_nvram_config()
3812 ha->login_retry_count = ql2xloginretrycount; in qla24xx_nvram_config()
3816 ha->zio_mode = le32_to_cpu(icb->firmware_options_2) & in qla24xx_nvram_config()
3818 ha->zio_timer = le16_to_cpu(icb->interrupt_delay_timer) ? in qla24xx_nvram_config()
3824 if (ha->zio_mode != QLA_ZIO_DISABLED) { in qla24xx_nvram_config()
3825 ha->zio_mode = QLA_ZIO_MODE_6; in qla24xx_nvram_config()
3828 "(%d us).\n", vha->host_no, ha->zio_mode, in qla24xx_nvram_config()
3829 ha->zio_timer * 100)); in qla24xx_nvram_config()
3830 qla_printk(KERN_INFO, ha, in qla24xx_nvram_config()
3832 ha->zio_mode, ha->zio_timer * 100); in qla24xx_nvram_config()
3835 (uint32_t)ha->zio_mode); in qla24xx_nvram_config()
3836 icb->interrupt_delay_timer = cpu_to_le16(ha->zio_timer); in qla24xx_nvram_config()
3857 struct qla_hw_data *ha = vha->hw; in qla24xx_load_risc_flash() local
3858 struct req_que *req = ha->req_q_map[0]; in qla24xx_load_risc_flash()
3860 qla_printk(KERN_INFO, ha, in qla24xx_load_risc_flash()
3861 "FW: Loading from flash (%x)...\n", ha->flt_region_fw); in qla24xx_load_risc_flash()
3866 faddr = ha->flt_region_fw; in qla24xx_load_risc_flash()
3878 qla_printk(KERN_WARNING, ha, in qla24xx_load_risc_flash()
3880 qla_printk(KERN_WARNING, ha, in qla24xx_load_risc_flash()
3897 dlen = (uint32_t)(ha->fw_transfer_size >> 2); in qla24xx_load_risc_flash()
3915 qla_printk(KERN_WARNING, ha, in qla24xx_load_risc_flash()
3944 struct qla_hw_data *ha = vha->hw; in qla2x00_load_risc() local
3945 struct req_que *req = ha->req_q_map[0]; in qla2x00_load_risc()
3950 qla_printk(KERN_ERR, ha, "Firmware image unavailable.\n"); in qla2x00_load_risc()
3951 qla_printk(KERN_ERR, ha, "Firmware images can be retrieved " in qla2x00_load_risc()
3965 qla_printk(KERN_WARNING, ha, in qla2x00_load_risc()
3975 qla_printk(KERN_WARNING, ha, in qla2x00_load_risc()
3977 qla_printk(KERN_WARNING, ha, in qla2x00_load_risc()
3992 qla_printk(KERN_WARNING, ha, in qla2x00_load_risc()
4000 wlen = (uint16_t)(ha->fw_transfer_size >> 1); in qla2x00_load_risc()
4017 qla_printk(KERN_WARNING, ha, in qla2x00_load_risc()
4049 struct qla_hw_data *ha = vha->hw; in qla24xx_load_risc_blob() local
4050 struct req_que *req = ha->req_q_map[0]; in qla24xx_load_risc_blob()
4055 qla_printk(KERN_ERR, ha, "Firmware image unavailable.\n"); in qla24xx_load_risc_blob()
4056 qla_printk(KERN_ERR, ha, "Firmware images can be retrieved " in qla24xx_load_risc_blob()
4062 qla_printk(KERN_INFO, ha, in qla24xx_load_risc_blob()
4075 qla_printk(KERN_WARNING, ha, in qla24xx_load_risc_blob()
4086 qla_printk(KERN_WARNING, ha, in qla24xx_load_risc_blob()
4088 qla_printk(KERN_WARNING, ha, in qla24xx_load_risc_blob()
4102 qla_printk(KERN_WARNING, ha, in qla24xx_load_risc_blob()
4111 dlen = (uint32_t)(ha->fw_transfer_size >> 2); in qla24xx_load_risc_blob()
4128 qla_printk(KERN_WARNING, ha, in qla24xx_load_risc_blob()
4187 struct qla_hw_data *ha = vha->hw; in qla2x00_try_to_stop_firmware() local
4189 if (!IS_FWI2_CAPABLE(ha)) in qla2x00_try_to_stop_firmware()
4191 if (!ha->fw_major_version) in qla2x00_try_to_stop_firmware()
4197 ha->isp_ops->reset_chip(vha); in qla2x00_try_to_stop_firmware()
4198 if (ha->isp_ops->chip_diag(vha) != QLA_SUCCESS) in qla2x00_try_to_stop_firmware()
4202 qla_printk(KERN_INFO, ha, in qla2x00_try_to_stop_firmware()
4213 struct qla_hw_data *ha = vha->hw; in qla24xx_configure_vhba() local
4214 struct scsi_qla_host *base_vha = pci_get_drvdata(ha->pdev); in qla24xx_configure_vhba()
4215 struct req_que *req = ha->req_q_map[vha->req_ques[0]]; in qla24xx_configure_vhba()
4230 ha->isp_ops->fabric_login(vha, NPH_SNS, 0xff, 0xff, 0xfc, mb, BIT_1); in qla24xx_configure_vhba()
4232 DEBUG15(qla_printk(KERN_INFO, ha, in qla24xx_configure_vhba()
4257 struct qla_hw_data *ha = vha->hw; in qla84xx_get_chip() local
4263 if (cs84xx->bus == ha->pdev->bus) { in qla84xx_get_chip()
4276 cs84xx->bus = ha->pdev->bus; in qla84xx_get_chip()
4299 struct qla_hw_data *ha = vha->hw; in qla84xx_put_chip() local
4300 if (ha->cs84xx) in qla84xx_put_chip()
4301 kref_put(&ha->cs84xx->kref, __qla84xx_chip_release); in qla84xx_put_chip()
4309 struct qla_hw_data *ha = vha->hw; in qla84xx_init_chip() local
4311 mutex_lock(&ha->cs84xx->fw_update_mutex); in qla84xx_init_chip()
4315 mutex_unlock(&ha->cs84xx->fw_update_mutex); in qla84xx_init_chip()
4333 struct qla_hw_data *ha = vha->hw; in qla81xx_nvram_config() local
4336 icb = (struct init_cb_81xx *)ha->init_cb; in qla81xx_nvram_config()
4337 nv = ha->nvram; in qla81xx_nvram_config()
4340 ha->nvram_size = sizeof(struct nvram_81xx); in qla81xx_nvram_config()
4341 ha->nvram_base = FA_NVRAM_FUNC0_ADDR; in qla81xx_nvram_config()
4342 ha->vpd_size = FA_NVRAM_VPD_SIZE; in qla81xx_nvram_config()
4343 ha->vpd_base = FA_NVRAM_VPD0_ADDR; in qla81xx_nvram_config()
4344 if (PCI_FUNC(ha->pdev->devfn) & 1) { in qla81xx_nvram_config()
4345 ha->nvram_base = FA_NVRAM_FUNC1_ADDR; in qla81xx_nvram_config()
4346 ha->vpd_base = FA_NVRAM_VPD1_ADDR; in qla81xx_nvram_config()
4350 ha->vpd = ha->nvram + VPD_OFFSET; in qla81xx_nvram_config()
4351 ha->isp_ops->read_nvram(vha, (uint8_t *)ha->vpd, in qla81xx_nvram_config()
4352 ha->nvram_base - FA_NVRAM_FUNC0_ADDR, FA_NVRAM_VPD_SIZE * 4); in qla81xx_nvram_config()
4356 ha->isp_ops->read_nvram(vha, (uint8_t *)dptr, ha->nvram_base, in qla81xx_nvram_config()
4357 ha->nvram_size); in qla81xx_nvram_config()
4358 for (cnt = 0, chksum = 0; cnt < ha->nvram_size >> 2; cnt++) in qla81xx_nvram_config()
4361 DEBUG5(printk("scsi(%ld): Contents of NVRAM\n", ha->host_no)); in qla81xx_nvram_config()
4362 DEBUG5(qla2x00_dump_buffer((uint8_t *)nv, ha->nvram_size)); in qla81xx_nvram_config()
4369 qla_printk(KERN_WARNING, ha, "Inconsistent NVRAM detected: " in qla81xx_nvram_config()
4372 qla_printk(KERN_WARNING, ha, "Falling back to functioning (yet " in qla81xx_nvram_config()
4378 memset(nv, 0, ha->nvram_size); in qla81xx_nvram_config()
4385 nv->port_name[1] = 0x00 + PCI_FUNC(ha->pdev->devfn); in qla81xx_nvram_config()
4419 nv->enode_mac[5] = 0x06 + PCI_FUNC(ha->pdev->devfn); in qla81xx_nvram_config()
4452 icb->enode_mac[5] = 0x06 + PCI_FUNC(ha->pdev->devfn); in qla81xx_nvram_config()
4478 ha->flags.disable_risc_code_load = 0; in qla81xx_nvram_config()
4479 ha->flags.enable_lip_reset = 0; in qla81xx_nvram_config()
4480 ha->flags.enable_lip_full_login = in qla81xx_nvram_config()
4482 ha->flags.enable_target_reset = in qla81xx_nvram_config()
4484 ha->flags.enable_led_scheme = 0; in qla81xx_nvram_config()
4485 ha->flags.disable_serdes = le32_to_cpu(nv->host_p) & BIT_5 ? 1: 0; in qla81xx_nvram_config()
4487 ha->operating_mode = (le32_to_cpu(icb->firmware_options_2) & in qla81xx_nvram_config()
4491 ha->serial0 = icb->port_name[5]; in qla81xx_nvram_config()
4492 ha->serial1 = icb->port_name[6]; in qla81xx_nvram_config()
4493 ha->serial2 = icb->port_name[7]; in qla81xx_nvram_config()
4499 ha->retry_count = le16_to_cpu(nv->login_retry_count); in qla81xx_nvram_config()
4506 ha->login_timeout = le16_to_cpu(nv->login_timeout); in qla81xx_nvram_config()
4510 ha->r_a_tov = 100; in qla81xx_nvram_config()
4512 ha->loop_reset_delay = nv->reset_delay; in qla81xx_nvram_config()
4525 ha->loop_down_abort_time = in qla81xx_nvram_config()
4528 ha->link_down_timeout = le16_to_cpu(nv->link_down_timeout); in qla81xx_nvram_config()
4529 ha->loop_down_abort_time = in qla81xx_nvram_config()
4530 (LOOP_DOWN_TIME - ha->link_down_timeout); in qla81xx_nvram_config()
4534 ha->port_down_retry_count = le16_to_cpu(nv->port_down_retry_count); in qla81xx_nvram_config()
4536 ha->port_down_retry_count = qlport_down_retry; in qla81xx_nvram_config()
4539 ha->login_retry_count = le16_to_cpu(nv->login_retry_count); in qla81xx_nvram_config()
4540 if (ha->port_down_retry_count == in qla81xx_nvram_config()
4542 ha->port_down_retry_count > 3) in qla81xx_nvram_config()
4543 ha->login_retry_count = ha->port_down_retry_count; in qla81xx_nvram_config()
4544 else if (ha->port_down_retry_count > (int)ha->login_retry_count) in qla81xx_nvram_config()
4545 ha->login_retry_count = ha->port_down_retry_count; in qla81xx_nvram_config()
4547 ha->login_retry_count = ql2xloginretrycount; in qla81xx_nvram_config()
4551 ha->zio_mode = le32_to_cpu(icb->firmware_options_2) & in qla81xx_nvram_config()
4553 ha->zio_timer = le16_to_cpu(icb->interrupt_delay_timer) ? in qla81xx_nvram_config()
4559 if (ha->zio_mode != QLA_ZIO_DISABLED) { in qla81xx_nvram_config()
4560 ha->zio_mode = QLA_ZIO_MODE_6; in qla81xx_nvram_config()
4563 "(%d us).\n", vha->host_no, ha->zio_mode, in qla81xx_nvram_config()
4564 ha->zio_timer * 100)); in qla81xx_nvram_config()
4565 qla_printk(KERN_INFO, ha, in qla81xx_nvram_config()
4567 ha->zio_mode, ha->zio_timer * 100); in qla81xx_nvram_config()
4570 (uint32_t)ha->zio_mode); in qla81xx_nvram_config()
4571 icb->interrupt_delay_timer = cpu_to_le16(ha->zio_timer); in qla81xx_nvram_config()
4583 qla81xx_update_fw_options(scsi_qla_host_t *ha) in qla81xx_update_fw_options() argument