Lines Matching refs:ha
23 qla2x00_lock_nvram_access(struct qla_hw_data *ha) in qla2x00_lock_nvram_access() argument
26 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_lock_nvram_access()
28 if (!IS_QLA2100(ha) && !IS_QLA2200(ha) && !IS_QLA2300(ha)) { in qla2x00_lock_nvram_access()
56 qla2x00_unlock_nvram_access(struct qla_hw_data *ha) in qla2x00_unlock_nvram_access() argument
58 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_unlock_nvram_access()
60 if (!IS_QLA2100(ha) && !IS_QLA2200(ha) && !IS_QLA2300(ha)) { in qla2x00_unlock_nvram_access()
72 qla2x00_nv_write(struct qla_hw_data *ha, uint16_t data) in qla2x00_nv_write() argument
74 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_nv_write()
104 qla2x00_nvram_request(struct qla_hw_data *ha, uint32_t nv_cmd) in qla2x00_nvram_request() argument
107 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_nvram_request()
115 qla2x00_nv_write(ha, NVR_DATA_OUT); in qla2x00_nvram_request()
117 qla2x00_nv_write(ha, 0); in qla2x00_nvram_request()
153 qla2x00_get_nvram_word(struct qla_hw_data *ha, uint32_t addr) in qla2x00_get_nvram_word() argument
160 data = qla2x00_nvram_request(ha, nv_cmd); in qla2x00_get_nvram_word()
170 qla2x00_nv_deselect(struct qla_hw_data *ha) in qla2x00_nv_deselect() argument
172 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_nv_deselect()
186 qla2x00_write_nvram_word(struct qla_hw_data *ha, uint32_t addr, uint16_t data) in qla2x00_write_nvram_word() argument
191 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_write_nvram_word()
192 scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev); in qla2x00_write_nvram_word()
194 qla2x00_nv_write(ha, NVR_DATA_OUT); in qla2x00_write_nvram_word()
195 qla2x00_nv_write(ha, 0); in qla2x00_write_nvram_word()
196 qla2x00_nv_write(ha, 0); in qla2x00_write_nvram_word()
199 qla2x00_nv_write(ha, NVR_DATA_OUT); in qla2x00_write_nvram_word()
201 qla2x00_nv_deselect(ha); in qla2x00_write_nvram_word()
209 qla2x00_nv_write(ha, NVR_DATA_OUT); in qla2x00_write_nvram_word()
211 qla2x00_nv_write(ha, 0); in qla2x00_write_nvram_word()
216 qla2x00_nv_deselect(ha); in qla2x00_write_nvram_word()
232 qla2x00_nv_deselect(ha); in qla2x00_write_nvram_word()
235 qla2x00_nv_write(ha, NVR_DATA_OUT); in qla2x00_write_nvram_word()
237 qla2x00_nv_write(ha, 0); in qla2x00_write_nvram_word()
239 qla2x00_nv_deselect(ha); in qla2x00_write_nvram_word()
243 qla2x00_write_nvram_word_tmo(struct qla_hw_data *ha, uint32_t addr, in qla2x00_write_nvram_word_tmo() argument
249 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_write_nvram_word_tmo()
253 qla2x00_nv_write(ha, NVR_DATA_OUT); in qla2x00_write_nvram_word_tmo()
254 qla2x00_nv_write(ha, 0); in qla2x00_write_nvram_word_tmo()
255 qla2x00_nv_write(ha, 0); in qla2x00_write_nvram_word_tmo()
258 qla2x00_nv_write(ha, NVR_DATA_OUT); in qla2x00_write_nvram_word_tmo()
260 qla2x00_nv_deselect(ha); in qla2x00_write_nvram_word_tmo()
268 qla2x00_nv_write(ha, NVR_DATA_OUT); in qla2x00_write_nvram_word_tmo()
270 qla2x00_nv_write(ha, 0); in qla2x00_write_nvram_word_tmo()
275 qla2x00_nv_deselect(ha); in qla2x00_write_nvram_word_tmo()
289 qla2x00_nv_deselect(ha); in qla2x00_write_nvram_word_tmo()
292 qla2x00_nv_write(ha, NVR_DATA_OUT); in qla2x00_write_nvram_word_tmo()
294 qla2x00_nv_write(ha, 0); in qla2x00_write_nvram_word_tmo()
296 qla2x00_nv_deselect(ha); in qla2x00_write_nvram_word_tmo()
306 qla2x00_clear_nvram_protection(struct qla_hw_data *ha) in qla2x00_clear_nvram_protection() argument
309 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_clear_nvram_protection()
312 scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev); in qla2x00_clear_nvram_protection()
317 wprot_old = cpu_to_le16(qla2x00_get_nvram_word(ha, ha->nvram_base)); in qla2x00_clear_nvram_protection()
318 stat = qla2x00_write_nvram_word_tmo(ha, ha->nvram_base, in qla2x00_clear_nvram_protection()
320 wprot = cpu_to_le16(qla2x00_get_nvram_word(ha, ha->nvram_base)); in qla2x00_clear_nvram_protection()
323 qla2x00_nv_write(ha, NVR_DATA_OUT); in qla2x00_clear_nvram_protection()
324 qla2x00_nv_write(ha, 0); in qla2x00_clear_nvram_protection()
325 qla2x00_nv_write(ha, 0); in qla2x00_clear_nvram_protection()
327 qla2x00_nv_write(ha, NVR_DATA_OUT); in qla2x00_clear_nvram_protection()
329 qla2x00_nv_deselect(ha); in qla2x00_clear_nvram_protection()
332 qla2x00_nv_write(ha, NVR_PR_ENABLE | NVR_DATA_OUT); in qla2x00_clear_nvram_protection()
333 qla2x00_nv_write(ha, NVR_PR_ENABLE); in qla2x00_clear_nvram_protection()
334 qla2x00_nv_write(ha, NVR_PR_ENABLE); in qla2x00_clear_nvram_protection()
336 qla2x00_nv_write(ha, NVR_DATA_OUT | NVR_PR_ENABLE); in qla2x00_clear_nvram_protection()
338 qla2x00_nv_deselect(ha); in qla2x00_clear_nvram_protection()
341 qla2x00_nv_write(ha, NVR_PR_ENABLE | NVR_DATA_OUT); in qla2x00_clear_nvram_protection()
342 qla2x00_nv_write(ha, NVR_PR_ENABLE | NVR_DATA_OUT); in qla2x00_clear_nvram_protection()
343 qla2x00_nv_write(ha, NVR_PR_ENABLE | NVR_DATA_OUT); in qla2x00_clear_nvram_protection()
345 qla2x00_nv_write(ha, NVR_DATA_OUT | NVR_PR_ENABLE); in qla2x00_clear_nvram_protection()
347 qla2x00_nv_deselect(ha); in qla2x00_clear_nvram_protection()
366 qla2x00_write_nvram_word(ha, ha->nvram_base, wprot_old); in qla2x00_clear_nvram_protection()
372 qla2x00_set_nvram_protection(struct qla_hw_data *ha, int stat) in qla2x00_set_nvram_protection() argument
374 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_set_nvram_protection()
376 scsi_qla_host_t *vha = pci_get_drvdata(ha->pdev); in qla2x00_set_nvram_protection()
383 qla2x00_nv_write(ha, NVR_DATA_OUT); in qla2x00_set_nvram_protection()
384 qla2x00_nv_write(ha, 0); in qla2x00_set_nvram_protection()
385 qla2x00_nv_write(ha, 0); in qla2x00_set_nvram_protection()
387 qla2x00_nv_write(ha, NVR_DATA_OUT); in qla2x00_set_nvram_protection()
389 qla2x00_nv_deselect(ha); in qla2x00_set_nvram_protection()
392 qla2x00_nv_write(ha, NVR_PR_ENABLE | NVR_DATA_OUT); in qla2x00_set_nvram_protection()
393 qla2x00_nv_write(ha, NVR_PR_ENABLE); in qla2x00_set_nvram_protection()
394 qla2x00_nv_write(ha, NVR_PR_ENABLE); in qla2x00_set_nvram_protection()
396 qla2x00_nv_write(ha, NVR_DATA_OUT | NVR_PR_ENABLE); in qla2x00_set_nvram_protection()
398 qla2x00_nv_deselect(ha); in qla2x00_set_nvram_protection()
401 qla2x00_nv_write(ha, NVR_PR_ENABLE | NVR_DATA_OUT); in qla2x00_set_nvram_protection()
402 qla2x00_nv_write(ha, NVR_PR_ENABLE); in qla2x00_set_nvram_protection()
403 qla2x00_nv_write(ha, NVR_PR_ENABLE | NVR_DATA_OUT); in qla2x00_set_nvram_protection()
405 qla2x00_nv_write(ha, NVR_PR_ENABLE); in qla2x00_set_nvram_protection()
407 qla2x00_nv_deselect(ha); in qla2x00_set_nvram_protection()
430 flash_conf_addr(struct qla_hw_data *ha, uint32_t faddr) in flash_conf_addr() argument
432 return ha->flash_conf_off | faddr; in flash_conf_addr()
436 flash_data_addr(struct qla_hw_data *ha, uint32_t faddr) in flash_data_addr() argument
438 return ha->flash_data_off | faddr; in flash_data_addr()
442 nvram_conf_addr(struct qla_hw_data *ha, uint32_t naddr) in nvram_conf_addr() argument
444 return ha->nvram_conf_off | naddr; in nvram_conf_addr()
448 nvram_data_addr(struct qla_hw_data *ha, uint32_t naddr) in nvram_data_addr() argument
450 return ha->nvram_data_off | naddr; in nvram_data_addr()
454 qla24xx_read_flash_dword(struct qla_hw_data *ha, uint32_t addr) in qla24xx_read_flash_dword() argument
458 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; in qla24xx_read_flash_dword()
486 struct qla_hw_data *ha = vha->hw; in qla24xx_read_flash_data() local
490 dwptr[i] = cpu_to_le32(qla24xx_read_flash_dword(ha, in qla24xx_read_flash_data()
491 flash_data_addr(ha, faddr))); in qla24xx_read_flash_data()
497 qla24xx_write_flash_dword(struct qla_hw_data *ha, uint32_t addr, uint32_t data) in qla24xx_write_flash_dword() argument
501 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; in qla24xx_write_flash_dword()
520 qla24xx_get_flash_manufacturer(struct qla_hw_data *ha, uint8_t *man_id, in qla24xx_get_flash_manufacturer() argument
525 ids = qla24xx_read_flash_dword(ha, flash_conf_addr(ha, 0x03ab)); in qla24xx_get_flash_manufacturer()
537 ids = qla24xx_read_flash_dword(ha, flash_conf_addr(ha, 0x009f)); in qla24xx_get_flash_manufacturer()
552 struct qla_hw_data *ha = vha->hw; in qla2xxx_find_flt_start() local
553 struct req_que *req = ha->req_q_map[0]; in qla2xxx_find_flt_start()
562 if (IS_QLA24XX_TYPE(ha)) in qla2xxx_find_flt_start()
564 else if (IS_QLA25XX(ha)) in qla2xxx_find_flt_start()
566 else if (IS_QLA81XX(ha)) in qla2xxx_find_flt_start()
568 else if (IS_P3P_TYPE(ha)) { in qla2xxx_find_flt_start()
571 } else if (IS_QLA83XX(ha) || IS_QLA27XX(ha)) { in qla2xxx_find_flt_start()
673 struct qla_hw_data *ha = vha->hw; in qla2xxx_get_flt_info() local
674 struct req_que *req = ha->req_q_map[0]; in qla2xxx_get_flt_info()
677 if (IS_QLA25XX(ha)) in qla2xxx_get_flt_info()
679 else if (IS_QLA81XX(ha)) in qla2xxx_get_flt_info()
685 ha->flt_region_fcp_prio = (ha->port_no == 0) ? in qla2xxx_get_flt_info()
688 ha->flt_region_flt = flt_addr; in qla2xxx_get_flt_info()
692 ha->isp_ops->read_optrom(vha, (uint8_t *)req->ring, in qla2xxx_get_flt_info()
728 if (!IS_QLA8031(ha)) in qla2xxx_get_flt_info()
730 ha->flt_region_fw = start; in qla2xxx_get_flt_info()
733 if (IS_QLA8031(ha)) in qla2xxx_get_flt_info()
735 ha->flt_region_fw = start; in qla2xxx_get_flt_info()
738 ha->flt_region_boot = start; in qla2xxx_get_flt_info()
741 if (IS_QLA8031(ha)) in qla2xxx_get_flt_info()
743 ha->flt_region_vpd_nvram = start; in qla2xxx_get_flt_info()
744 if (IS_P3P_TYPE(ha)) in qla2xxx_get_flt_info()
746 if (ha->port_no == 0) in qla2xxx_get_flt_info()
747 ha->flt_region_vpd = start; in qla2xxx_get_flt_info()
750 if (IS_P3P_TYPE(ha) || IS_QLA8031(ha)) in qla2xxx_get_flt_info()
752 if (ha->port_no == 1) in qla2xxx_get_flt_info()
753 ha->flt_region_vpd = start; in qla2xxx_get_flt_info()
756 if (!IS_QLA27XX(ha)) in qla2xxx_get_flt_info()
758 if (ha->port_no == 2) in qla2xxx_get_flt_info()
759 ha->flt_region_vpd = start; in qla2xxx_get_flt_info()
762 if (!IS_QLA27XX(ha)) in qla2xxx_get_flt_info()
764 if (ha->port_no == 3) in qla2xxx_get_flt_info()
765 ha->flt_region_vpd = start; in qla2xxx_get_flt_info()
768 if (IS_QLA8031(ha)) in qla2xxx_get_flt_info()
770 if (ha->port_no == 0) in qla2xxx_get_flt_info()
771 ha->flt_region_nvram = start; in qla2xxx_get_flt_info()
774 if (IS_QLA8031(ha)) in qla2xxx_get_flt_info()
776 if (ha->port_no == 1) in qla2xxx_get_flt_info()
777 ha->flt_region_nvram = start; in qla2xxx_get_flt_info()
780 if (!IS_QLA27XX(ha)) in qla2xxx_get_flt_info()
782 if (ha->port_no == 2) in qla2xxx_get_flt_info()
783 ha->flt_region_nvram = start; in qla2xxx_get_flt_info()
786 if (!IS_QLA27XX(ha)) in qla2xxx_get_flt_info()
788 if (ha->port_no == 3) in qla2xxx_get_flt_info()
789 ha->flt_region_nvram = start; in qla2xxx_get_flt_info()
792 ha->flt_region_fdt = start; in qla2xxx_get_flt_info()
795 if (ha->port_no == 0) in qla2xxx_get_flt_info()
796 ha->flt_region_npiv_conf = start; in qla2xxx_get_flt_info()
799 if (ha->port_no == 1) in qla2xxx_get_flt_info()
800 ha->flt_region_npiv_conf = start; in qla2xxx_get_flt_info()
803 ha->flt_region_gold_fw = start; in qla2xxx_get_flt_info()
806 if (ha->port_no == 0) in qla2xxx_get_flt_info()
807 ha->flt_region_fcp_prio = start; in qla2xxx_get_flt_info()
810 if (ha->port_no == 1) in qla2xxx_get_flt_info()
811 ha->flt_region_fcp_prio = start; in qla2xxx_get_flt_info()
814 ha->flt_region_boot = start; in qla2xxx_get_flt_info()
817 if (IS_QLA8044(ha)) in qla2xxx_get_flt_info()
818 ha->flt_region_boot = start; in qla2xxx_get_flt_info()
821 ha->flt_region_fw = start; in qla2xxx_get_flt_info()
824 if (IS_CNA_CAPABLE(ha)) in qla2xxx_get_flt_info()
825 ha->flt_region_fw = start; in qla2xxx_get_flt_info()
828 ha->flt_region_gold_fw = start; in qla2xxx_get_flt_info()
831 ha->flt_region_bootload = start; in qla2xxx_get_flt_info()
834 if (IS_CNA_CAPABLE(ha)) in qla2xxx_get_flt_info()
835 ha->flt_region_vpd = start; in qla2xxx_get_flt_info()
838 if (!(IS_QLA8031(ha) || IS_QLA8044(ha))) in qla2xxx_get_flt_info()
840 if (ha->port_no == 0) in qla2xxx_get_flt_info()
841 ha->flt_region_nvram = start; in qla2xxx_get_flt_info()
844 if (!(IS_QLA8031(ha) || IS_QLA8044(ha))) in qla2xxx_get_flt_info()
846 if (ha->port_no == 1) in qla2xxx_get_flt_info()
847 ha->flt_region_nvram = start; in qla2xxx_get_flt_info()
856 ha->flt_region_fw = def_fw[def]; in qla2xxx_get_flt_info()
857 ha->flt_region_boot = def_boot[def]; in qla2xxx_get_flt_info()
858 ha->flt_region_vpd_nvram = def_vpd_nvram[def]; in qla2xxx_get_flt_info()
859 ha->flt_region_vpd = (ha->port_no == 0) ? in qla2xxx_get_flt_info()
861 ha->flt_region_nvram = (ha->port_no == 0) ? in qla2xxx_get_flt_info()
863 ha->flt_region_fdt = def_fdt[def]; in qla2xxx_get_flt_info()
864 ha->flt_region_npiv_conf = (ha->port_no == 0) ? in qla2xxx_get_flt_info()
870 loc, ha->flt_region_boot, ha->flt_region_fw, in qla2xxx_get_flt_info()
871 ha->flt_region_vpd_nvram, ha->flt_region_vpd, ha->flt_region_nvram, in qla2xxx_get_flt_info()
872 ha->flt_region_fdt, ha->flt_region_flt, ha->flt_region_npiv_conf, in qla2xxx_get_flt_info()
873 ha->flt_region_fcp_prio); in qla2xxx_get_flt_info()
888 struct qla_hw_data *ha = vha->hw; in qla2xxx_get_fdt_info() local
889 struct req_que *req = ha->req_q_map[0]; in qla2xxx_get_fdt_info()
893 ha->isp_ops->read_optrom(vha, (uint8_t *)req->ring, in qla2xxx_get_fdt_info()
894 ha->flt_region_fdt << 2, OPTROM_BURST_SIZE); in qla2xxx_get_fdt_info()
917 ha->fdt_wrt_disable = fdt->wrt_disable_bits; in qla2xxx_get_fdt_info()
918 ha->fdt_wrt_enable = fdt->wrt_enable_bits; in qla2xxx_get_fdt_info()
919 ha->fdt_wrt_sts_reg_cmd = fdt->wrt_sts_reg_cmd; in qla2xxx_get_fdt_info()
920 if (IS_QLA8044(ha)) in qla2xxx_get_fdt_info()
921 ha->fdt_erase_cmd = fdt->erase_cmd; in qla2xxx_get_fdt_info()
923 ha->fdt_erase_cmd = in qla2xxx_get_fdt_info()
924 flash_conf_addr(ha, 0x0300 | fdt->erase_cmd); in qla2xxx_get_fdt_info()
925 ha->fdt_block_size = le32_to_cpu(fdt->block_size); in qla2xxx_get_fdt_info()
927 ha->fdt_unprotect_sec_cmd = flash_conf_addr(ha, 0x0300 | in qla2xxx_get_fdt_info()
929 ha->fdt_protect_sec_cmd = fdt->protect_sec_cmd ? in qla2xxx_get_fdt_info()
930 flash_conf_addr(ha, 0x0300 | fdt->protect_sec_cmd): in qla2xxx_get_fdt_info()
931 flash_conf_addr(ha, 0x0336); in qla2xxx_get_fdt_info()
936 if (IS_P3P_TYPE(ha)) { in qla2xxx_get_fdt_info()
937 ha->fdt_block_size = FLASH_BLK_SIZE_64K; in qla2xxx_get_fdt_info()
940 qla24xx_get_flash_manufacturer(ha, &man_id, &flash_id); in qla2xxx_get_fdt_info()
943 ha->fdt_wrt_disable = 0x9c; in qla2xxx_get_fdt_info()
944 ha->fdt_erase_cmd = flash_conf_addr(ha, 0x03d8); in qla2xxx_get_fdt_info()
948 ha->fdt_block_size = FLASH_BLK_SIZE_64K; in qla2xxx_get_fdt_info()
950 ha->fdt_block_size = FLASH_BLK_SIZE_32K; in qla2xxx_get_fdt_info()
953 ha->fdt_erase_cmd = flash_conf_addr(ha, 0x0352); in qla2xxx_get_fdt_info()
956 ha->fdt_block_size = FLASH_BLK_SIZE_64K; in qla2xxx_get_fdt_info()
959 ha->fdt_block_size = FLASH_BLK_SIZE_4K; in qla2xxx_get_fdt_info()
960 ha->fdt_erase_cmd = flash_conf_addr(ha, 0x0320); in qla2xxx_get_fdt_info()
961 ha->fdt_unprotect_sec_cmd = flash_conf_addr(ha, 0x0339); in qla2xxx_get_fdt_info()
962 ha->fdt_protect_sec_cmd = flash_conf_addr(ha, 0x0336); in qla2xxx_get_fdt_info()
966 ha->fdt_block_size = FLASH_BLK_SIZE_64K; in qla2xxx_get_fdt_info()
974 ha->fdt_erase_cmd, ha->fdt_protect_sec_cmd, in qla2xxx_get_fdt_info()
975 ha->fdt_wrt_disable, ha->fdt_block_size); in qla2xxx_get_fdt_info()
984 struct qla_hw_data *ha = vha->hw; in qla2xxx_get_idc_param() local
985 struct req_que *req = ha->req_q_map[0]; in qla2xxx_get_idc_param()
987 if (!(IS_P3P_TYPE(ha))) in qla2xxx_get_idc_param()
991 ha->isp_ops->read_optrom(vha, (uint8_t *)req->ring, in qla2xxx_get_idc_param()
995 ha->fcoe_dev_init_timeout = QLA82XX_ROM_DEV_INIT_TIMEOUT; in qla2xxx_get_idc_param()
996 ha->fcoe_reset_timeout = QLA82XX_ROM_DRV_RESET_ACK_TIMEOUT; in qla2xxx_get_idc_param()
998 ha->fcoe_dev_init_timeout = le32_to_cpu(*wptr++); in qla2xxx_get_idc_param()
999 ha->fcoe_reset_timeout = le32_to_cpu(*wptr); in qla2xxx_get_idc_param()
1003 "fcoe_reset_timeout=%d.\n", ha->fcoe_dev_init_timeout, in qla2xxx_get_idc_param()
1004 ha->fcoe_reset_timeout); in qla2xxx_get_idc_param()
1013 struct qla_hw_data *ha = vha->hw; in qla2xxx_get_flash_info() local
1015 if (!IS_QLA24XX_TYPE(ha) && !IS_QLA25XX(ha) && in qla2xxx_get_flash_info()
1016 !IS_CNA_CAPABLE(ha) && !IS_QLA2031(ha) && !IS_QLA27XX(ha)) in qla2xxx_get_flash_info()
1040 struct qla_hw_data *ha = vha->hw; in qla2xxx_flash_npiv_conf() local
1042 if (!IS_QLA24XX_TYPE(ha) && !IS_QLA25XX(ha) && in qla2xxx_flash_npiv_conf()
1043 !IS_CNA_CAPABLE(ha) && !IS_QLA2031(ha)) in qla2xxx_flash_npiv_conf()
1046 if (ha->flags.nic_core_reset_hdlr_active) in qla2xxx_flash_npiv_conf()
1049 if (IS_QLA8044(ha)) in qla2xxx_flash_npiv_conf()
1052 ha->isp_ops->read_optrom(vha, (uint8_t *)&hdr, in qla2xxx_flash_npiv_conf()
1053 ha->flt_region_npiv_conf << 2, sizeof(struct qla_npiv_header)); in qla2xxx_flash_npiv_conf()
1072 ha->isp_ops->read_optrom(vha, (uint8_t *)data, in qla2xxx_flash_npiv_conf()
1073 ha->flt_region_npiv_conf << 2, NPIV_CONFIG_SIZE); in qla2xxx_flash_npiv_conf()
1095 memcpy(&ha->npiv_info[i], entry, sizeof(struct qla_npiv_entry)); in qla2xxx_flash_npiv_conf()
1135 struct qla_hw_data *ha = vha->hw; in qla24xx_unprotect_flash() local
1136 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; in qla24xx_unprotect_flash()
1138 if (ha->flags.fac_supported) in qla24xx_unprotect_flash()
1146 if (!ha->fdt_wrt_disable) in qla24xx_unprotect_flash()
1150 qla24xx_write_flash_dword(ha, flash_conf_addr(ha, 0x101), 0); in qla24xx_unprotect_flash()
1152 qla24xx_write_flash_dword(ha, flash_conf_addr(ha, 0x101), 0); in qla24xx_unprotect_flash()
1161 struct qla_hw_data *ha = vha->hw; in qla24xx_protect_flash() local
1162 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; in qla24xx_protect_flash()
1164 if (ha->flags.fac_supported) in qla24xx_protect_flash()
1167 if (!ha->fdt_wrt_disable) in qla24xx_protect_flash()
1171 qla24xx_write_flash_dword(ha, flash_conf_addr(ha, 0x101), in qla24xx_protect_flash()
1172 ha->fdt_wrt_disable); in qla24xx_protect_flash()
1174 qla24xx_read_flash_dword(ha, flash_conf_addr(ha, 0x005)) & BIT_0; in qla24xx_protect_flash()
1191 struct qla_hw_data *ha = vha->hw; in qla24xx_erase_sector() local
1194 if (ha->flags.fac_supported) { in qla24xx_erase_sector()
1196 finish = start + (ha->fdt_block_size >> 2) - 1; in qla24xx_erase_sector()
1197 return qla81xx_fac_erase_sector(vha, flash_data_addr(ha, in qla24xx_erase_sector()
1198 start), flash_data_addr(ha, finish)); in qla24xx_erase_sector()
1201 return qla24xx_write_flash_dword(ha, ha->fdt_erase_cmd, in qla24xx_erase_sector()
1216 struct qla_hw_data *ha = vha->hw; in qla24xx_write_flash_data() local
1219 if ((IS_QLA25XX(ha) || IS_QLA81XX(ha) || IS_QLA83XX(ha) || in qla24xx_write_flash_data()
1220 IS_QLA27XX(ha)) && in qla24xx_write_flash_data()
1222 optrom = dma_alloc_coherent(&ha->pdev->dev, OPTROM_BURST_SIZE, in qla24xx_write_flash_data()
1232 rest_addr = (ha->fdt_block_size >> 2) - 1; in qla24xx_write_flash_data()
1248 if (ha->fdt_unprotect_sec_cmd) in qla24xx_write_flash_data()
1249 qla24xx_write_flash_dword(ha, in qla24xx_write_flash_data()
1250 ha->fdt_unprotect_sec_cmd, in qla24xx_write_flash_data()
1268 flash_data_addr(ha, faddr), in qla24xx_write_flash_data()
1274 flash_data_addr(ha, faddr), in qla24xx_write_flash_data()
1279 dma_free_coherent(&ha->pdev->dev, in qla24xx_write_flash_data()
1290 ret = qla24xx_write_flash_dword(ha, in qla24xx_write_flash_data()
1291 flash_data_addr(ha, faddr), cpu_to_le32(*dwptr)); in qla24xx_write_flash_data()
1300 if (ha->fdt_unprotect_sec_cmd && in qla24xx_write_flash_data()
1302 qla24xx_write_flash_dword(ha, in qla24xx_write_flash_data()
1303 ha->fdt_protect_sec_cmd, in qla24xx_write_flash_data()
1314 dma_free_coherent(&ha->pdev->dev, in qla24xx_write_flash_data()
1326 struct qla_hw_data *ha = vha->hw; in qla2x00_read_nvram_data() local
1330 qla2x00_lock_nvram_access(ha); in qla2x00_read_nvram_data()
1332 wptr[i] = cpu_to_le16(qla2x00_get_nvram_word(ha, in qla2x00_read_nvram_data()
1334 qla2x00_unlock_nvram_access(ha); in qla2x00_read_nvram_data()
1345 struct qla_hw_data *ha = vha->hw; in qla24xx_read_nvram_data() local
1347 if (IS_P3P_TYPE(ha)) in qla24xx_read_nvram_data()
1353 dwptr[i] = cpu_to_le32(qla24xx_read_flash_dword(ha, in qla24xx_read_nvram_data()
1354 nvram_data_addr(ha, naddr))); in qla24xx_read_nvram_data()
1367 struct qla_hw_data *ha = vha->hw; in qla2x00_write_nvram_data() local
1371 spin_lock_irqsave(&ha->hardware_lock, flags); in qla2x00_write_nvram_data()
1372 qla2x00_lock_nvram_access(ha); in qla2x00_write_nvram_data()
1375 stat = qla2x00_clear_nvram_protection(ha); in qla2x00_write_nvram_data()
1379 qla2x00_write_nvram_word(ha, naddr, in qla2x00_write_nvram_data()
1385 qla2x00_set_nvram_protection(ha, stat); in qla2x00_write_nvram_data()
1387 qla2x00_unlock_nvram_access(ha); in qla2x00_write_nvram_data()
1388 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla2x00_write_nvram_data()
1400 struct qla_hw_data *ha = vha->hw; in qla24xx_write_nvram_data() local
1401 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; in qla24xx_write_nvram_data()
1405 if (IS_P3P_TYPE(ha)) in qla24xx_write_nvram_data()
1414 qla24xx_write_flash_dword(ha, nvram_conf_addr(ha, 0x101), 0); in qla24xx_write_nvram_data()
1415 qla24xx_write_flash_dword(ha, nvram_conf_addr(ha, 0x101), 0); in qla24xx_write_nvram_data()
1420 ret = qla24xx_write_flash_dword(ha, in qla24xx_write_nvram_data()
1421 nvram_data_addr(ha, naddr), cpu_to_le32(*dwptr)); in qla24xx_write_nvram_data()
1431 qla24xx_write_flash_dword(ha, nvram_conf_addr(ha, 0x101), 0x8c); in qla24xx_write_nvram_data()
1447 struct qla_hw_data *ha = vha->hw; in qla25xx_read_nvram_data() local
1452 dwptr[i] = cpu_to_le32(qla24xx_read_flash_dword(ha, in qla25xx_read_nvram_data()
1453 flash_data_addr(ha, ha->flt_region_vpd_nvram | naddr))); in qla25xx_read_nvram_data()
1462 struct qla_hw_data *ha = vha->hw; in qla25xx_write_nvram_data() local
1469 ha->isp_ops->read_optrom(vha, dbuf, ha->flt_region_vpd_nvram << 2, in qla25xx_write_nvram_data()
1472 ha->isp_ops->write_optrom(vha, dbuf, ha->flt_region_vpd_nvram << 2, in qla25xx_write_nvram_data()
1480 qla2x00_flip_colors(struct qla_hw_data *ha, uint16_t *pflags) in qla2x00_flip_colors() argument
1482 if (IS_QLA2322(ha)) { in qla2x00_flip_colors()
1484 if (ha->beacon_color_state == QLA_LED_ALL_ON) { in qla2x00_flip_colors()
1486 ha->beacon_color_state = 0; in qla2x00_flip_colors()
1490 ha->beacon_color_state = QLA_LED_ALL_ON; in qla2x00_flip_colors()
1495 if (ha->beacon_color_state == QLA_LED_GRN_ON) { in qla2x00_flip_colors()
1497 ha->beacon_color_state = 0; in qla2x00_flip_colors()
1501 ha->beacon_color_state = QLA_LED_GRN_ON; in qla2x00_flip_colors()
1516 struct qla_hw_data *ha = vha->hw; in qla2x00_beacon_blink() local
1517 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_beacon_blink()
1519 if (IS_P3P_TYPE(ha)) in qla2x00_beacon_blink()
1522 spin_lock_irqsave(&ha->hardware_lock, flags); in qla2x00_beacon_blink()
1525 if (ha->pio_address) { in qla2x00_beacon_blink()
1526 gpio_enable = RD_REG_WORD_PIO(PIO_REG(ha, gpioe)); in qla2x00_beacon_blink()
1527 gpio_data = RD_REG_WORD_PIO(PIO_REG(ha, gpiod)); in qla2x00_beacon_blink()
1536 if (ha->pio_address) { in qla2x00_beacon_blink()
1537 WRT_REG_WORD_PIO(PIO_REG(ha, gpioe), gpio_enable); in qla2x00_beacon_blink()
1543 qla2x00_flip_colors(ha, &led_color); in qla2x00_beacon_blink()
1552 if (ha->pio_address) { in qla2x00_beacon_blink()
1553 WRT_REG_WORD_PIO(PIO_REG(ha, gpiod), gpio_data); in qla2x00_beacon_blink()
1559 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla2x00_beacon_blink()
1568 struct qla_hw_data *ha = vha->hw; in qla2x00_beacon_on() local
1569 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_beacon_on()
1571 ha->fw_options[1] &= ~FO1_SET_EMPHASIS_SWING; in qla2x00_beacon_on()
1572 ha->fw_options[1] |= FO1_DISABLE_GPIO6_7; in qla2x00_beacon_on()
1574 if (qla2x00_set_fw_options(vha, ha->fw_options) != QLA_SUCCESS) { in qla2x00_beacon_on()
1581 spin_lock_irqsave(&ha->hardware_lock, flags); in qla2x00_beacon_on()
1582 if (ha->pio_address) { in qla2x00_beacon_on()
1583 gpio_enable = RD_REG_WORD_PIO(PIO_REG(ha, gpioe)); in qla2x00_beacon_on()
1584 gpio_data = RD_REG_WORD_PIO(PIO_REG(ha, gpiod)); in qla2x00_beacon_on()
1592 if (ha->pio_address) { in qla2x00_beacon_on()
1593 WRT_REG_WORD_PIO(PIO_REG(ha, gpioe), gpio_enable); in qla2x00_beacon_on()
1601 if (ha->pio_address) { in qla2x00_beacon_on()
1602 WRT_REG_WORD_PIO(PIO_REG(ha, gpiod), gpio_data); in qla2x00_beacon_on()
1607 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla2x00_beacon_on()
1613 ha->beacon_blink_led = 1; in qla2x00_beacon_on()
1614 ha->beacon_color_state = 0; in qla2x00_beacon_on()
1623 struct qla_hw_data *ha = vha->hw; in qla2x00_beacon_off() local
1625 ha->beacon_blink_led = 0; in qla2x00_beacon_off()
1628 if (IS_QLA2322(ha)) in qla2x00_beacon_off()
1629 ha->beacon_color_state = QLA_LED_ALL_ON; in qla2x00_beacon_off()
1631 ha->beacon_color_state = QLA_LED_GRN_ON; in qla2x00_beacon_off()
1633 ha->isp_ops->beacon_blink(vha); /* This turns green LED off */ in qla2x00_beacon_off()
1635 ha->fw_options[1] &= ~FO1_SET_EMPHASIS_SWING; in qla2x00_beacon_off()
1636 ha->fw_options[1] &= ~FO1_DISABLE_GPIO6_7; in qla2x00_beacon_off()
1638 rval = qla2x00_set_fw_options(vha, ha->fw_options); in qla2x00_beacon_off()
1647 qla24xx_flip_colors(struct qla_hw_data *ha, uint16_t *pflags) in qla24xx_flip_colors() argument
1650 if (ha->beacon_color_state == QLA_LED_ALL_ON) { in qla24xx_flip_colors()
1652 ha->beacon_color_state = 0; in qla24xx_flip_colors()
1656 ha->beacon_color_state = QLA_LED_ALL_ON; in qla24xx_flip_colors()
1667 struct qla_hw_data *ha = vha->hw; in qla24xx_beacon_blink() local
1668 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; in qla24xx_beacon_blink()
1671 spin_lock_irqsave(&ha->hardware_lock, flags); in qla24xx_beacon_blink()
1681 qla24xx_flip_colors(ha, &led_color); in qla24xx_beacon_blink()
1692 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla24xx_beacon_blink()
1696 qla83xx_select_led_port(struct qla_hw_data *ha) in qla83xx_select_led_port() argument
1700 if (!IS_QLA83XX(ha) && !IS_QLA27XX(ha)) in qla83xx_select_led_port()
1703 if (ha->port_no == 0) in qla83xx_select_led_port()
1716 struct qla_hw_data *ha = vha->hw; in qla83xx_beacon_blink() local
1721 if (!IS_QLA83XX(ha) && !IS_QLA81XX(ha) && !IS_QLA27XX(ha)) in qla83xx_beacon_blink()
1724 if (!ha->beacon_blink_led) in qla83xx_beacon_blink()
1727 if (IS_QLA27XX(ha)) { in qla83xx_beacon_blink()
1730 } else if (IS_QLA2031(ha)) { in qla83xx_beacon_blink()
1731 led_select_value = qla83xx_select_led_port(ha); in qla83xx_beacon_blink()
1735 } else if (IS_QLA8031(ha)) { in qla83xx_beacon_blink()
1736 led_select_value = qla83xx_select_led_port(ha); in qla83xx_beacon_blink()
1746 } else if (IS_QLA81XX(ha)) { in qla83xx_beacon_blink()
1753 if (IS_QLA81XX(ha)) { in qla83xx_beacon_blink()
1770 if (IS_QLA81XX(ha)) { in qla83xx_beacon_blink()
1794 struct qla_hw_data *ha = vha->hw; in qla24xx_beacon_on() local
1795 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; in qla24xx_beacon_on()
1797 if (IS_P3P_TYPE(ha)) in qla24xx_beacon_on()
1800 if (IS_QLA8031(ha) || IS_QLA81XX(ha)) in qla24xx_beacon_on()
1803 if (ha->beacon_blink_led == 0) { in qla24xx_beacon_on()
1805 ha->fw_options[1] |= ADD_FO1_DISABLE_GPIO_LED_CTRL; in qla24xx_beacon_on()
1807 if (qla2x00_set_fw_options(vha, ha->fw_options) != QLA_SUCCESS) in qla24xx_beacon_on()
1810 if (qla2x00_get_fw_options(vha, ha->fw_options) != in qla24xx_beacon_on()
1817 if (IS_QLA2031(ha) || IS_QLA27XX(ha)) in qla24xx_beacon_on()
1820 spin_lock_irqsave(&ha->hardware_lock, flags); in qla24xx_beacon_on()
1828 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla24xx_beacon_on()
1832 ha->beacon_color_state = 0; in qla24xx_beacon_on()
1836 ha->beacon_blink_led = 1; in qla24xx_beacon_on()
1846 struct qla_hw_data *ha = vha->hw; in qla24xx_beacon_off() local
1847 struct device_reg_24xx __iomem *reg = &ha->iobase->isp24; in qla24xx_beacon_off()
1849 if (IS_P3P_TYPE(ha)) in qla24xx_beacon_off()
1852 ha->beacon_blink_led = 0; in qla24xx_beacon_off()
1854 if (IS_QLA2031(ha) || IS_QLA27XX(ha)) in qla24xx_beacon_off()
1857 if (IS_QLA8031(ha) || IS_QLA81XX(ha)) in qla24xx_beacon_off()
1860 ha->beacon_color_state = QLA_LED_ALL_ON; in qla24xx_beacon_off()
1862 ha->isp_ops->beacon_blink(vha); /* Will flip to all off. */ in qla24xx_beacon_off()
1865 spin_lock_irqsave(&ha->hardware_lock, flags); in qla24xx_beacon_off()
1872 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla24xx_beacon_off()
1875 ha->fw_options[1] &= ~ADD_FO1_DISABLE_GPIO_LED_CTRL; in qla24xx_beacon_off()
1877 if (qla2x00_set_fw_options(vha, ha->fw_options) != QLA_SUCCESS) { in qla24xx_beacon_off()
1883 if (qla2x00_get_fw_options(vha, ha->fw_options) != QLA_SUCCESS) { in qla24xx_beacon_off()
1902 qla2x00_flash_enable(struct qla_hw_data *ha) in qla2x00_flash_enable() argument
1905 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_flash_enable()
1918 qla2x00_flash_disable(struct qla_hw_data *ha) in qla2x00_flash_disable() argument
1921 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_flash_disable()
1939 qla2x00_read_flash_byte(struct qla_hw_data *ha, uint32_t addr) in qla2x00_read_flash_byte() argument
1943 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_read_flash_byte()
1947 if (IS_QLA2322(ha) || IS_QLA6322(ha)) { in qla2x00_read_flash_byte()
1975 if (ha->pio_address) { in qla2x00_read_flash_byte()
1978 WRT_REG_WORD_PIO(PIO_REG(ha, flash_address), (uint16_t)addr); in qla2x00_read_flash_byte()
1980 data = RD_REG_WORD_PIO(PIO_REG(ha, flash_data)); in qla2x00_read_flash_byte()
1983 data2 = RD_REG_WORD_PIO(PIO_REG(ha, flash_data)); in qla2x00_read_flash_byte()
2000 qla2x00_write_flash_byte(struct qla_hw_data *ha, uint32_t addr, uint8_t data) in qla2x00_write_flash_byte() argument
2003 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_write_flash_byte()
2006 if (IS_QLA2322(ha) || IS_QLA6322(ha)) { in qla2x00_write_flash_byte()
2036 if (ha->pio_address) { in qla2x00_write_flash_byte()
2037 WRT_REG_WORD_PIO(PIO_REG(ha, flash_address), (uint16_t)addr); in qla2x00_write_flash_byte()
2038 WRT_REG_WORD_PIO(PIO_REG(ha, flash_data), (uint16_t)data); in qla2x00_write_flash_byte()
2063 qla2x00_poll_flash(struct qla_hw_data *ha, uint32_t addr, uint8_t poll_data, in qla2x00_poll_flash() argument
2075 flash_data = qla2x00_read_flash_byte(ha, addr); in qla2x00_poll_flash()
2103 qla2x00_program_flash_address(struct qla_hw_data *ha, uint32_t addr, in qla2x00_program_flash_address() argument
2107 if (IS_OEM_001(ha)) { in qla2x00_program_flash_address()
2108 qla2x00_write_flash_byte(ha, 0xaaa, 0xaa); in qla2x00_program_flash_address()
2109 qla2x00_write_flash_byte(ha, 0x555, 0x55); in qla2x00_program_flash_address()
2110 qla2x00_write_flash_byte(ha, 0xaaa, 0xa0); in qla2x00_program_flash_address()
2111 qla2x00_write_flash_byte(ha, addr, data); in qla2x00_program_flash_address()
2114 qla2x00_write_flash_byte(ha, addr, data); in qla2x00_program_flash_address()
2118 qla2x00_write_flash_byte(ha, 0x5555, 0xaa); in qla2x00_program_flash_address()
2119 qla2x00_write_flash_byte(ha, 0x2aaa, 0x55); in qla2x00_program_flash_address()
2120 qla2x00_write_flash_byte(ha, 0x5555, 0xa0); in qla2x00_program_flash_address()
2121 qla2x00_write_flash_byte(ha, addr, data); in qla2x00_program_flash_address()
2128 return qla2x00_poll_flash(ha, addr, data, man_id, flash_id); in qla2x00_program_flash_address()
2140 qla2x00_erase_flash(struct qla_hw_data *ha, uint8_t man_id, uint8_t flash_id) in qla2x00_erase_flash() argument
2143 if (IS_OEM_001(ha)) { in qla2x00_erase_flash()
2144 qla2x00_write_flash_byte(ha, 0xaaa, 0xaa); in qla2x00_erase_flash()
2145 qla2x00_write_flash_byte(ha, 0x555, 0x55); in qla2x00_erase_flash()
2146 qla2x00_write_flash_byte(ha, 0xaaa, 0x80); in qla2x00_erase_flash()
2147 qla2x00_write_flash_byte(ha, 0xaaa, 0xaa); in qla2x00_erase_flash()
2148 qla2x00_write_flash_byte(ha, 0x555, 0x55); in qla2x00_erase_flash()
2149 qla2x00_write_flash_byte(ha, 0xaaa, 0x10); in qla2x00_erase_flash()
2151 qla2x00_write_flash_byte(ha, 0x5555, 0xaa); in qla2x00_erase_flash()
2152 qla2x00_write_flash_byte(ha, 0x2aaa, 0x55); in qla2x00_erase_flash()
2153 qla2x00_write_flash_byte(ha, 0x5555, 0x80); in qla2x00_erase_flash()
2154 qla2x00_write_flash_byte(ha, 0x5555, 0xaa); in qla2x00_erase_flash()
2155 qla2x00_write_flash_byte(ha, 0x2aaa, 0x55); in qla2x00_erase_flash()
2156 qla2x00_write_flash_byte(ha, 0x5555, 0x10); in qla2x00_erase_flash()
2162 return qla2x00_poll_flash(ha, 0x00, 0x80, man_id, flash_id); in qla2x00_erase_flash()
2176 qla2x00_erase_flash_sector(struct qla_hw_data *ha, uint32_t addr, in qla2x00_erase_flash_sector() argument
2180 qla2x00_write_flash_byte(ha, 0x5555, 0xaa); in qla2x00_erase_flash_sector()
2181 qla2x00_write_flash_byte(ha, 0x2aaa, 0x55); in qla2x00_erase_flash_sector()
2182 qla2x00_write_flash_byte(ha, 0x5555, 0x80); in qla2x00_erase_flash_sector()
2183 qla2x00_write_flash_byte(ha, 0x5555, 0xaa); in qla2x00_erase_flash_sector()
2184 qla2x00_write_flash_byte(ha, 0x2aaa, 0x55); in qla2x00_erase_flash_sector()
2186 qla2x00_write_flash_byte(ha, addr & sec_mask, 0x10); in qla2x00_erase_flash_sector()
2188 qla2x00_write_flash_byte(ha, addr & sec_mask, 0x30); in qla2x00_erase_flash_sector()
2193 return qla2x00_poll_flash(ha, addr, 0x80, man_id, flash_id); in qla2x00_erase_flash_sector()
2202 qla2x00_get_flash_manufacturer(struct qla_hw_data *ha, uint8_t *man_id, in qla2x00_get_flash_manufacturer() argument
2205 qla2x00_write_flash_byte(ha, 0x5555, 0xaa); in qla2x00_get_flash_manufacturer()
2206 qla2x00_write_flash_byte(ha, 0x2aaa, 0x55); in qla2x00_get_flash_manufacturer()
2207 qla2x00_write_flash_byte(ha, 0x5555, 0x90); in qla2x00_get_flash_manufacturer()
2208 *man_id = qla2x00_read_flash_byte(ha, 0x0000); in qla2x00_get_flash_manufacturer()
2209 *flash_id = qla2x00_read_flash_byte(ha, 0x0001); in qla2x00_get_flash_manufacturer()
2210 qla2x00_write_flash_byte(ha, 0x5555, 0xaa); in qla2x00_get_flash_manufacturer()
2211 qla2x00_write_flash_byte(ha, 0x2aaa, 0x55); in qla2x00_get_flash_manufacturer()
2212 qla2x00_write_flash_byte(ha, 0x5555, 0xf0); in qla2x00_get_flash_manufacturer()
2216 qla2x00_read_flash_data(struct qla_hw_data *ha, uint8_t *tmp_buf, in qla2x00_read_flash_data() argument
2219 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_read_flash_data()
2232 data = qla2x00_read_flash_byte(ha, saddr); in qla2x00_read_flash_data()
2245 struct qla_hw_data *ha = vha->hw; in qla2x00_suspend_hba() local
2246 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_suspend_hba()
2250 ha->isp_ops->disable_intrs(ha); in qla2x00_suspend_hba()
2251 set_bit(MBX_UPDATE_FLASH_ACTIVE, &ha->mbx_cmd_flags); in qla2x00_suspend_hba()
2254 spin_lock_irqsave(&ha->hardware_lock, flags); in qla2x00_suspend_hba()
2257 if (IS_QLA2100(ha) || IS_QLA2200(ha) || IS_QLA2300(ha)) { in qla2x00_suspend_hba()
2266 spin_unlock_irqrestore(&ha->hardware_lock, flags); in qla2x00_suspend_hba()
2272 struct qla_hw_data *ha = vha->hw; in qla2x00_resume_hba() local
2275 clear_bit(MBX_UPDATE_FLASH_ACTIVE, &ha->mbx_cmd_flags); in qla2x00_resume_hba()
2288 struct qla_hw_data *ha = vha->hw; in qla2x00_read_optrom_data() local
2289 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_read_optrom_data()
2295 midpoint = ha->optrom_size / 2; in qla2x00_read_optrom_data()
2297 qla2x00_flash_enable(ha); in qla2x00_read_optrom_data()
2306 *data = qla2x00_read_flash_byte(ha, addr); in qla2x00_read_optrom_data()
2308 qla2x00_flash_disable(ha); in qla2x00_read_optrom_data()
2325 struct qla_hw_data *ha = vha->hw; in qla2x00_write_optrom_data() local
2326 struct device_reg_2xxx __iomem *reg = &ha->iobase->isp; in qla2x00_write_optrom_data()
2336 pci_read_config_word(ha->pdev, PCI_COMMAND, &wd); in qla2x00_write_optrom_data()
2339 qla2x00_flash_enable(ha); in qla2x00_write_optrom_data()
2342 if (IS_OEM_001(ha)) { in qla2x00_write_optrom_data()
2349 qla2x00_get_flash_manufacturer(ha, &man_id, &flash_id); in qla2x00_write_optrom_data()
2441 if (IS_QLA2322(ha) || IS_QLA6322(ha)) { in qla2x00_write_optrom_data()
2442 if (qla2x00_erase_flash(ha, man_id, flash_id)) { in qla2x00_write_optrom_data()
2453 if (IS_QLA2322(ha) || IS_QLA6322(ha)) { in qla2x00_write_optrom_data()
2482 } else if (addr == ha->optrom_size / 2) { in qla2x00_write_optrom_data()
2488 qla2x00_write_flash_byte(ha, 0x5555, in qla2x00_write_optrom_data()
2490 qla2x00_write_flash_byte(ha, 0x2aaa, in qla2x00_write_optrom_data()
2492 qla2x00_write_flash_byte(ha, 0x5555, in qla2x00_write_optrom_data()
2494 } else if (!IS_QLA2322(ha) && !IS_QLA6322(ha)) { in qla2x00_write_optrom_data()
2496 if (qla2x00_erase_flash_sector(ha, in qla2x00_write_optrom_data()
2518 if (qla2x00_program_flash_address(ha, addr, data, in qla2x00_write_optrom_data()
2526 qla2x00_flash_disable(ha); in qla2x00_write_optrom_data()
2538 struct qla_hw_data *ha = vha->hw; in qla24xx_read_optrom_data() local
2542 set_bit(MBX_UPDATE_FLASH_ACTIVE, &ha->mbx_cmd_flags); in qla24xx_read_optrom_data()
2548 clear_bit(MBX_UPDATE_FLASH_ACTIVE, &ha->mbx_cmd_flags); in qla24xx_read_optrom_data()
2559 struct qla_hw_data *ha = vha->hw; in qla24xx_write_optrom_data() local
2563 set_bit(MBX_UPDATE_FLASH_ACTIVE, &ha->mbx_cmd_flags); in qla24xx_write_optrom_data()
2569 clear_bit(MBX_UPDATE_FLASH_ACTIVE, &ha->mbx_cmd_flags); in qla24xx_write_optrom_data()
2584 struct qla_hw_data *ha = vha->hw; in qla25xx_read_optrom_data() local
2586 if (IS_QLA25XX(ha) || IS_QLA81XX(ha) || IS_QLA83XX(ha) || in qla25xx_read_optrom_data()
2587 IS_QLA27XX(ha)) in qla25xx_read_optrom_data()
2595 optrom = dma_alloc_coherent(&ha->pdev->dev, OPTROM_BURST_SIZE, in qla25xx_read_optrom_data()
2613 flash_data_addr(ha, faddr), burst); in qla25xx_read_optrom_data()
2617 rval, flash_data_addr(ha, faddr), in qla25xx_read_optrom_data()
2622 dma_free_coherent(&ha->pdev->dev, OPTROM_BURST_SIZE, in qla25xx_read_optrom_data()
2634 dma_free_coherent(&ha->pdev->dev, OPTROM_BURST_SIZE, optrom, in qla25xx_read_optrom_data()
2662 qla2x00_get_fcode_version(struct qla_hw_data *ha, uint32_t pcids) in qla2x00_get_fcode_version() argument
2668 memset(ha->fcode_revision, 0, sizeof(ha->fcode_revision)); in qla2x00_get_fcode_version()
2672 ((qla2x00_read_flash_byte(ha, pcids + 0x0B) << 8) | in qla2x00_get_fcode_version()
2673 qla2x00_read_flash_byte(ha, pcids + 0x0A)); in qla2x00_get_fcode_version()
2681 if (qla2x00_read_flash_byte(ha, iter) == '/') { in qla2x00_get_fcode_version()
2682 if (qla2x00_read_flash_byte(ha, iter + 2) == in qla2x00_get_fcode_version()
2685 else if (qla2x00_read_flash_byte(ha, in qla2x00_get_fcode_version()
2697 if (qla2x00_read_flash_byte(ha, iter) == ' ') in qla2x00_get_fcode_version()
2711 rbyte = qla2x00_read_flash_byte(ha, iter); in qla2x00_get_fcode_version()
2721 ((vend - iter) < sizeof(ha->fcode_revision))) { in qla2x00_get_fcode_version()
2722 vbyte = ha->fcode_revision; in qla2x00_get_fcode_version()
2724 *vbyte++ = qla2x00_read_flash_byte(ha, iter); in qla2x00_get_fcode_version()
2732 memset(ha->fcode_revision, 0, sizeof(ha->fcode_revision)); in qla2x00_get_fcode_version()
2743 struct qla_hw_data *ha = vha->hw; in qla2x00_get_flash_version() local
2745 if (!ha->pio_address || !mbuf) in qla2x00_get_flash_version()
2748 memset(ha->bios_revision, 0, sizeof(ha->bios_revision)); in qla2x00_get_flash_version()
2749 memset(ha->efi_revision, 0, sizeof(ha->efi_revision)); in qla2x00_get_flash_version()
2750 memset(ha->fcode_revision, 0, sizeof(ha->fcode_revision)); in qla2x00_get_flash_version()
2751 memset(ha->fw_revision, 0, sizeof(ha->fw_revision)); in qla2x00_get_flash_version()
2753 qla2x00_flash_enable(ha); in qla2x00_get_flash_version()
2760 if (qla2x00_read_flash_byte(ha, pcihdr) != 0x55 || in qla2x00_get_flash_version()
2761 qla2x00_read_flash_byte(ha, pcihdr + 0x01) != 0xaa) { in qla2x00_get_flash_version()
2771 ((qla2x00_read_flash_byte(ha, pcihdr + 0x19) << 8) | in qla2x00_get_flash_version()
2772 qla2x00_read_flash_byte(ha, pcihdr + 0x18)); in qla2x00_get_flash_version()
2775 if (qla2x00_read_flash_byte(ha, pcids) != 'P' || in qla2x00_get_flash_version()
2776 qla2x00_read_flash_byte(ha, pcids + 0x1) != 'C' || in qla2x00_get_flash_version()
2777 qla2x00_read_flash_byte(ha, pcids + 0x2) != 'I' || in qla2x00_get_flash_version()
2778 qla2x00_read_flash_byte(ha, pcids + 0x3) != 'R') { in qla2x00_get_flash_version()
2787 code_type = qla2x00_read_flash_byte(ha, pcids + 0x14); in qla2x00_get_flash_version()
2791 ha->bios_revision[0] = in qla2x00_get_flash_version()
2792 qla2x00_read_flash_byte(ha, pcids + 0x12); in qla2x00_get_flash_version()
2793 ha->bios_revision[1] = in qla2x00_get_flash_version()
2794 qla2x00_read_flash_byte(ha, pcids + 0x13); in qla2x00_get_flash_version()
2797 ha->bios_revision[1], ha->bios_revision[0]); in qla2x00_get_flash_version()
2802 qla2x00_get_fcode_version(ha, pcids); in qla2x00_get_flash_version()
2806 ha->efi_revision[0] = in qla2x00_get_flash_version()
2807 qla2x00_read_flash_byte(ha, pcids + 0x12); in qla2x00_get_flash_version()
2808 ha->efi_revision[1] = in qla2x00_get_flash_version()
2809 qla2x00_read_flash_byte(ha, pcids + 0x13); in qla2x00_get_flash_version()
2812 ha->efi_revision[1], ha->efi_revision[0]); in qla2x00_get_flash_version()
2821 last_image = qla2x00_read_flash_byte(ha, pcids + 0x15) & BIT_7; in qla2x00_get_flash_version()
2824 pcihdr += ((qla2x00_read_flash_byte(ha, pcids + 0x11) << 8) | in qla2x00_get_flash_version()
2825 qla2x00_read_flash_byte(ha, pcids + 0x10)) * 512; in qla2x00_get_flash_version()
2828 if (IS_QLA2322(ha)) { in qla2x00_get_flash_version()
2830 memset(ha->fw_revision, 0, sizeof(ha->fw_revision)); in qla2x00_get_flash_version()
2835 qla2x00_read_flash_data(ha, dbyte, ha->flt_region_fw * 4 + 10, in qla2x00_get_flash_version()
2849 ha->flt_region_fw * 4); in qla2x00_get_flash_version()
2852 ha->fw_revision[0] = dbyte[0] << 16 | dbyte[1]; in qla2x00_get_flash_version()
2853 ha->fw_revision[1] = dbyte[2] << 16 | dbyte[3]; in qla2x00_get_flash_version()
2854 ha->fw_revision[2] = dbyte[4] << 16 | dbyte[5]; in qla2x00_get_flash_version()
2857 "%d.%d.%d.\n", ha->fw_revision[0], in qla2x00_get_flash_version()
2858 ha->fw_revision[1], ha->fw_revision[2]); in qla2x00_get_flash_version()
2862 qla2x00_flash_disable(ha); in qla2x00_get_flash_version()
2875 struct qla_hw_data *ha = vha->hw; in qla82xx_get_flash_version() local
2880 memset(ha->bios_revision, 0, sizeof(ha->bios_revision)); in qla82xx_get_flash_version()
2881 memset(ha->efi_revision, 0, sizeof(ha->efi_revision)); in qla82xx_get_flash_version()
2882 memset(ha->fcode_revision, 0, sizeof(ha->fcode_revision)); in qla82xx_get_flash_version()
2883 memset(ha->fw_revision, 0, sizeof(ha->fw_revision)); in qla82xx_get_flash_version()
2888 pcihdr = ha->flt_region_boot << 2; in qla82xx_get_flash_version()
2892 ha->isp_ops->read_optrom(vha, (uint8_t *)dcode, pcihdr, in qla82xx_get_flash_version()
2906 ha->isp_ops->read_optrom(vha, (uint8_t *)dcode, pcids, in qla82xx_get_flash_version()
2925 ha->bios_revision[0] = bcode[0x12]; in qla82xx_get_flash_version()
2926 ha->bios_revision[1] = bcode[0x13]; in qla82xx_get_flash_version()
2929 ha->bios_revision[1], ha->bios_revision[0]); in qla82xx_get_flash_version()
2933 ha->fcode_revision[0] = bcode[0x12]; in qla82xx_get_flash_version()
2934 ha->fcode_revision[1] = bcode[0x13]; in qla82xx_get_flash_version()
2937 ha->fcode_revision[1], ha->fcode_revision[0]); in qla82xx_get_flash_version()
2941 ha->efi_revision[0] = bcode[0x12]; in qla82xx_get_flash_version()
2942 ha->efi_revision[1] = bcode[0x13]; in qla82xx_get_flash_version()
2945 ha->efi_revision[1], ha->efi_revision[0]); in qla82xx_get_flash_version()
2961 memset(ha->fw_revision, 0, sizeof(ha->fw_revision)); in qla82xx_get_flash_version()
2963 ha->isp_ops->read_optrom(vha, (uint8_t *)dcode, ha->flt_region_fw << 2, in qla82xx_get_flash_version()
2970 ha->fw_revision[0] = bcode[0x4]; in qla82xx_get_flash_version()
2971 ha->fw_revision[1] = bcode[0x5]; in qla82xx_get_flash_version()
2972 ha->fw_revision[2] = bcode[0x6]; in qla82xx_get_flash_version()
2975 ha->fw_revision[0], ha->fw_revision[1], in qla82xx_get_flash_version()
2976 ha->fw_revision[2]); in qla82xx_get_flash_version()
2991 struct qla_hw_data *ha = vha->hw; in qla24xx_get_flash_version() local
2993 if (IS_P3P_TYPE(ha)) in qla24xx_get_flash_version()
2999 memset(ha->bios_revision, 0, sizeof(ha->bios_revision)); in qla24xx_get_flash_version()
3000 memset(ha->efi_revision, 0, sizeof(ha->efi_revision)); in qla24xx_get_flash_version()
3001 memset(ha->fcode_revision, 0, sizeof(ha->fcode_revision)); in qla24xx_get_flash_version()
3002 memset(ha->fw_revision, 0, sizeof(ha->fw_revision)); in qla24xx_get_flash_version()
3007 pcihdr = ha->flt_region_boot << 2; in qla24xx_get_flash_version()
3042 ha->bios_revision[0] = bcode[0x12]; in qla24xx_get_flash_version()
3043 ha->bios_revision[1] = bcode[0x13]; in qla24xx_get_flash_version()
3046 ha->bios_revision[1], ha->bios_revision[0]); in qla24xx_get_flash_version()
3050 ha->fcode_revision[0] = bcode[0x12]; in qla24xx_get_flash_version()
3051 ha->fcode_revision[1] = bcode[0x13]; in qla24xx_get_flash_version()
3054 ha->fcode_revision[1], ha->fcode_revision[0]); in qla24xx_get_flash_version()
3058 ha->efi_revision[0] = bcode[0x12]; in qla24xx_get_flash_version()
3059 ha->efi_revision[1] = bcode[0x13]; in qla24xx_get_flash_version()
3062 ha->efi_revision[1], ha->efi_revision[0]); in qla24xx_get_flash_version()
3078 memset(ha->fw_revision, 0, sizeof(ha->fw_revision)); in qla24xx_get_flash_version()
3081 qla24xx_read_flash_data(vha, dcode, ha->flt_region_fw + 4, 4); in qla24xx_get_flash_version()
3091 ha->flt_region_fw * 4); in qla24xx_get_flash_version()
3093 ha->fw_revision[0] = dcode[0]; in qla24xx_get_flash_version()
3094 ha->fw_revision[1] = dcode[1]; in qla24xx_get_flash_version()
3095 ha->fw_revision[2] = dcode[2]; in qla24xx_get_flash_version()
3096 ha->fw_revision[3] = dcode[3]; in qla24xx_get_flash_version()
3099 ha->fw_revision[0], ha->fw_revision[1], in qla24xx_get_flash_version()
3100 ha->fw_revision[2], ha->fw_revision[3]); in qla24xx_get_flash_version()
3104 if (!IS_QLA81XX(ha)) { in qla24xx_get_flash_version()
3109 memset(ha->gold_fw_version, 0, sizeof(ha->gold_fw_version)); in qla24xx_get_flash_version()
3111 ha->isp_ops->read_optrom(vha, (uint8_t *)dcode, in qla24xx_get_flash_version()
3112 ha->flt_region_gold_fw << 2, 32); in qla24xx_get_flash_version()
3118 ha->flt_region_gold_fw * 4); in qla24xx_get_flash_version()
3123 ha->gold_fw_version[i-4] = be32_to_cpu(dcode[i]); in qla24xx_get_flash_version()
3148 struct qla_hw_data *ha = vha->hw; in qla2xxx_get_vpd_field() local
3149 uint8_t *pos = ha->vpd; in qla2xxx_get_vpd_field()
3150 uint8_t *end = pos + ha->vpd_size; in qla2xxx_get_vpd_field()
3153 if (!IS_FWI2_CAPABLE(ha) || !qla2xxx_is_vpd_valid(pos, end)) in qla2xxx_get_vpd_field()
3179 struct qla_hw_data *ha = vha->hw; in qla24xx_read_fcp_prio_cfg() local
3181 if (!ha->fcp_prio_cfg) { in qla24xx_read_fcp_prio_cfg()
3182 ha->fcp_prio_cfg = vmalloc(FCP_PRIO_CFG_SIZE); in qla24xx_read_fcp_prio_cfg()
3183 if (!ha->fcp_prio_cfg) { in qla24xx_read_fcp_prio_cfg()
3190 memset(ha->fcp_prio_cfg, 0, FCP_PRIO_CFG_SIZE); in qla24xx_read_fcp_prio_cfg()
3192 fcp_prio_addr = ha->flt_region_fcp_prio; in qla24xx_read_fcp_prio_cfg()
3195 ha->isp_ops->read_optrom(vha, (uint8_t *)ha->fcp_prio_cfg, in qla24xx_read_fcp_prio_cfg()
3198 if (!qla24xx_fcp_prio_cfg_valid(vha, ha->fcp_prio_cfg, 0)) in qla24xx_read_fcp_prio_cfg()
3203 len = ha->fcp_prio_cfg->num_entries * FCP_PRIO_CFG_ENTRY_SIZE; in qla24xx_read_fcp_prio_cfg()
3206 ha->isp_ops->read_optrom(vha, (uint8_t *)&ha->fcp_prio_cfg->entry[0], in qla24xx_read_fcp_prio_cfg()
3210 if (!qla24xx_fcp_prio_cfg_valid(vha, ha->fcp_prio_cfg, 1)) in qla24xx_read_fcp_prio_cfg()
3213 ha->flags.fcp_prio_enabled = 1; in qla24xx_read_fcp_prio_cfg()
3216 vfree(ha->fcp_prio_cfg); in qla24xx_read_fcp_prio_cfg()
3217 ha->fcp_prio_cfg = NULL; in qla24xx_read_fcp_prio_cfg()