Lines Matching refs:ha
20 qla8044_rd_reg(struct qla_hw_data *ha, ulong addr) in qla8044_rd_reg() argument
22 return readl((void __iomem *) (ha->nx_pcibase + addr)); in qla8044_rd_reg()
26 qla8044_wr_reg(struct qla_hw_data *ha, ulong addr, uint32_t val) in qla8044_wr_reg() argument
28 writel(val, (void __iomem *)((ha)->nx_pcibase + addr)); in qla8044_wr_reg()
35 struct qla_hw_data *ha = vha->hw; in qla8044_rd_direct() local
38 return qla8044_rd_reg(ha, qla8044_reg_tbl[crb_reg]); in qla8044_rd_direct()
48 struct qla_hw_data *ha = vha->hw; in qla8044_wr_direct() local
51 qla8044_wr_reg(ha, qla8044_reg_tbl[crb_reg], value); in qla8044_wr_direct()
59 struct qla_hw_data *ha = vha->hw; in qla8044_set_win_base() local
61 qla8044_wr_reg(ha, QLA8044_CRB_WIN_FUNC(ha->portnum), addr); in qla8044_set_win_base()
62 val = qla8044_rd_reg(ha, QLA8044_CRB_WIN_FUNC(ha->portnum)); in qla8044_set_win_base()
78 struct qla_hw_data *ha = vha->hw; in qla8044_rd_reg_indirect() local
82 *data = qla8044_rd_reg(ha, QLA8044_WILDCARD); in qla8044_rd_reg_indirect()
93 struct qla_hw_data *ha = vha->hw; in qla8044_wr_reg_indirect() local
97 qla8044_wr_reg(ha, QLA8044_WILDCARD, data); in qla8044_wr_reg_indirect()
245 struct qla_hw_data *ha = vha->hw; in qla8044_set_qsnt_ready() local
248 qsnt_state |= (1 << ha->portnum); in qla8044_set_qsnt_ready()
258 struct qla_hw_data *ha = vha->hw; in qla8044_clear_qsnt_ready() local
261 qsnt_state &= ~(1 << ha->portnum); in qla8044_clear_qsnt_ready()
297 struct qla_hw_data *ha = vha->hw; in qla8044_lock_recovery() local
299 lockid = qla8044_rd_reg(ha, QLA8044_DRV_LOCKRECOVERY); in qla8044_lock_recovery()
306 qla8044_wr_reg(ha, QLA8044_DRV_LOCKRECOVERY, in qla8044_lock_recovery()
307 (ha->portnum << in qla8044_lock_recovery()
312 lockid = qla8044_rd_reg(ha, QLA8044_DRV_LOCKRECOVERY); in qla8044_lock_recovery()
313 if ((lockid & IDC_LOCK_RECOVERY_OWNER_MASK) != (ha->portnum << in qla8044_lock_recovery()
318 , __func__, ha->portnum); in qla8044_lock_recovery()
321 qla8044_wr_reg(ha, QLA8044_DRV_LOCKRECOVERY, in qla8044_lock_recovery()
322 (ha->portnum << IDC_LOCK_RECOVERY_STATE_SHIFT_BITS) | in qla8044_lock_recovery()
326 qla8044_wr_reg(ha, QLA8044_DRV_LOCK_ID, 0xFF); in qla8044_lock_recovery()
327 qla8044_rd_reg(ha, QLA8044_DRV_UNLOCK); in qla8044_lock_recovery()
330 qla8044_wr_reg(ha, QLA8044_DRV_LOCKRECOVERY, 0); in qla8044_lock_recovery()
333 lock = qla8044_rd_reg(ha, QLA8044_DRV_LOCK); in qla8044_lock_recovery()
335 lockid = qla8044_rd_reg(ha, QLA8044_DRV_LOCK_ID); in qla8044_lock_recovery()
336 lockid = ((lockid + (1 << 8)) & ~0xFF) | ha->portnum; in qla8044_lock_recovery()
337 qla8044_wr_reg(ha, QLA8044_DRV_LOCK_ID, lockid); in qla8044_lock_recovery()
344 qla8044_idc_lock(struct qla_hw_data *ha) in qla8044_idc_lock() argument
348 scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev); in qla8044_idc_lock()
352 status = qla8044_rd_reg(ha, QLA8044_DRV_LOCK); in qla8044_idc_lock()
357 lock_id = qla8044_rd_reg(ha, QLA8044_DRV_LOCK_ID); in qla8044_idc_lock()
358 lock_id = ((lock_id + (1 << 8)) & ~0xFF) | ha->portnum; in qla8044_idc_lock()
359 qla8044_wr_reg(ha, QLA8044_DRV_LOCK_ID, lock_id); in qla8044_idc_lock()
364 first_owner = qla8044_rd_reg(ha, QLA8044_DRV_LOCK_ID); in qla8044_idc_lock()
368 tmo_owner = qla8044_rd_reg(ha, QLA8044_DRV_LOCK_ID); in qla8044_idc_lock()
374 __func__, ha->portnum, func_num, lock_cnt, in qla8044_idc_lock()
383 __func__, ha->portnum); in qla8044_idc_lock()
394 ha->portnum); in qla8044_idc_lock()
403 ha->portnum); in qla8044_idc_lock()
413 qla8044_idc_unlock(struct qla_hw_data *ha) in qla8044_idc_unlock() argument
416 scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev); in qla8044_idc_unlock()
418 id = qla8044_rd_reg(ha, QLA8044_DRV_LOCK_ID); in qla8044_idc_unlock()
420 if ((id & 0xFF) != ha->portnum) { in qla8044_idc_unlock()
423 __func__, ha->portnum, (id & 0xFF)); in qla8044_idc_unlock()
428 qla8044_wr_reg(ha, QLA8044_DRV_LOCK_ID, (id | 0xFF)); in qla8044_idc_unlock()
429 qla8044_rd_reg(ha, QLA8044_DRV_UNLOCK); in qla8044_idc_unlock()
440 struct qla_hw_data *ha = vha->hw; in qla8044_flash_lock() local
443 lock_status = qla8044_rd_reg(ha, QLA8044_FLASH_LOCK); in qla8044_flash_lock()
448 lock_owner = qla8044_rd_reg(ha, in qla8044_flash_lock()
452 __func__, ha->portnum, lock_owner); in qla8044_flash_lock()
458 qla8044_wr_reg(ha, QLA8044_FLASH_LOCK_ID, ha->portnum); in qla8044_flash_lock()
466 struct qla_hw_data *ha = vha->hw; in qla8044_flash_unlock() local
469 qla8044_wr_reg(ha, QLA8044_FLASH_LOCK_ID, 0xFF); in qla8044_flash_unlock()
470 ret_val = qla8044_rd_reg(ha, QLA8044_FLASH_UNLOCK); in qla8044_flash_unlock()
569 struct qla_hw_data *ha = vha->hw; in qla8044_need_reset() local
574 rval = drv_state & (1 << ha->portnum); in qla8044_need_reset()
576 if (ha->flags.eeh_busy && drv_active) in qla8044_need_reset()
1115 struct qla_hw_data *ha = vha->hw; in qla8044_ms_mem_write_128b() local
1122 write_lock_irqsave(&ha->hw_lock, flags); in qla8044_ms_mem_write_128b()
1195 write_unlock_irqrestore(&ha->hw_lock, flags); in qla8044_ms_mem_write_128b()
1208 struct qla_hw_data *ha = vha->hw; in qla8044_copy_bootloader() local
1211 dest = qla8044_rd_reg(ha, QLA8044_BOOTLOADER_ADDR); in qla8044_copy_bootloader()
1212 size = qla8044_rd_reg(ha, QLA8044_BOOTLOADER_SIZE); in qla8044_copy_bootloader()
1263 struct qla_hw_data *ha = vha->hw; in qla8044_restart() local
1287 qla8044_wr_reg(ha, QLA8044_FW_IMAGE_VALID, QLA8044_BOOT_FROM_FLASH); in qla8044_restart()
1308 struct qla_hw_data *ha = vha->hw; in qla8044_check_cmd_peg_status() local
1311 val = qla8044_rd_reg(ha, QLA8044_CMDPEG_STATE); in qla8044_check_cmd_peg_status()
1352 qla8044_clear_drv_active(struct qla_hw_data *ha) in qla8044_clear_drv_active() argument
1355 struct scsi_qla_host *vha = pci_get_drvdata(ha->pdev); in qla8044_clear_drv_active()
1358 drv_active &= ~(1 << (ha->portnum)); in qla8044_clear_drv_active()
1381 struct qla_hw_data *ha = vha->hw; in qla8044_device_bootstrap() local
1402 if (ha->flags.isp82xx_fw_hung) in qla8044_device_bootstrap()
1412 qla8044_idc_unlock(ha); in qla8044_device_bootstrap()
1414 qla8044_idc_lock(ha); in qla8044_device_bootstrap()
1419 qla8044_clear_drv_active(ha); in qla8044_device_bootstrap()
1427 idc_ctrl = qla8044_rd_reg(ha, QLA8044_IDC_DRV_CTRL); in qla8044_device_bootstrap()
1429 qla8044_wr_reg(ha, QLA8044_IDC_DRV_CTRL, in qla8044_device_bootstrap()
1431 ha->fw_dumped = 0; in qla8044_device_bootstrap()
1599 struct qla_hw_data *ha = vha->hw; in qla8044_set_idc_dontreset() local
1601 idc_ctrl = qla8044_rd_reg(ha, QLA8044_IDC_DRV_CTRL); in qla8044_set_idc_dontreset()
1605 qla8044_wr_reg(ha, QLA8044_IDC_DRV_CTRL, idc_ctrl); in qla8044_set_idc_dontreset()
1612 struct qla_hw_data *ha = vha->hw; in qla8044_set_rst_ready() local
1618 drv_state |= (1 << ha->portnum); in qla8044_set_rst_ready()
1637 struct qla_hw_data *ha = vha->hw; in qla8044_need_reset_handler() local
1643 qla8044_idc_unlock(ha); in qla8044_need_reset_handler()
1645 ha->isp_ops->get_flash_version(vha, vha->req->ring); in qla8044_need_reset_handler()
1646 ha->isp_ops->nvram_config(vha); in qla8044_need_reset_handler()
1647 qla8044_idc_lock(ha); in qla8044_need_reset_handler()
1664 reset_timeout = jiffies + (ha->fcoe_reset_timeout * HZ); in qla8044_need_reset_handler()
1670 __func__, ha->portnum, drv_state, drv_active); in qla8044_need_reset_handler()
1674 qla8044_idc_unlock(ha); in qla8044_need_reset_handler()
1676 qla8044_idc_lock(ha); in qla8044_need_reset_handler()
1691 __func__, vha->host_no, ha->portnum, in qla8044_need_reset_handler()
1701 if ((ha->flags.nic_core_reset_owner) && in qla8044_need_reset_handler()
1703 ha->flags.nic_core_reset_owner = 0; in qla8044_need_reset_handler()
1710 if (!(drv_active & (1 << ha->portnum))) { in qla8044_need_reset_handler()
1711 ha->flags.nic_core_reset_owner = 0; in qla8044_need_reset_handler()
1719 if (ha->flags.nic_core_reset_owner || in qla8044_need_reset_handler()
1721 ha->flags.nic_core_reset_owner = 0; in qla8044_need_reset_handler()
1730 struct qla_hw_data *ha = vha->hw; in qla8044_set_drv_active() local
1736 drv_active |= (1 << ha->portnum); in qla8044_set_drv_active()
1748 struct qla_hw_data *ha = vha->hw; in qla8044_check_drv_active() local
1751 if (drv_active & (1 << ha->portnum)) in qla8044_check_drv_active()
1761 struct qla_hw_data *ha = vha->hw; in qla8044_clear_idc_dontreset() local
1763 idc_ctrl = qla8044_rd_reg(ha, QLA8044_IDC_DRV_CTRL); in qla8044_clear_idc_dontreset()
1768 qla8044_wr_reg(ha, QLA8044_IDC_DRV_CTRL, idc_ctrl); in qla8044_clear_idc_dontreset()
1777 struct qla_hw_data *ha = vha->hw; in qla8044_set_idc_ver() local
1780 if (drv_active == (1 << ha->portnum)) { in qla8044_set_idc_ver()
1807 idc_ver = qla8044_rd_reg(ha, QLA8044_CRB_IDC_VER_MINOR); in qla8044_set_idc_ver()
1808 idc_ver &= ~(0x03 << (ha->portnum * 2)); in qla8044_set_idc_ver()
1809 idc_ver |= (QLA8044_IDC_VER_MIN_VALUE << (ha->portnum * 2)); in qla8044_set_idc_ver()
1810 qla8044_wr_reg(ha, QLA8044_CRB_IDC_VER_MINOR, idc_ver); in qla8044_set_idc_ver()
1821 struct qla_hw_data *ha = vha->hw; in qla8044_update_idc_reg() local
1826 qla8044_idc_lock(ha); in qla8044_update_idc_reg()
1834 if ((drv_active == (1 << ha->portnum)) && !ql2xdontresethba) in qla8044_update_idc_reg()
1839 qla8044_clear_drv_active(ha); in qla8044_update_idc_reg()
1840 qla8044_idc_unlock(ha); in qla8044_update_idc_reg()
1855 struct qla_hw_data *ha = vha->hw; in qla8044_need_qsnt_handler() local
1886 qla8044_idc_unlock(ha); in qla8044_need_qsnt_handler()
1888 qla8044_idc_lock(ha); in qla8044_need_qsnt_handler()
1920 struct qla_hw_data *ha = vha->hw; in qla8044_device_state_handler() local
1933 dev_init_timeout = jiffies + (ha->fcoe_dev_init_timeout * HZ); in qla8044_device_state_handler()
1935 qla8044_idc_lock(ha); in qla8044_device_state_handler()
1960 ha->flags.nic_core_reset_owner = 0; in qla8044_device_state_handler()
1966 qla8044_idc_unlock(ha); in qla8044_device_state_handler()
1968 qla8044_idc_lock(ha); in qla8044_device_state_handler()
1982 (ha->fcoe_reset_timeout * HZ); in qla8044_device_state_handler()
1988 qla8044_idc_unlock(ha); in qla8044_device_state_handler()
1990 qla8044_idc_lock(ha); in qla8044_device_state_handler()
1994 (ha->fcoe_reset_timeout * HZ); in qla8044_device_state_handler()
1997 ha->flags.nic_core_reset_owner = 0; in qla8044_device_state_handler()
1998 qla8044_idc_unlock(ha); in qla8044_device_state_handler()
2001 qla8044_idc_lock(ha); in qla8044_device_state_handler()
2004 qla8044_idc_unlock(ha); in qla8044_device_state_handler()
2007 qla8044_idc_lock(ha); in qla8044_device_state_handler()
2012 qla8044_idc_unlock(ha); in qla8044_device_state_handler()
2114 struct qla_hw_data *ha = vha->hw; in qla8044_watchdog() local
2122 ha->flags.isp82xx_fw_hung = 1; in qla8044_watchdog()
2130 ha->flags.isp82xx_fw_hung = 1; in qla8044_watchdog()
2148 if (ha->flags.isp82xx_fw_hung) { in qla8044_watchdog()
2203 struct qla_hw_data *ha = vha->hw; in qla8044_minidump_process_control() local
2207 ha->md_tmplt_hdr; in qla8044_minidump_process_control()
2346 struct qla_hw_data *ha = vha->hw; in qla8044_minidump_process_rdmem() local
2375 write_lock_irqsave(&ha->hw_lock, flags); in qla8044_minidump_process_rdmem()
2393 write_unlock_irqrestore(&ha->hw_lock, flags); in qla8044_minidump_process_rdmem()
2405 write_unlock_irqrestore(&ha->hw_lock, flags); in qla8044_minidump_process_rdmem()
2556 struct qla_hw_data *ha = vha->hw; in qla8044_minidump_process_rdocm() local
2570 r_value = readl((void __iomem *)(r_addr + ha->nx_pcibase)); in qla8044_minidump_process_rdocm()
2811 struct qla_hw_data *ha = vha->hw; in qla8044_check_dma_engine_state() local
2817 tmplt_hdr = ha->md_tmplt_hdr; in qla8044_check_dma_engine_state()
2841 struct qla_hw_data *ha = vha->hw; in qla8044_start_pex_dma() local
2847 tmplt_hdr = ha->md_tmplt_hdr; in qla8044_start_pex_dma()
2898 struct qla_hw_data *ha = vha->hw; in qla8044_minidump_pex_dma_read() local
2916 rdmem_buffer = dma_alloc_coherent(&ha->pdev->dev, in qla8044_minidump_pex_dma_read()
2934 ((PCI_FUNC(ha->pdev->devfn) & 0xf) << 0x4); in qla8044_minidump_pex_dma_read()
2981 dma_free_coherent(&ha->pdev->dev, ISP8044_PEX_DMA_READ_SIZE, in qla8044_minidump_pex_dma_read()
3228 struct qla_hw_data *ha = vha->hw; in qla8044_collect_md_data() local
3230 if (!ha->md_dump) { in qla8044_collect_md_data()
3237 if (ha->fw_dumped) { in qla8044_collect_md_data()
3240 "-- ignoring request.\n", ha->fw_dump); in qla8044_collect_md_data()
3244 ha->fw_dumped = 0; in qla8044_collect_md_data()
3246 if (!ha->md_tmplt_hdr || !ha->md_dump) { in qla8044_collect_md_data()
3252 qla8044_idc_lock(ha); in qla8044_collect_md_data()
3253 idc_control = qla8044_rd_reg(ha, QLA8044_IDC_DRV_CTRL); in qla8044_collect_md_data()
3258 qla8044_wr_reg(ha, QLA8044_IDC_DRV_CTRL, in qla8044_collect_md_data()
3260 qla8044_idc_unlock(ha); in qla8044_collect_md_data()
3264 qla8044_idc_unlock(ha); in qla8044_collect_md_data()
3273 ha->md_tmplt_hdr; in qla8044_collect_md_data()
3274 data_ptr = (uint32_t *)((uint8_t *)ha->md_dump); in qla8044_collect_md_data()
3298 __func__, ha->md_dump_size, ha->md_dump_size); in qla8044_collect_md_data()
3306 (((uint8_t *)ha->md_tmplt_hdr) + tmplt_hdr->first_entry_offset); in qla8044_collect_md_data()
3308 tmplt_hdr->ocm_window_reg[ha->portnum]; in qla8044_collect_md_data()
3312 if (data_collected > ha->md_dump_size) { in qla8044_collect_md_data()
3316 data_collected, ha->md_dump_size); in qla8044_collect_md_data()
3330 (ha->md_dump_size - data_collected)); in qla8044_collect_md_data()
3444 (uint8_t *)((uint8_t *)ha->md_dump); in qla8044_collect_md_data()
3453 if (data_collected != ha->md_dump_size) { in qla8044_collect_md_data()
3457 data_collected, ha->md_dump_size); in qla8044_collect_md_data()
3464 vha->host_no, ha->md_tmplt_hdr, vha->host_no, ha->md_dump); in qla8044_collect_md_data()
3465 ha->fw_dumped = 1; in qla8044_collect_md_data()
3479 struct qla_hw_data *ha = vha->hw; in qla8044_get_minidump() local
3482 ha->fw_dumped = 1; in qla8044_get_minidump()
3483 ha->prev_minidump_failed = 0; in qla8044_get_minidump()
3488 ha->prev_minidump_failed = 1; in qla8044_get_minidump()
3568 struct qla_hw_data *ha = vha->hw; in qla8044_unprotect_flash() local
3570 ret_val = qla8044_write_flash_status_reg(vha, ha->fdt_wrt_enable); in qla8044_unprotect_flash()
3585 struct qla_hw_data *ha = vha->hw; in qla8044_protect_flash() local
3587 ret_val = qla8044_write_flash_status_reg(vha, ha->fdt_wrt_disable); in qla8044_protect_flash()
3883 struct qla_hw_data *ha; in qla8044_intr_handler() local
3899 ha = rsp->hw; in qla8044_intr_handler()
3900 vha = pci_get_drvdata(ha->pdev); in qla8044_intr_handler()
3902 if (unlikely(pci_channel_offline(ha->pdev))) in qla8044_intr_handler()
3905 leg_int_ptr = qla8044_rd_reg(ha, LEG_INTR_PTR_OFFSET); in qla8044_intr_handler()
3915 pf_bit = ha->portnum << 16; in qla8044_intr_handler()
3930 qla8044_wr_reg(ha, LEG_INTR_TRIG_OFFSET, 0); in qla8044_intr_handler()
3932 leg_int_ptr = qla8044_rd_reg(ha, LEG_INTR_PTR_OFFSET); in qla8044_intr_handler()
3937 reg = &ha->iobase->isp82; in qla8044_intr_handler()
3938 spin_lock_irqsave(&ha->hardware_lock, flags); in qla8044_intr_handler()
3974 qla2x00_handle_mbx_completion(ha, status); in qla8044_intr_handler()
3975 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla8044_intr_handler()
3981 qla8044_idc_dontreset(struct qla_hw_data *ha) in qla8044_idc_dontreset() argument
3985 idc_ctrl = qla8044_rd_reg(ha, QLA8044_IDC_DRV_CTRL); in qla8044_idc_dontreset()
4013 struct qla_hw_data *ha = vha->hw; in qla8044_abort_isp() local
4015 qla8044_idc_lock(ha); in qla8044_abort_isp()
4030 if (qla8044_idc_dontreset(ha) == DONTRESET_BIT0) { in qla8044_abort_isp()
4048 qla8044_idc_unlock(ha); in qla8044_abort_isp()
4050 qla8044_idc_lock(ha); in qla8044_abort_isp()
4054 qla8044_idc_unlock(ha); in qla8044_abort_isp()
4056 ha->flags.isp82xx_fw_hung = 0; in qla8044_abort_isp()
4057 ha->flags.nic_core_reset_hdlr_active = 0; in qla8044_abort_isp()
4067 struct qla_hw_data *ha = vha->hw; in qla8044_fw_dump() local
4069 if (!ha->allow_cna_fw_dump) in qla8044_fw_dump()
4073 ha->flags.isp82xx_no_md_cap = 1; in qla8044_fw_dump()
4074 qla8044_idc_lock(ha); in qla8044_fw_dump()
4076 qla8044_idc_unlock(ha); in qla8044_fw_dump()