Lines Matching full:fw

22 #include "fw/img.h"
26 #include "fw/api/alive.h"
27 #include "fw/api/mac.h"
58 * @fw: the iwl_fw structure
71 struct iwl_fw fw; member
112 * For the fw storage we are using struct fw_desc.
139 kfree(drv->fw.dbg.dest_tlv); in iwl_dealloc_ucode()
140 for (i = 0; i < ARRAY_SIZE(drv->fw.dbg.conf_tlv); i++) in iwl_dealloc_ucode()
141 kfree(drv->fw.dbg.conf_tlv[i]); in iwl_dealloc_ucode()
142 for (i = 0; i < ARRAY_SIZE(drv->fw.dbg.trigger_tlv); i++) in iwl_dealloc_ucode()
143 kfree(drv->fw.dbg.trigger_tlv[i]); in iwl_dealloc_ucode()
144 kfree(drv->fw.dbg.mem_tlv); in iwl_dealloc_ucode()
145 kfree(drv->fw.iml); in iwl_dealloc_ucode()
146 kfree(drv->fw.ucode_capa.cmd_versions); in iwl_dealloc_ucode()
147 kfree(drv->fw.phy_integration_ver); in iwl_dealloc_ucode()
152 iwl_free_fw_img(drv, drv->fw.img + i); in iwl_dealloc_ucode()
155 memset(&drv->fw, 0, sizeof(drv->fw)); in iwl_dealloc_ucode()
300 * struct fw_sec_parsing: to extract fw section and it's offset from tlv
324 /* FW debug data parsed for driver usage */
453 drv->fw.default_calib[ucode_type].flow_trigger = in iwl_set_default_calib()
455 drv->fw.default_calib[ucode_type].event_trigger = in iwl_set_default_calib()
522 drv->fw.ucode_ver = le32_to_cpu(ucode->ver); in iwl_parse_v1_v2_firmware()
523 api_ver = IWL_UCODE_API(drv->fw.ucode_ver); in iwl_parse_v1_v2_firmware()
569 snprintf(drv->fw.fw_version, in iwl_parse_v1_v2_firmware()
570 sizeof(drv->fw.fw_version), in iwl_parse_v1_v2_firmware()
572 IWL_UCODE_MAJOR(drv->fw.ucode_ver), in iwl_parse_v1_v2_firmware()
573 IWL_UCODE_MINOR(drv->fw.ucode_ver), in iwl_parse_v1_v2_firmware()
574 IWL_UCODE_API(drv->fw.ucode_ver), in iwl_parse_v1_v2_firmware()
575 IWL_UCODE_SERIAL(drv->fw.ucode_ver), in iwl_parse_v1_v2_firmware()
616 const struct iwl_fw_dump_exclude *fw = tlv_data; in iwl_drv_set_dump_exclude() local
619 if (tlv_len < sizeof(*fw)) in iwl_drv_set_dump_exclude()
623 excl = &drv->fw.dump_excl[0]; in iwl_drv_set_dump_exclude()
627 excl = &drv->fw.dump_excl_wowlan[0]; in iwl_drv_set_dump_exclude()
628 } else if (fw_has_capa(&drv->fw.ucode_capa, in iwl_drv_set_dump_exclude()
631 excl = &drv->fw.dump_excl[0]; in iwl_drv_set_dump_exclude()
634 excl = &drv->fw.dump_excl_wowlan[0]; in iwl_drv_set_dump_exclude()
641 IWL_DEBUG_FW_INFO(drv, "found too many excludes in fw file\n"); in iwl_drv_set_dump_exclude()
645 excl->addr = le32_to_cpu(fw->addr) & ~FW_ADDR_CACHE_CONTROL; in iwl_drv_set_dump_exclude()
646 excl->size = le32_to_cpu(fw->size); in iwl_drv_set_dump_exclude()
739 drv->fw.ucode_ver = le32_to_cpu(ucode->ver); in iwl_parse_tlv_firmware()
740 memcpy(drv->fw.human_readable, ucode->human_readable, in iwl_parse_tlv_firmware()
741 sizeof(drv->fw.human_readable)); in iwl_parse_tlv_firmware()
749 snprintf(drv->fw.fw_version, in iwl_parse_tlv_firmware()
750 sizeof(drv->fw.fw_version), in iwl_parse_tlv_firmware()
752 IWL_UCODE_MAJOR(drv->fw.ucode_ver), in iwl_parse_tlv_firmware()
753 IWL_UCODE_MINOR(drv->fw.ucode_ver), in iwl_parse_tlv_firmware()
754 IWL_UCODE_API(drv->fw.ucode_ver), in iwl_parse_tlv_firmware()
755 IWL_UCODE_SERIAL(drv->fw.ucode_ver), in iwl_parse_tlv_firmware()
894 drv->fw.enhance_sensitivity_table = true; in iwl_parse_tlv_firmware()
923 drv->fw.type = IWL_FW_MVM; in iwl_parse_tlv_firmware()
928 drv->fw.type = IWL_FW_MVM; in iwl_parse_tlv_firmware()
933 drv->fw.type = IWL_FW_MVM; in iwl_parse_tlv_firmware()
944 drv->fw.phy_config = le32_to_cpup((const __le32 *)tlv_data); in iwl_parse_tlv_firmware()
945 drv->fw.valid_tx_ant = (drv->fw.phy_config & in iwl_parse_tlv_firmware()
948 drv->fw.valid_rx_ant = (drv->fw.phy_config & in iwl_parse_tlv_firmware()
955 drv->fw.type = IWL_FW_MVM; in iwl_parse_tlv_firmware()
960 drv->fw.type = IWL_FW_MVM; in iwl_parse_tlv_firmware()
965 drv->fw.type = IWL_FW_MVM; in iwl_parse_tlv_firmware()
974 drv->fw.img[IWL_UCODE_REGULAR].is_dual_cpus = in iwl_parse_tlv_firmware()
976 drv->fw.img[IWL_UCODE_INIT].is_dual_cpus = in iwl_parse_tlv_firmware()
978 drv->fw.img[IWL_UCODE_WOWLAN].is_dual_cpus = in iwl_parse_tlv_firmware()
1003 snprintf(drv->fw.fw_version, in iwl_parse_tlv_firmware()
1004 sizeof(drv->fw.fw_version), in iwl_parse_tlv_firmware()
1045 drv->fw.dbg.n_dest_reg = (dest_v1) ? in iwl_parse_tlv_firmware()
1053 drv->fw.dbg.n_dest_reg /= in iwl_parse_tlv_firmware()
1054 sizeof(drv->fw.dbg.dest_tlv->reg_ops[0]); in iwl_parse_tlv_firmware()
1069 if (conf->id >= ARRAY_SIZE(drv->fw.dbg.conf_tlv)) { in iwl_parse_tlv_firmware()
1098 if (trigger_id >= ARRAY_SIZE(drv->fw.dbg.trigger_tlv)) { in iwl_parse_tlv_firmware()
1125 drv->fw.dbg.dump_mask = in iwl_parse_tlv_firmware()
1158 drv->fw.img[IWL_UCODE_REGULAR].paging_mem_size = in iwl_parse_tlv_firmware()
1161 drv->fw.img[usniffer_img].paging_mem_size = in iwl_parse_tlv_firmware()
1190 drv->fw.iml_len = tlv_len; in iwl_parse_tlv_firmware()
1191 drv->fw.iml = kmemdup(tlv_data, tlv_len, GFP_KERNEL); in iwl_parse_tlv_firmware()
1192 if (!drv->fw.iml) in iwl_parse_tlv_firmware()
1302 if (drv->fw.phy_integration_ver) { in iwl_parse_tlv_firmware()
1308 drv->fw.phy_integration_ver = in iwl_parse_tlv_firmware()
1310 if (!drv->fw.phy_integration_ver) in iwl_parse_tlv_firmware()
1312 drv->fw.phy_integration_ver_len = tlv_len; in iwl_parse_tlv_firmware()
1380 drv->fw.img[type].sec = sec; in iwl_alloc_ucode()
1381 drv->fw.img[type].num_sec = pieces->img[type].sec_counter; in iwl_alloc_ucode()
1457 &drv->fw, dbgfs_dir); in _iwl_op_mode_start()
1495 struct iwl_fw *fw = &drv->fw; in iwl_req_fw_callback() local
1508 fw->ucode_capa.max_probe_length = IWL_DEFAULT_MAX_PROBE_LENGTH; in iwl_req_fw_callback()
1509 fw->ucode_capa.standard_phy_calibration_size = in iwl_req_fw_callback()
1511 fw->ucode_capa.n_scan_channels = IWL_DEFAULT_SCAN_CHANNELS; in iwl_req_fw_callback()
1512 fw->ucode_capa.num_stations = IWL_MVM_STATION_COUNT_MAX; in iwl_req_fw_callback()
1513 fw->ucode_capa.num_beacons = 1; in iwl_req_fw_callback()
1514 /* dump all fw memory areas by default */ in iwl_req_fw_callback()
1515 fw->dbg.dump_mask = 0xffffffff; in iwl_req_fw_callback()
1540 &fw->ucode_capa, &usniffer_images); in iwl_req_fw_callback()
1545 if (fw_has_api(&drv->fw.ucode_capa, IWL_UCODE_TLV_API_NEW_VERSION)) in iwl_req_fw_callback()
1546 api_ver = drv->fw.ucode_ver; in iwl_req_fw_callback()
1548 api_ver = IWL_UCODE_API(drv->fw.ucode_ver); in iwl_req_fw_callback()
1567 if (fw->type == IWL_FW_DVM && validate_sec_sizes(drv, pieces, in iwl_req_fw_callback()
1582 size_t dbg_dest_size = sizeof(*drv->fw.dbg.dest_tlv) + in iwl_req_fw_callback()
1583 sizeof(drv->fw.dbg.dest_tlv->reg_ops[0]) * in iwl_req_fw_callback()
1584 drv->fw.dbg.n_dest_reg; in iwl_req_fw_callback()
1586 drv->fw.dbg.dest_tlv = kmalloc(dbg_dest_size, GFP_KERNEL); in iwl_req_fw_callback()
1588 if (!drv->fw.dbg.dest_tlv) in iwl_req_fw_callback()
1592 memcpy(drv->fw.dbg.dest_tlv, pieces->dbg_dest_tlv_v1, in iwl_req_fw_callback()
1596 drv->fw.dbg.dest_tlv; in iwl_req_fw_callback()
1611 sizeof(drv->fw.dbg.dest_tlv->reg_ops[0]) * in iwl_req_fw_callback()
1612 drv->fw.dbg.n_dest_reg); in iwl_req_fw_callback()
1628 for (i = 0; i < ARRAY_SIZE(drv->fw.dbg.conf_tlv); i++) { in iwl_req_fw_callback()
1630 drv->fw.dbg.conf_tlv[i] = in iwl_req_fw_callback()
1634 if (!drv->fw.dbg.conf_tlv[i]) in iwl_req_fw_callback()
1661 for (i = 0; i < ARRAY_SIZE(drv->fw.dbg.trigger_tlv); i++) { in iwl_req_fw_callback()
1674 drv->fw.dbg.trigger_tlv_len[i] = in iwl_req_fw_callback()
1676 drv->fw.dbg.trigger_tlv[i] = in iwl_req_fw_callback()
1678 drv->fw.dbg.trigger_tlv_len[i], in iwl_req_fw_callback()
1680 if (!drv->fw.dbg.trigger_tlv[i]) in iwl_req_fw_callback()
1687 drv->fw.dbg.mem_tlv = pieces->dbg_mem_tlv; in iwl_req_fw_callback()
1689 drv->fw.dbg.n_mem_tlv = pieces->n_mem_tlv; in iwl_req_fw_callback()
1696 fw->init_evtlog_ptr = pieces->init_evtlog_ptr; in iwl_req_fw_callback()
1698 fw->init_evtlog_size = (pieces->init_evtlog_size - 16)/12; in iwl_req_fw_callback()
1700 fw->init_evtlog_size = in iwl_req_fw_callback()
1702 fw->init_errlog_ptr = pieces->init_errlog_ptr; in iwl_req_fw_callback()
1703 fw->inst_evtlog_ptr = pieces->inst_evtlog_ptr; in iwl_req_fw_callback()
1705 fw->inst_evtlog_size = (pieces->inst_evtlog_size - 16)/12; in iwl_req_fw_callback()
1707 fw->inst_evtlog_size = in iwl_req_fw_callback()
1709 fw->inst_errlog_ptr = pieces->inst_errlog_ptr; in iwl_req_fw_callback()
1715 if (fw->ucode_capa.standard_phy_calibration_size > in iwl_req_fw_callback()
1717 fw->ucode_capa.standard_phy_calibration_size = in iwl_req_fw_callback()
1726 switch (fw->type) { in iwl_req_fw_callback()
1731 WARN(1, "Invalid fw type %d\n", fw->type); in iwl_req_fw_callback()
1739 drv->fw.fw_version, op->name); in iwl_req_fw_callback()
1849 IWL_ERR(trans, "Couldn't request the fw\n"); in iwl_drv_start()
2038 "Debug INI TLV FW debug infrastructure (default: 16)");