Lines Matching +full:0 +full:x2000
35 wrt_reg_word(®->u.isp2300.host_semaphore, 0x1); in qla2x00_lock_nvram_access()
39 while ((data & BIT_0) == 0) { in qla2x00_lock_nvram_access()
42 wrt_reg_word(®->u.isp2300.host_semaphore, 0x1); in qla2x00_lock_nvram_access()
60 wrt_reg_word(®->u.isp2300.host_semaphore, 0); in qla2x00_unlock_nvram_access()
98 * Bit 15-0 = write data
107 uint16_t data = 0; in qla2x00_nvram_request()
112 for (cnt = 0; cnt < 11; cnt++) { in qla2x00_nvram_request()
116 qla2x00_nv_write(ha, 0); in qla2x00_nvram_request()
121 for (cnt = 0; cnt < 16; cnt++) { in qla2x00_nvram_request()
194 qla2x00_nv_write(ha, 0); in qla2x00_write_nvram_word()
195 qla2x00_nv_write(ha, 0); in qla2x00_write_nvram_word()
197 for (word = 0; word < 8; word++) in qla2x00_write_nvram_word()
206 for (count = 0; count < 27; count++) { in qla2x00_write_nvram_word()
210 qla2x00_nv_write(ha, 0); in qla2x00_write_nvram_word()
223 ql_dbg(ql_dbg_user, vha, 0x708d, in qla2x00_write_nvram_word()
229 } while ((word & NVR_DATA_IN) == 0); in qla2x00_write_nvram_word()
235 for (count = 0; count < 10; count++) in qla2x00_write_nvram_word()
236 qla2x00_nv_write(ha, 0); in qla2x00_write_nvram_word()
253 qla2x00_nv_write(ha, 0); in qla2x00_write_nvram_word_tmo()
254 qla2x00_nv_write(ha, 0); in qla2x00_write_nvram_word_tmo()
256 for (word = 0; word < 8; word++) in qla2x00_write_nvram_word_tmo()
265 for (count = 0; count < 27; count++) { in qla2x00_write_nvram_word_tmo()
269 qla2x00_nv_write(ha, 0); in qla2x00_write_nvram_word_tmo()
286 } while ((word & NVR_DATA_IN) == 0); in qla2x00_write_nvram_word_tmo()
292 for (count = 0; count < 10; count++) in qla2x00_write_nvram_word_tmo()
293 qla2x00_nv_write(ha, 0); in qla2x00_write_nvram_word_tmo()
318 cpu_to_le16(0x1234), 100000); in qla2x00_clear_nvram_protection()
320 if (stat != QLA_SUCCESS || wprot != cpu_to_le16(0x1234)) { in qla2x00_clear_nvram_protection()
323 qla2x00_nv_write(ha, 0); in qla2x00_clear_nvram_protection()
324 qla2x00_nv_write(ha, 0); in qla2x00_clear_nvram_protection()
325 for (word = 0; word < 8; word++) in qla2x00_clear_nvram_protection()
334 for (word = 0; word < 8; word++) in qla2x00_clear_nvram_protection()
343 for (word = 0; word < 8; word++) in qla2x00_clear_nvram_protection()
354 ql_dbg(ql_dbg_user, vha, 0x708e, in qla2x00_clear_nvram_protection()
360 } while ((word & NVR_DATA_IN) == 0); in qla2x00_clear_nvram_protection()
383 qla2x00_nv_write(ha, 0); in qla2x00_set_nvram_protection()
384 qla2x00_nv_write(ha, 0); in qla2x00_set_nvram_protection()
385 for (word = 0; word < 8; word++) in qla2x00_set_nvram_protection()
394 for (word = 0; word < 8; word++) in qla2x00_set_nvram_protection()
403 for (word = 0; word < 8; word++) in qla2x00_set_nvram_protection()
414 ql_dbg(ql_dbg_user, vha, 0x708f, in qla2x00_set_nvram_protection()
420 } while ((word & NVR_DATA_IN) == 0); in qla2x00_set_nvram_protection()
469 ql_log(ql_log_warn, pci_get_drvdata(ha->pdev), 0x7090, in qla24xx_read_flash_dword()
471 *data = 0xDEADDEAD; in qla24xx_read_flash_dword()
485 for (i = 0; i < dwords; i++, faddr++, dwptr++) { in qla24xx_read_flash_data()
511 ql_log(ql_log_warn, pci_get_drvdata(ha->pdev), 0x7090, in qla24xx_write_flash_dword()
520 uint32_t faddr, ids = 0; in qla24xx_get_flash_manufacturer()
522 *man_id = *flash_id = 0; in qla24xx_get_flash_manufacturer()
524 faddr = flash_conf_addr(ha, 0x03ab); in qla24xx_get_flash_manufacturer()
531 if (ids != 0xDEADDEAD && (*man_id == 0 || *flash_id == 0)) { in qla24xx_get_flash_manufacturer()
532 /* Read information using 0x9f opcode in qla24xx_get_flash_manufacturer()
535 * Example: ATMEL 0x00 01 45 1F in qla24xx_get_flash_manufacturer()
538 faddr = flash_conf_addr(ha, 0x009f); in qla24xx_get_flash_manufacturer()
554 struct req_que *req = ha->req_q_map[0]; in qla2xxx_find_flt_start()
564 loc = locations[0]; in qla2xxx_find_flt_start()
565 *start = 0; in qla2xxx_find_flt_start()
584 pcihdr = 0; in qla2xxx_find_flt_start()
587 qla24xx_read_flash_data(vha, dcode, pcihdr >> 2, 0x20); in qla2xxx_find_flt_start()
589 if (bcode[0x0] != 0x55 || bcode[0x1] != 0xaa) in qla2xxx_find_flt_start()
593 pcids = pcihdr + ((bcode[0x19] << 8) | bcode[0x18]); in qla2xxx_find_flt_start()
594 qla24xx_read_flash_data(vha, dcode, pcids >> 2, 0x20); in qla2xxx_find_flt_start()
598 if (bcode[0x0] != 'P' || bcode[0x1] != 'C' || in qla2xxx_find_flt_start()
599 bcode[0x2] != 'I' || bcode[0x3] != 'R') in qla2xxx_find_flt_start()
602 last_image = bcode[0x15] & BIT_7; in qla2xxx_find_flt_start()
605 pcihdr += ((bcode[0x11] << 8) | bcode[0x10]) * 512; in qla2xxx_find_flt_start()
615 for (chksum = 0; cnt--; wptr++) in qla2xxx_find_flt_start()
618 ql_log(ql_log_fatal, vha, 0x0045, in qla2xxx_find_flt_start()
619 "Inconsistent FLTL detected: checksum=0x%x.\n", chksum); in qla2xxx_find_flt_start()
620 ql_dump_buffer(ql_dbg_init + ql_dbg_buffer, vha, 0x010e, in qla2xxx_find_flt_start()
630 ql_dbg(ql_dbg_init, vha, 0x0046, in qla2xxx_find_flt_start()
631 "FLTL[%s] = 0x%x.\n", in qla2xxx_find_flt_start()
647 { 0, 0, FA_VPD0_ADDR_81 }; in qla2xxx_get_flt_info()
649 { 0, 0, FA_VPD1_ADDR_81 }; in qla2xxx_get_flt_info()
651 { 0, 0, FA_NVRAM0_ADDR_81 }; in qla2xxx_get_flt_info()
653 { 0, 0, FA_NVRAM1_ADDR_81 }; in qla2xxx_get_flt_info()
665 0 }; in qla2xxx_get_flt_info()
668 0 }; in qla2xxx_get_flt_info()
671 uint32_t def = IS_QLA81XX(ha) ? 2 : IS_QLA25XX(ha) ? 1 : 0; in qla2xxx_get_flt_info()
673 struct qla_flt_region *region = &flt->region[0]; in qla2xxx_get_flt_info()
681 ha->flt_region_fcp_prio = (ha->port_no == 0) ? in qla2xxx_get_flt_info()
689 if (le16_to_cpu(*wptr) == 0xffff) in qla2xxx_get_flt_info()
692 ql_log(ql_log_warn, vha, 0x0047, in qla2xxx_get_flt_info()
693 "Unsupported FLT detected: version=0x%x length=0x%x checksum=0x%x.\n", in qla2xxx_get_flt_info()
700 for (chksum = 0; cnt--; wptr++) in qla2xxx_get_flt_info()
703 ql_log(ql_log_fatal, vha, 0x0048, in qla2xxx_get_flt_info()
704 "Inconsistent FLT detected: version=0x%x length=0x%x checksum=0x%x.\n", in qla2xxx_get_flt_info()
714 ql_dbg(ql_dbg_init, vha, 0x0049, in qla2xxx_get_flt_info()
720 ql_log(ql_dbg_init, vha, 0xffff, in qla2xxx_get_flt_info()
743 if (ha->port_no == 0) in qla2xxx_get_flt_info()
767 if (ha->port_no == 0) in qla2xxx_get_flt_info()
792 if (ha->port_no == 0) in qla2xxx_get_flt_info()
803 if (ha->port_no == 0) in qla2xxx_get_flt_info()
837 if (ha->port_no == 0) in qla2xxx_get_flt_info()
872 if (ha->port_no == 0) in qla2xxx_get_flt_info()
894 if (ha->port_no == 0) in qla2xxx_get_flt_info()
922 loc = locations[0]; in qla2xxx_get_flt_info()
926 ha->flt_region_vpd = (ha->port_no == 0) ? in qla2xxx_get_flt_info()
928 ha->flt_region_nvram = (ha->port_no == 0) ? in qla2xxx_get_flt_info()
931 ha->flt_region_npiv_conf = (ha->port_no == 0) ? in qla2xxx_get_flt_info()
934 ql_dbg(ql_dbg_init, vha, 0x004a, in qla2xxx_get_flt_info()
935 "FLT[%s]: boot=0x%x fw=0x%x vpd_nvram=0x%x vpd=0x%x nvram=0x%x " in qla2xxx_get_flt_info()
936 "fdt=0x%x flt=0x%x npiv=0x%x fcp_prif_cfg=0x%x.\n", in qla2xxx_get_flt_info()
946 #define FLASH_BLK_SIZE_4K 0x1000 in qla2xxx_get_fdt_info()
947 #define FLASH_BLK_SIZE_32K 0x8000 in qla2xxx_get_fdt_info()
948 #define FLASH_BLK_SIZE_64K 0x10000 in qla2xxx_get_fdt_info()
951 struct req_que *req = ha->req_q_map[0]; in qla2xxx_get_fdt_info()
956 uint16_t mid = 0, fid = 0; in qla2xxx_get_fdt_info()
960 if (le16_to_cpu(*wptr) == 0xffff) in qla2xxx_get_fdt_info()
965 for (cnt = 0, chksum = 0; cnt < sizeof(*fdt) >> 1; cnt++, wptr++) in qla2xxx_get_fdt_info()
968 ql_dbg(ql_dbg_init, vha, 0x004c, in qla2xxx_get_fdt_info()
970 " checksum=0x%x id=%c version0x%x.\n", chksum, in qla2xxx_get_fdt_info()
971 fdt->sig[0], le16_to_cpu(fdt->version)); in qla2xxx_get_fdt_info()
972 ql_dump_buffer(ql_dbg_init + ql_dbg_buffer, vha, 0x0113, in qla2xxx_get_fdt_info()
987 flash_conf_addr(ha, 0x0300 | fdt->erase_cmd); in qla2xxx_get_fdt_info()
990 ha->fdt_unprotect_sec_cmd = flash_conf_addr(ha, 0x0300 | in qla2xxx_get_fdt_info()
993 flash_conf_addr(ha, 0x0300 | fdt->protect_sec_cmd) : in qla2xxx_get_fdt_info()
994 flash_conf_addr(ha, 0x0336); in qla2xxx_get_fdt_info()
998 loc = locations[0]; in qla2xxx_get_fdt_info()
1006 ha->fdt_wrt_disable = 0x9c; in qla2xxx_get_fdt_info()
1007 ha->fdt_erase_cmd = flash_conf_addr(ha, 0x03d8); in qla2xxx_get_fdt_info()
1009 case 0xbf: /* STT flash. */ in qla2xxx_get_fdt_info()
1010 if (flash_id == 0x8e) in qla2xxx_get_fdt_info()
1015 if (flash_id == 0x80) in qla2xxx_get_fdt_info()
1016 ha->fdt_erase_cmd = flash_conf_addr(ha, 0x0352); in qla2xxx_get_fdt_info()
1018 case 0x13: /* ST M25P80. */ in qla2xxx_get_fdt_info()
1021 case 0x1f: /* Atmel 26DF081A. */ in qla2xxx_get_fdt_info()
1023 ha->fdt_erase_cmd = flash_conf_addr(ha, 0x0320); in qla2xxx_get_fdt_info()
1024 ha->fdt_unprotect_sec_cmd = flash_conf_addr(ha, 0x0339); in qla2xxx_get_fdt_info()
1025 ha->fdt_protect_sec_cmd = flash_conf_addr(ha, 0x0336); in qla2xxx_get_fdt_info()
1033 ql_dbg(ql_dbg_init, vha, 0x004d, in qla2xxx_get_fdt_info()
1034 "FDT[%s]: (0x%x/0x%x) erase=0x%x " in qla2xxx_get_fdt_info()
1035 "pr=%x wrtd=0x%x blk=0x%x.\n", in qla2xxx_get_fdt_info()
1045 #define QLA82XX_IDC_PARAM_ADDR 0x003e885c in qla2xxx_get_idc_param()
1048 struct req_que *req = ha->req_q_map[0]; in qla2xxx_get_idc_param()
1056 if (*wptr == cpu_to_le32(0xffffffff)) { in qla2xxx_get_idc_param()
1064 ql_dbg(ql_dbg_init, vha, 0x004e, in qla2xxx_get_idc_param()
1118 if (hdr.version == cpu_to_le16(0xffff)) in qla2xxx_flash_npiv_conf()
1121 ql_dbg(ql_dbg_user, vha, 0x7090, in qla2xxx_flash_npiv_conf()
1123 "detected: version=0x%x entries=0x%x checksum=0x%x.\n", in qla2xxx_flash_npiv_conf()
1131 ql_log(ql_log_warn, vha, 0x7091, in qla2xxx_flash_npiv_conf()
1140 for (wptr = data, chksum = 0; cnt--; wptr++) in qla2xxx_flash_npiv_conf()
1143 ql_dbg(ql_dbg_user, vha, 0x7092, in qla2xxx_flash_npiv_conf()
1145 "detected: version=0x%x entries=0x%x checksum=0x%x.\n", in qla2xxx_flash_npiv_conf()
1153 for (i = 0; cnt; cnt--, entry++, i++) { in qla2xxx_flash_npiv_conf()
1161 if (flags == 0xffff) in qla2xxx_flash_npiv_conf()
1163 if ((flags & BIT_0) == 0) in qla2xxx_flash_npiv_conf()
1166 memset(&vid, 0, sizeof(vid)); in qla2xxx_flash_npiv_conf()
1173 ql_dbg(ql_dbg_user, vha, 0x7093, in qla2xxx_flash_npiv_conf()
1180 vport = fc_vport_create(vha->host, 0, &vid); in qla2xxx_flash_npiv_conf()
1182 ql_log(ql_log_warn, vha, 0x7094, in qla2xxx_flash_npiv_conf()
1209 qla24xx_write_flash_dword(ha, flash_conf_addr(ha, 0x101), 0); in qla24xx_unprotect_flash()
1211 qla24xx_write_flash_dword(ha, flash_conf_addr(ha, 0x101), 0); in qla24xx_unprotect_flash()
1225 return qla81xx_fac_do_write_enable(vha, 0); in qla24xx_protect_flash()
1231 faddr = flash_conf_addr(ha, 0x101); in qla24xx_protect_flash()
1233 faddr = flash_conf_addr(ha, 0x5); in qla24xx_protect_flash()
1264 (fdata & 0xff00) | ((fdata << 16) & 0xff0000) | in qla24xx_erase_sector()
1265 ((fdata >> 16) & 0xff)); in qla24xx_erase_sector()
1288 ql_log(ql_log_warn, vha, 0x7095, in qla24xx_write_flash_data()
1293 ql_log(ql_log_warn + ql_dbg_verbose, vha, 0x7095, in qla24xx_write_flash_data()
1297 ql_log(ql_log_warn, vha, 0x7096, in qla24xx_write_flash_data()
1304 for (liter = 0; liter < dwords; liter++, faddr++, dwptr++) { in qla24xx_write_flash_data()
1309 ql_log(ql_log_warn + ql_dbg_verbose, vha, 0x7095, in qla24xx_write_flash_data()
1314 ql_dbg(ql_dbg_user, vha, 0x7007, in qla24xx_write_flash_data()
1329 ql_log(ql_log_warn + ql_dbg_verbose, vha, 0x7095, in qla24xx_write_flash_data()
1340 ql_log(ql_log_warn, vha, 0x7097, in qla24xx_write_flash_data()
1350 ql_log(ql_log_warn, vha, 0x7098, in qla24xx_write_flash_data()
1358 ql_dbg(ql_dbg_user, vha, 0x7006, in qla24xx_write_flash_data()
1364 ql_log(ql_log_warn + ql_dbg_verbose, vha, 0x7095, in qla24xx_write_flash_data()
1368 ql_log(ql_log_warn, vha, 0x7099, in qla24xx_write_flash_data()
1389 for (i = 0; i < bytes >> 1; i++, naddr++) in qla2x00_read_nvram_data()
1411 for (i = 0; i < bytes; i++, naddr++, dwptr++) { in qla24xx_read_nvram_data()
1439 for (i = 0; i < bytes >> 1; i++, naddr++) { in qla2x00_write_nvram_data()
1475 qla24xx_write_flash_dword(ha, nvram_conf_addr(ha, 0x101), 0); in qla24xx_write_nvram_data()
1476 qla24xx_write_flash_dword(ha, nvram_conf_addr(ha, 0x101), 0); in qla24xx_write_nvram_data()
1481 for (i = 0; i < bytes; i++, naddr++, dwptr++) { in qla24xx_write_nvram_data()
1483 ql_dbg(ql_dbg_user, vha, 0x709a, in qla24xx_write_nvram_data()
1491 qla24xx_write_flash_dword(ha, nvram_conf_addr(ha, 0x101), 0x8c); in qla24xx_write_nvram_data()
1512 for (i = 0; i < bytes; i++, naddr++, dwptr++) { in qla25xx_read_nvram_data()
1549 ha->beacon_color_state = 0; in qla2x00_flip_colors()
1560 ha->beacon_color_state = 0; in qla2x00_flip_colors()
1577 uint16_t led_color = 0; in qla2x00_beacon_blink()
1638 ql_log(ql_log_warn, vha, 0x709b, in qla2x00_beacon_on()
1677 ha->beacon_color_state = 0; in qla2x00_beacon_on()
1688 ha->beacon_blink_led = 0; in qla2x00_beacon_off()
1703 ql_log(ql_log_warn, vha, 0x709c, in qla2x00_beacon_off()
1715 ha->beacon_color_state = 0; in qla24xx_flip_colors()
1716 *pflags = 0; in qla24xx_flip_colors()
1727 uint16_t led_color = 0; in qla24xx_beacon_blink()
1761 uint32_t led_select_value = 0; in qla83xx_select_led_port()
1766 if (ha->port_no == 0) in qla83xx_select_led_port()
1792 qla2x00_write_ram_word(vha, 0x1003, 0x40000230); in qla83xx_beacon_blink()
1793 qla2x00_write_ram_word(vha, 0x1004, 0x40000230); in qla83xx_beacon_blink()
1797 qla83xx_wr_reg(vha, led_select_value, 0x40000230); in qla83xx_beacon_blink()
1798 qla83xx_wr_reg(vha, led_select_value + 4, 0x40000230); in qla83xx_beacon_blink()
1803 qla83xx_rd_reg(vha, led_select_value + 0x10, &led_43_value); in qla83xx_beacon_blink()
1804 qla83xx_wr_reg(vha, led_select_value, 0x01f44000); in qla83xx_beacon_blink()
1806 qla83xx_wr_reg(vha, led_select_value, 0x400001f4); in qla83xx_beacon_blink()
1809 qla83xx_wr_reg(vha, led_select_value + 0x10, led_43_value); in qla83xx_beacon_blink()
1818 led_cfg[0] = 0x4000; in qla83xx_beacon_blink()
1819 led_cfg[1] = 0x2000; in qla83xx_beacon_blink()
1820 led_cfg[2] = 0; in qla83xx_beacon_blink()
1821 led_cfg[3] = 0; in qla83xx_beacon_blink()
1822 led_cfg[4] = 0; in qla83xx_beacon_blink()
1823 led_cfg[5] = 0; in qla83xx_beacon_blink()
1825 led_cfg[0] = 0x4000; in qla83xx_beacon_blink()
1826 led_cfg[1] = 0x4000; in qla83xx_beacon_blink()
1827 led_cfg[2] = 0x4000; in qla83xx_beacon_blink()
1828 led_cfg[3] = 0x2000; in qla83xx_beacon_blink()
1829 led_cfg[4] = 0; in qla83xx_beacon_blink()
1830 led_cfg[5] = 0x2000; in qla83xx_beacon_blink()
1835 led_cfg[0] = 0x4000; in qla83xx_beacon_blink()
1836 led_cfg[1] = 0x2000; in qla83xx_beacon_blink()
1837 led_cfg[2] = 0; in qla83xx_beacon_blink()
1839 led_cfg[0] = 0x4000; in qla83xx_beacon_blink()
1840 led_cfg[1] = 0x2000; in qla83xx_beacon_blink()
1841 led_cfg[2] = 0x4000; in qla83xx_beacon_blink()
1842 led_cfg[3] = 0x4000; in qla83xx_beacon_blink()
1843 led_cfg[4] = 0; in qla83xx_beacon_blink()
1844 led_cfg[5] = 0x2000; in qla83xx_beacon_blink()
1867 if (ha->beacon_blink_led == 0) { in qla24xx_beacon_on()
1876 ql_log(ql_log_warn, vha, 0x7009, in qla24xx_beacon_on()
1896 ha->beacon_color_state = 0; in qla24xx_beacon_on()
1919 ha->beacon_blink_led = 0; in qla24xx_beacon_off()
1945 ql_log(ql_log_warn, vha, 0x704d, in qla24xx_beacon_off()
1951 ql_log(ql_log_warn, vha, 0x704e, in qla24xx_beacon_off()
2017 bank_select &= ~0xf8; in qla2x00_read_flash_byte()
2018 bank_select |= addr >> 12 & 0xf0; in qla2x00_read_flash_byte()
2030 if ((addr & BIT_16) && ((bank_select & CSR_FLASH_64K_BANK) == 0)) { in qla2x00_read_flash_byte()
2034 } else if (((addr & BIT_16) == 0) && in qla2x00_read_flash_byte()
2076 bank_select &= ~0xf8; in qla2x00_write_flash_byte()
2077 bank_select |= addr >> 12 & 0xf0; in qla2x00_write_flash_byte()
2091 if ((addr & BIT_16) && ((bank_select & CSR_FLASH_64K_BANK) == 0)) { in qla2x00_write_flash_byte()
2095 } else if (((addr & BIT_16) == 0) && in qla2x00_write_flash_byte()
2127 * Returns 0 on success, else non-zero.
2144 status = 0; in qla2x00_poll_flash()
2148 if (man_id != 0x40 && man_id != 0xda) { in qla2x00_poll_flash()
2167 * Returns 0 on success, else non-zero.
2175 qla2x00_write_flash_byte(ha, 0xaaa, 0xaa); in qla2x00_program_flash_address()
2176 qla2x00_write_flash_byte(ha, 0x555, 0x55); in qla2x00_program_flash_address()
2177 qla2x00_write_flash_byte(ha, 0xaaa, 0xa0); in qla2x00_program_flash_address()
2180 if (man_id == 0xda && flash_id == 0xc1) { in qla2x00_program_flash_address()
2182 if (addr & 0x7e) in qla2x00_program_flash_address()
2183 return 0; in qla2x00_program_flash_address()
2185 qla2x00_write_flash_byte(ha, 0x5555, 0xaa); in qla2x00_program_flash_address()
2186 qla2x00_write_flash_byte(ha, 0x2aaa, 0x55); in qla2x00_program_flash_address()
2187 qla2x00_write_flash_byte(ha, 0x5555, 0xa0); in qla2x00_program_flash_address()
2204 * Returns 0 on success, else non-zero.
2211 qla2x00_write_flash_byte(ha, 0xaaa, 0xaa); in qla2x00_erase_flash()
2212 qla2x00_write_flash_byte(ha, 0x555, 0x55); in qla2x00_erase_flash()
2213 qla2x00_write_flash_byte(ha, 0xaaa, 0x80); in qla2x00_erase_flash()
2214 qla2x00_write_flash_byte(ha, 0xaaa, 0xaa); in qla2x00_erase_flash()
2215 qla2x00_write_flash_byte(ha, 0x555, 0x55); in qla2x00_erase_flash()
2216 qla2x00_write_flash_byte(ha, 0xaaa, 0x10); in qla2x00_erase_flash()
2218 qla2x00_write_flash_byte(ha, 0x5555, 0xaa); in qla2x00_erase_flash()
2219 qla2x00_write_flash_byte(ha, 0x2aaa, 0x55); in qla2x00_erase_flash()
2220 qla2x00_write_flash_byte(ha, 0x5555, 0x80); in qla2x00_erase_flash()
2221 qla2x00_write_flash_byte(ha, 0x5555, 0xaa); in qla2x00_erase_flash()
2222 qla2x00_write_flash_byte(ha, 0x2aaa, 0x55); in qla2x00_erase_flash()
2223 qla2x00_write_flash_byte(ha, 0x5555, 0x10); in qla2x00_erase_flash()
2229 return qla2x00_poll_flash(ha, 0x00, 0x80, man_id, flash_id); in qla2x00_erase_flash()
2240 * Returns 0 on success, else non-zero.
2247 qla2x00_write_flash_byte(ha, 0x5555, 0xaa); in qla2x00_erase_flash_sector()
2248 qla2x00_write_flash_byte(ha, 0x2aaa, 0x55); in qla2x00_erase_flash_sector()
2249 qla2x00_write_flash_byte(ha, 0x5555, 0x80); in qla2x00_erase_flash_sector()
2250 qla2x00_write_flash_byte(ha, 0x5555, 0xaa); in qla2x00_erase_flash_sector()
2251 qla2x00_write_flash_byte(ha, 0x2aaa, 0x55); in qla2x00_erase_flash_sector()
2252 if (man_id == 0x1f && flash_id == 0x13) in qla2x00_erase_flash_sector()
2253 qla2x00_write_flash_byte(ha, addr & sec_mask, 0x10); in qla2x00_erase_flash_sector()
2255 qla2x00_write_flash_byte(ha, addr & sec_mask, 0x30); in qla2x00_erase_flash_sector()
2260 return qla2x00_poll_flash(ha, addr, 0x80, man_id, flash_id); in qla2x00_erase_flash_sector()
2273 qla2x00_write_flash_byte(ha, 0x5555, 0xaa); in qla2x00_get_flash_manufacturer()
2274 qla2x00_write_flash_byte(ha, 0x2aaa, 0x55); in qla2x00_get_flash_manufacturer()
2275 qla2x00_write_flash_byte(ha, 0x5555, 0x90); in qla2x00_get_flash_manufacturer()
2276 *man_id = qla2x00_read_flash_byte(ha, 0x0000); in qla2x00_get_flash_manufacturer()
2277 *flash_id = qla2x00_read_flash_byte(ha, 0x0001); in qla2x00_get_flash_manufacturer()
2278 qla2x00_write_flash_byte(ha, 0x5555, 0xaa); in qla2x00_get_flash_manufacturer()
2279 qla2x00_write_flash_byte(ha, 0x2aaa, 0x55); in qla2x00_get_flash_manufacturer()
2280 qla2x00_write_flash_byte(ha, 0x5555, 0xf0); in qla2x00_get_flash_manufacturer()
2293 wrt_reg_word(®->nvram, 0); in qla2x00_read_flash_data()
2295 for (ilength = 0; ilength < length; saddr++, ilength++, tmp_buf++) { in qla2x00_read_flash_data()
2326 for (cnt = 0; cnt < 30000; cnt++) { in qla2x00_suspend_hba()
2327 if ((rd_reg_word(®->hccr) & HCCR_RISC_PAUSE) != 0) in qla2x00_suspend_hba()
2366 wrt_reg_word(®->nvram, 0); in qla2x00_read_optrom_data()
2400 sec_number = 0; in qla2x00_write_optrom_data()
2412 man_id = flash_id = 0; in qla2x00_write_optrom_data()
2413 rest_addr = 0xffff; in qla2x00_write_optrom_data()
2414 sec_mask = 0x10000; in qla2x00_write_optrom_data()
2419 case 0x20: /* ST flash. */ in qla2x00_write_optrom_data()
2420 if (flash_id == 0xd2 || flash_id == 0xe3) { in qla2x00_write_optrom_data()
2424 * 0xf0000. in qla2x00_write_optrom_data()
2426 rest_addr = 0xffff; in qla2x00_write_optrom_data()
2427 sec_mask = 0x10000; in qla2x00_write_optrom_data()
2434 rest_addr = 0x3fff; in qla2x00_write_optrom_data()
2435 sec_mask = 0x1c000; in qla2x00_write_optrom_data()
2437 case 0x40: /* Mostel flash. */ in qla2x00_write_optrom_data()
2439 rest_addr = 0x1ff; in qla2x00_write_optrom_data()
2440 sec_mask = 0x1fe00; in qla2x00_write_optrom_data()
2442 case 0xbf: /* SST flash. */ in qla2x00_write_optrom_data()
2444 rest_addr = 0xfff; in qla2x00_write_optrom_data()
2445 sec_mask = 0x1f000; in qla2x00_write_optrom_data()
2447 case 0xda: /* Winbond flash. */ in qla2x00_write_optrom_data()
2449 rest_addr = 0x7f; in qla2x00_write_optrom_data()
2450 sec_mask = 0x1ff80; in qla2x00_write_optrom_data()
2452 case 0xc2: /* Macronix flash. */ in qla2x00_write_optrom_data()
2454 if (flash_id == 0x38 || flash_id == 0x4f) { in qla2x00_write_optrom_data()
2455 rest_addr = 0xffff; in qla2x00_write_optrom_data()
2456 sec_mask = 0x10000; in qla2x00_write_optrom_data()
2461 case 0x1f: /* Atmel flash. */ in qla2x00_write_optrom_data()
2463 if (flash_id == 0x13) { in qla2x00_write_optrom_data()
2464 rest_addr = 0x7fffffff; in qla2x00_write_optrom_data()
2465 sec_mask = 0x80000000; in qla2x00_write_optrom_data()
2470 case 0x01: /* AMD flash. */ in qla2x00_write_optrom_data()
2471 if (flash_id == 0x38 || flash_id == 0x40 || in qla2x00_write_optrom_data()
2472 flash_id == 0x4f) { in qla2x00_write_optrom_data()
2475 rest_addr = 0xffff; in qla2x00_write_optrom_data()
2476 sec_mask = 0x10000; in qla2x00_write_optrom_data()
2478 } else if (flash_id == 0x3e) { in qla2x00_write_optrom_data()
2484 rest_addr = 0xffff; in qla2x00_write_optrom_data()
2485 sec_mask = 0x10000; in qla2x00_write_optrom_data()
2487 } else if (flash_id == 0x20 || flash_id == 0x6e) { in qla2x00_write_optrom_data()
2492 rest_addr = 0x3fff; in qla2x00_write_optrom_data()
2493 sec_mask = 0x1c000; in qla2x00_write_optrom_data()
2495 } else if (flash_id == 0x6d) { in qla2x00_write_optrom_data()
2497 rest_addr = 0x1fff; in qla2x00_write_optrom_data()
2498 sec_mask = 0x1e000; in qla2x00_write_optrom_data()
2504 rest_addr = 0x3fff; in qla2x00_write_optrom_data()
2505 sec_mask = 0x1c000; in qla2x00_write_optrom_data()
2517 for (addr = offset, liter = 0; liter < length; liter++, in qla2x00_write_optrom_data()
2521 if ((addr & rest_addr) == 0) { in qla2x00_write_optrom_data()
2523 if (addr >= 0x10000UL) { in qla2x00_write_optrom_data()
2524 if (((addr >> 12) & 0xf0) && in qla2x00_write_optrom_data()
2525 ((man_id == 0x01 && in qla2x00_write_optrom_data()
2526 flash_id == 0x3e) || in qla2x00_write_optrom_data()
2527 (man_id == 0x20 && in qla2x00_write_optrom_data()
2528 flash_id == 0xd2))) { in qla2x00_write_optrom_data()
2532 0x7fff; in qla2x00_write_optrom_data()
2534 0x18000; in qla2x00_write_optrom_data()
2539 0x1fff; in qla2x00_write_optrom_data()
2541 0x1e000; in qla2x00_write_optrom_data()
2545 0x3fff; in qla2x00_write_optrom_data()
2547 0x1c000; in qla2x00_write_optrom_data()
2556 if (flash_id == 0xda && man_id == 0xc1) { in qla2x00_write_optrom_data()
2557 qla2x00_write_flash_byte(ha, 0x5555, in qla2x00_write_optrom_data()
2558 0xaa); in qla2x00_write_optrom_data()
2559 qla2x00_write_flash_byte(ha, 0x2aaa, in qla2x00_write_optrom_data()
2560 0x55); in qla2x00_write_optrom_data()
2561 qla2x00_write_flash_byte(ha, 0x5555, in qla2x00_write_optrom_data()
2562 0xa0); in qla2x00_write_optrom_data()
2571 if (man_id == 0x01 && flash_id == 0x6d) in qla2x00_write_optrom_data()
2576 if (man_id == 0x01 && flash_id == 0x6d) { in qla2x00_write_optrom_data()
2579 rest_addr = 0x0fff; in qla2x00_write_optrom_data()
2580 sec_mask = 0x1f000; in qla2x00_write_optrom_data()
2581 } else if (sec_number == 3 && (addr & 0x7ffe)) { in qla2x00_write_optrom_data()
2582 rest_addr = 0x3fff; in qla2x00_write_optrom_data()
2583 sec_mask = 0x1c000; in qla2x00_write_optrom_data()
2594 } while (0); in qla2x00_write_optrom_data()
2627 uint32_t *p, check_sum = 0; in qla28xx_extract_sfub_and_verify()
2636 for (i = 0; i < (sizeof(struct secure_flash_update_block) >> 2); i++) in qla28xx_extract_sfub_and_verify()
2642 ql_log(ql_log_warn, vha, 0x7097, in qla28xx_extract_sfub_and_verify()
2643 "SFUB checksum failed, 0x%x, 0x%x\n", in qla28xx_extract_sfub_and_verify()
2657 struct qla_flt_region *flt_reg = &flt->region[0]; in qla28xx_get_flash_region()
2691 uint32_t buf_size_without_sfub = 0; in qla28xx_write_flash_data()
2694 uint32_t risc_size, risc_attr = 0; in qla28xx_write_flash_data()
2701 ql_log(ql_log_warn, vha, 0xffff, in qla28xx_write_flash_data()
2711 ql_log(ql_log_warn, vha, 0x7095, in qla28xx_write_flash_data()
2723 ql_log(ql_log_warn + ql_dbg_verbose, vha, 0xffff, in qla28xx_write_flash_data()
2777 0xffff, "Secure region %x not supported\n", in qla28xx_write_flash_data()
2787 ql_log(ql_log_warn, vha, 0xffff, in qla28xx_write_flash_data()
2799 ql_log(ql_log_warn + ql_dbg_verbose, vha, 0xffff, in qla28xx_write_flash_data()
2809 ql_log(ql_log_warn, vha, 0xffff, in qla28xx_write_flash_data()
2814 ql_log(ql_log_warn + ql_dbg_verbose, vha, 0x7095, in qla28xx_write_flash_data()
2819 ql_log(ql_log_warn, vha, 0x7096, "Failed unprotect flash\n"); in qla28xx_write_flash_data()
2823 for (liter = 0; liter < dwords; liter++, faddr++) { in qla28xx_write_flash_data()
2828 ql_log(ql_log_warn + ql_dbg_verbose, vha, 0x7095, in qla28xx_write_flash_data()
2832 ql_dbg(ql_dbg_user, vha, 0x7007, in qla28xx_write_flash_data()
2846 ql_log(ql_log_warn + ql_dbg_verbose, vha, 0xffff, in qla28xx_write_flash_data()
2852 ql_log(ql_log_warn, vha, 0xffff, in qla28xx_write_flash_data()
2857 ql_log(ql_log_warn + ql_dbg_verbose, vha, 0xffff, in qla28xx_write_flash_data()
2864 ql_log(ql_log_warn, vha, 0xffff, in qla28xx_write_flash_data()
2869 ha->flags.fac_supported = 0; in qla28xx_write_flash_data()
2871 ql_log(ql_log_warn + ql_dbg_verbose, vha, 0xffff, in qla28xx_write_flash_data()
2874 FLASH_SEMAPHORE_REGISTER_ADDR, 0x00020002); in qla28xx_write_flash_data()
2876 ql_log(ql_log_warn, vha, 0xffff, in qla28xx_write_flash_data()
2882 ql_log(ql_log_warn + ql_dbg_verbose, vha, 0xffff, in qla28xx_write_flash_data()
2884 rval = qla2x00_write_ram_word(vha, 0x7ffd0101, 0); in qla28xx_write_flash_data()
2886 ql_log(ql_log_warn, vha, 0x7096, in qla28xx_write_flash_data()
2894 ql_log(ql_log_warn + ql_dbg_verbose, vha, 0xffff, in qla28xx_write_flash_data()
2896 rval = qla28xx_secure_flash_update(vha, 0, in qla28xx_write_flash_data()
2901 ql_log(ql_log_warn, vha, 0xffff, in qla28xx_write_flash_data()
2912 for (liter = 0; liter < dwords; liter++, faddr++, dwptr++) { in qla28xx_write_flash_data()
2923 ql_log(ql_log_warn + ql_dbg_verbose, vha, 0x7095, in qla28xx_write_flash_data()
2928 ql_log(ql_log_warn, vha, 0x7097, in qla28xx_write_flash_data()
2942 ql_log(ql_log_warn + ql_dbg_verbose, vha, 0x7095, in qla28xx_write_flash_data()
2947 ql_log(ql_log_warn, vha, 0x7099, in qla28xx_write_flash_data()
2959 ql_log(ql_log_warn, vha, 0xffff, in qla28xx_write_flash_data()
3012 if (offset & 0xfff) in qla25xx_read_optrom_data()
3018 if (offset & 0xff) in qla25xx_read_optrom_data()
3023 ql_log(ql_log_warn, vha, 0x00cc, in qla25xx_read_optrom_data()
3033 while (left != 0) { in qla25xx_read_optrom_data()
3040 ql_log(ql_log_warn, vha, 0x00f5, in qla25xx_read_optrom_data()
3044 ql_log(ql_log_warn, vha, 0x00f6, in qla25xx_read_optrom_data()
3093 memset(ha->fcode_revision, 0, sizeof(ha->fcode_revision)); in qla2x00_get_fcode_version()
3097 ((qla2x00_read_flash_byte(ha, pcids + 0x0B) << 8) | in qla2x00_get_fcode_version()
3098 qla2x00_read_flash_byte(ha, pcids + 0x0A)); in qla2x00_get_fcode_version()
3099 iend = istart + 0x100; in qla2x00_get_fcode_version()
3102 do_next = 0; in qla2x00_get_fcode_version()
3119 do_next = 0; in qla2x00_get_fcode_version()
3133 do_next = 0; in qla2x00_get_fcode_version()
3137 if (rbyte == ' ' || rbyte == 0xd || rbyte == 0x10) in qla2x00_get_fcode_version()
3154 } while (0); in qla2x00_get_fcode_version()
3157 memset(ha->fcode_revision, 0, sizeof(ha->fcode_revision)); in qla2x00_get_fcode_version()
3173 memset(ha->bios_revision, 0, sizeof(ha->bios_revision)); in qla2x00_get_flash_version()
3174 memset(ha->efi_revision, 0, sizeof(ha->efi_revision)); in qla2x00_get_flash_version()
3175 memset(ha->fcode_revision, 0, sizeof(ha->fcode_revision)); in qla2x00_get_flash_version()
3176 memset(ha->fw_revision, 0, sizeof(ha->fw_revision)); in qla2x00_get_flash_version()
3181 pcihdr = 0; in qla2x00_get_flash_version()
3185 if (qla2x00_read_flash_byte(ha, pcihdr) != 0x55 || in qla2x00_get_flash_version()
3186 qla2x00_read_flash_byte(ha, pcihdr + 0x01) != 0xaa) { in qla2x00_get_flash_version()
3188 ql_log(ql_log_fatal, vha, 0x0050, in qla2x00_get_flash_version()
3196 ((qla2x00_read_flash_byte(ha, pcihdr + 0x19) << 8) | in qla2x00_get_flash_version()
3197 qla2x00_read_flash_byte(ha, pcihdr + 0x18)); in qla2x00_get_flash_version()
3201 qla2x00_read_flash_byte(ha, pcids + 0x1) != 'C' || in qla2x00_get_flash_version()
3202 qla2x00_read_flash_byte(ha, pcids + 0x2) != 'I' || in qla2x00_get_flash_version()
3203 qla2x00_read_flash_byte(ha, pcids + 0x3) != 'R') { in qla2x00_get_flash_version()
3205 ql_log(ql_log_fatal, vha, 0x0051, in qla2x00_get_flash_version()
3212 code_type = qla2x00_read_flash_byte(ha, pcids + 0x14); in qla2x00_get_flash_version()
3216 ha->bios_revision[0] = in qla2x00_get_flash_version()
3217 qla2x00_read_flash_byte(ha, pcids + 0x12); in qla2x00_get_flash_version()
3219 qla2x00_read_flash_byte(ha, pcids + 0x13); in qla2x00_get_flash_version()
3220 ql_dbg(ql_dbg_init, vha, 0x0052, in qla2x00_get_flash_version()
3222 ha->bios_revision[1], ha->bios_revision[0]); in qla2x00_get_flash_version()
3231 ha->efi_revision[0] = in qla2x00_get_flash_version()
3232 qla2x00_read_flash_byte(ha, pcids + 0x12); in qla2x00_get_flash_version()
3234 qla2x00_read_flash_byte(ha, pcids + 0x13); in qla2x00_get_flash_version()
3235 ql_dbg(ql_dbg_init, vha, 0x0053, in qla2x00_get_flash_version()
3237 ha->efi_revision[1], ha->efi_revision[0]); in qla2x00_get_flash_version()
3240 ql_log(ql_log_warn, vha, 0x0054, in qla2x00_get_flash_version()
3246 last_image = qla2x00_read_flash_byte(ha, pcids + 0x15) & BIT_7; in qla2x00_get_flash_version()
3249 pcihdr += ((qla2x00_read_flash_byte(ha, pcids + 0x11) << 8) | in qla2x00_get_flash_version()
3250 qla2x00_read_flash_byte(ha, pcids + 0x10)) * 512; in qla2x00_get_flash_version()
3255 memset(ha->fw_revision, 0, sizeof(ha->fw_revision)); in qla2x00_get_flash_version()
3257 memset(dbyte, 0, 8); in qla2x00_get_flash_version()
3262 ql_dbg(ql_dbg_init + ql_dbg_buffer, vha, 0x010a, in qla2x00_get_flash_version()
3265 ql_dump_buffer(ql_dbg_init + ql_dbg_buffer, vha, 0x010b, in qla2x00_get_flash_version()
3268 if ((dcode[0] == 0xffff && dcode[1] == 0xffff && in qla2x00_get_flash_version()
3269 dcode[2] == 0xffff && dcode[3] == 0xffff) || in qla2x00_get_flash_version()
3270 (dcode[0] == 0 && dcode[1] == 0 && dcode[2] == 0 && in qla2x00_get_flash_version()
3271 dcode[3] == 0)) { in qla2x00_get_flash_version()
3272 ql_log(ql_log_warn, vha, 0x0057, in qla2x00_get_flash_version()
3277 ha->fw_revision[0] = dbyte[0] << 16 | dbyte[1]; in qla2x00_get_flash_version()
3280 ql_dbg(ql_dbg_init, vha, 0x0058, in qla2x00_get_flash_version()
3282 "%d.%d.%d.\n", ha->fw_revision[0], in qla2x00_get_flash_version()
3305 memset(ha->bios_revision, 0, sizeof(ha->bios_revision)); in qla82xx_get_flash_version()
3306 memset(ha->efi_revision, 0, sizeof(ha->efi_revision)); in qla82xx_get_flash_version()
3307 memset(ha->fcode_revision, 0, sizeof(ha->fcode_revision)); in qla82xx_get_flash_version()
3308 memset(ha->fw_revision, 0, sizeof(ha->fw_revision)); in qla82xx_get_flash_version()
3315 ha->isp_ops->read_optrom(vha, dcode, pcihdr, 0x20 * 4); in qla82xx_get_flash_version()
3319 ql_log(ql_log_fatal, vha, 0x0154, in qla82xx_get_flash_version()
3326 pcids = pcihdr + ((bcode[0x19] << 8) | bcode[0x18]); in qla82xx_get_flash_version()
3328 ha->isp_ops->read_optrom(vha, dcode, pcids, 0x20 * 4); in qla82xx_get_flash_version()
3334 ql_log(ql_log_fatal, vha, 0x0155, in qla82xx_get_flash_version()
3341 code_type = bcode[0x14]; in qla82xx_get_flash_version()
3345 ha->bios_revision[0] = bcode[0x12]; in qla82xx_get_flash_version()
3346 ha->bios_revision[1] = bcode[0x13]; in qla82xx_get_flash_version()
3347 ql_dbg(ql_dbg_init, vha, 0x0156, in qla82xx_get_flash_version()
3349 ha->bios_revision[1], ha->bios_revision[0]); in qla82xx_get_flash_version()
3353 ha->fcode_revision[0] = bcode[0x12]; in qla82xx_get_flash_version()
3354 ha->fcode_revision[1] = bcode[0x13]; in qla82xx_get_flash_version()
3355 ql_dbg(ql_dbg_init, vha, 0x0157, in qla82xx_get_flash_version()
3357 ha->fcode_revision[1], ha->fcode_revision[0]); in qla82xx_get_flash_version()
3361 ha->efi_revision[0] = bcode[0x12]; in qla82xx_get_flash_version()
3362 ha->efi_revision[1] = bcode[0x13]; in qla82xx_get_flash_version()
3363 ql_dbg(ql_dbg_init, vha, 0x0158, in qla82xx_get_flash_version()
3365 ha->efi_revision[1], ha->efi_revision[0]); in qla82xx_get_flash_version()
3368 ql_log(ql_log_warn, vha, 0x0159, in qla82xx_get_flash_version()
3374 last_image = bcode[0x15] & BIT_7; in qla82xx_get_flash_version()
3377 pcihdr += ((bcode[0x11] << 8) | bcode[0x10]) * 512; in qla82xx_get_flash_version()
3381 memset(ha->fw_revision, 0, sizeof(ha->fw_revision)); in qla82xx_get_flash_version()
3383 ha->isp_ops->read_optrom(vha, dcode, ha->flt_region_fw << 2, 0x20); in qla82xx_get_flash_version()
3387 if (bcode[0x0] == 0x3 && bcode[0x1] == 0x0 && in qla82xx_get_flash_version()
3388 bcode[0x2] == 0x40 && bcode[0x3] == 0x40) { in qla82xx_get_flash_version()
3389 ha->fw_revision[0] = bcode[0x4]; in qla82xx_get_flash_version()
3390 ha->fw_revision[1] = bcode[0x5]; in qla82xx_get_flash_version()
3391 ha->fw_revision[2] = bcode[0x6]; in qla82xx_get_flash_version()
3392 ql_dbg(ql_dbg_init, vha, 0x0153, in qla82xx_get_flash_version()
3394 ha->fw_revision[0], ha->fw_revision[1], in qla82xx_get_flash_version()
3405 uint32_t pcihdr = 0, pcids = 0; in qla24xx_get_flash_version()
3411 uint32_t faddr = 0; in qla24xx_get_flash_version()
3420 memset(ha->bios_revision, 0, sizeof(ha->bios_revision)); in qla24xx_get_flash_version()
3421 memset(ha->efi_revision, 0, sizeof(ha->efi_revision)); in qla24xx_get_flash_version()
3422 memset(ha->fcode_revision, 0, sizeof(ha->fcode_revision)); in qla24xx_get_flash_version()
3423 memset(ha->fw_revision, 0, sizeof(ha->fw_revision)); in qla24xx_get_flash_version()
3435 qla24xx_read_flash_data(vha, dcode, pcihdr >> 2, 0x20); in qla24xx_get_flash_version()
3439 ql_log(ql_log_fatal, vha, 0x0059, in qla24xx_get_flash_version()
3446 pcids = pcihdr + ((bcode[0x19] << 8) | bcode[0x18]); in qla24xx_get_flash_version()
3448 qla24xx_read_flash_data(vha, dcode, pcids >> 2, 0x20); in qla24xx_get_flash_version()
3454 ql_log(ql_log_fatal, vha, 0x005a, in qla24xx_get_flash_version()
3456 ql_dump_buffer(ql_dbg_init, vha, 0x0059, dcode, 32); in qla24xx_get_flash_version()
3462 code_type = bcode[0x14]; in qla24xx_get_flash_version()
3466 ha->bios_revision[0] = bcode[0x12]; in qla24xx_get_flash_version()
3467 ha->bios_revision[1] = bcode[0x13]; in qla24xx_get_flash_version()
3468 ql_dbg(ql_dbg_init, vha, 0x005b, in qla24xx_get_flash_version()
3470 ha->bios_revision[1], ha->bios_revision[0]); in qla24xx_get_flash_version()
3474 ha->fcode_revision[0] = bcode[0x12]; in qla24xx_get_flash_version()
3475 ha->fcode_revision[1] = bcode[0x13]; in qla24xx_get_flash_version()
3476 ql_dbg(ql_dbg_init, vha, 0x005c, in qla24xx_get_flash_version()
3478 ha->fcode_revision[1], ha->fcode_revision[0]); in qla24xx_get_flash_version()
3482 ha->efi_revision[0] = bcode[0x12]; in qla24xx_get_flash_version()
3483 ha->efi_revision[1] = bcode[0x13]; in qla24xx_get_flash_version()
3484 ql_dbg(ql_dbg_init, vha, 0x005d, in qla24xx_get_flash_version()
3486 ha->efi_revision[1], ha->efi_revision[0]); in qla24xx_get_flash_version()
3489 ql_log(ql_log_warn, vha, 0x005e, in qla24xx_get_flash_version()
3495 last_image = bcode[0x15] & BIT_7; in qla24xx_get_flash_version()
3498 pcihdr += ((bcode[0x11] << 8) | bcode[0x10]) * 512; in qla24xx_get_flash_version()
3502 memset(ha->fw_revision, 0, sizeof(ha->fw_revision)); in qla24xx_get_flash_version()
3512 ql_log(ql_log_warn, vha, 0x005f, in qla24xx_get_flash_version()
3515 ql_dump_buffer(ql_dbg_init, vha, 0x005f, dcode, 32); in qla24xx_get_flash_version()
3517 for (i = 0; i < 4; i++) in qla24xx_get_flash_version()
3520 ql_dbg(ql_dbg_init, vha, 0x0060, in qla24xx_get_flash_version()
3522 ha->fw_revision[0], ha->fw_revision[1], in qla24xx_get_flash_version()
3532 memset(ha->gold_fw_version, 0, sizeof(ha->gold_fw_version)); in qla24xx_get_flash_version()
3536 ql_log(ql_log_warn, vha, 0x0056, in qla24xx_get_flash_version()
3538 ql_dump_buffer(ql_dbg_init, vha, 0x0056, dcode, 32); in qla24xx_get_flash_version()
3542 for (i = 0; i < 4; i++) in qla24xx_get_flash_version()
3552 if (pos >= end || *pos != 0x82) in qla2xxx_is_vpd_valid()
3553 return 0; in qla2xxx_is_vpd_valid()
3556 if (pos >= end || *pos != 0x90) in qla2xxx_is_vpd_valid()
3557 return 0; in qla2xxx_is_vpd_valid()
3560 if (pos >= end || *pos != 0x78) in qla2xxx_is_vpd_valid()
3561 return 0; in qla2xxx_is_vpd_valid()
3572 int len = 0; in qla2xxx_get_vpd_field()
3575 return 0; in qla2xxx_get_vpd_field()
3577 while (pos < end && *pos != 0x78) { in qla2xxx_get_vpd_field()
3578 len = (*pos == 0x82) ? pos[1] : pos[2]; in qla2xxx_get_vpd_field()
3583 if (*pos != 0x90 && *pos != 0x91) in qla2xxx_get_vpd_field()
3589 if (pos < end - len && *pos != 0x78) in qla2xxx_get_vpd_field()
3592 return 0; in qla2xxx_get_vpd_field()
3605 ql_log(ql_log_warn, vha, 0x00d5, in qla24xx_read_fcp_prio_cfg()
3611 memset(ha->fcp_prio_cfg, 0, FCP_PRIO_CFG_SIZE); in qla24xx_read_fcp_prio_cfg()
3619 if (!qla24xx_fcp_prio_cfg_valid(vha, ha->fcp_prio_cfg, 0)) in qla24xx_read_fcp_prio_cfg()
3627 ha->isp_ops->read_optrom(vha, &ha->fcp_prio_cfg->entry[0], in qla24xx_read_fcp_prio_cfg()