Lines Matching refs:fw
56 struct iwl_fw fw; member
121 kfree(drv->fw.dbg.dest_tlv); in iwl_dealloc_ucode()
122 for (i = 0; i < ARRAY_SIZE(drv->fw.dbg.conf_tlv); i++) in iwl_dealloc_ucode()
123 kfree(drv->fw.dbg.conf_tlv[i]); in iwl_dealloc_ucode()
124 for (i = 0; i < ARRAY_SIZE(drv->fw.dbg.trigger_tlv); i++) in iwl_dealloc_ucode()
125 kfree(drv->fw.dbg.trigger_tlv[i]); in iwl_dealloc_ucode()
126 kfree(drv->fw.dbg.mem_tlv); in iwl_dealloc_ucode()
127 kfree(drv->fw.iml); in iwl_dealloc_ucode()
128 kfree(drv->fw.ucode_capa.cmd_versions); in iwl_dealloc_ucode()
129 kfree(drv->fw.phy_integration_ver); in iwl_dealloc_ucode()
132 iwl_free_fw_img(drv, drv->fw.img + i); in iwl_dealloc_ucode()
324 static int iwl_store_cscheme(struct iwl_fw *fw, const u8 *data, const u32 len) in iwl_store_cscheme() argument
341 fw->cs[j++] = *fwcs; in iwl_store_cscheme()
393 drv->fw.default_calib[ucode_type].flow_trigger = in iwl_set_default_calib()
395 drv->fw.default_calib[ucode_type].event_trigger = in iwl_set_default_calib()
462 drv->fw.ucode_ver = le32_to_cpu(ucode->ver); in iwl_parse_v1_v2_firmware()
463 api_ver = IWL_UCODE_API(drv->fw.ucode_ver); in iwl_parse_v1_v2_firmware()
509 snprintf(drv->fw.fw_version, in iwl_parse_v1_v2_firmware()
510 sizeof(drv->fw.fw_version), in iwl_parse_v1_v2_firmware()
512 IWL_UCODE_MAJOR(drv->fw.ucode_ver), in iwl_parse_v1_v2_firmware()
513 IWL_UCODE_MINOR(drv->fw.ucode_ver), in iwl_parse_v1_v2_firmware()
514 IWL_UCODE_API(drv->fw.ucode_ver), in iwl_parse_v1_v2_firmware()
515 IWL_UCODE_SERIAL(drv->fw.ucode_ver), in iwl_parse_v1_v2_firmware()
556 const struct iwl_fw_dump_exclude *fw = tlv_data; in iwl_drv_set_dump_exclude() local
559 if (tlv_len < sizeof(*fw)) in iwl_drv_set_dump_exclude()
563 excl = &drv->fw.dump_excl[0]; in iwl_drv_set_dump_exclude()
567 excl = &drv->fw.dump_excl_wowlan[0]; in iwl_drv_set_dump_exclude()
568 } else if (fw_has_capa(&drv->fw.ucode_capa, in iwl_drv_set_dump_exclude()
571 excl = &drv->fw.dump_excl[0]; in iwl_drv_set_dump_exclude()
574 excl = &drv->fw.dump_excl_wowlan[0]; in iwl_drv_set_dump_exclude()
585 excl->addr = le32_to_cpu(fw->addr) & ~FW_ADDR_CACHE_CONTROL; in iwl_drv_set_dump_exclude()
586 excl->size = le32_to_cpu(fw->size); in iwl_drv_set_dump_exclude()
619 drv->fw.ucode_ver = le32_to_cpu(ucode->ver); in iwl_parse_tlv_firmware()
620 memcpy(drv->fw.human_readable, ucode->human_readable, in iwl_parse_tlv_firmware()
621 sizeof(drv->fw.human_readable)); in iwl_parse_tlv_firmware()
629 snprintf(drv->fw.fw_version, in iwl_parse_tlv_firmware()
630 sizeof(drv->fw.fw_version), in iwl_parse_tlv_firmware()
632 IWL_UCODE_MAJOR(drv->fw.ucode_ver), in iwl_parse_tlv_firmware()
633 IWL_UCODE_MINOR(drv->fw.ucode_ver), in iwl_parse_tlv_firmware()
634 IWL_UCODE_API(drv->fw.ucode_ver), in iwl_parse_tlv_firmware()
635 IWL_UCODE_SERIAL(drv->fw.ucode_ver), in iwl_parse_tlv_firmware()
774 drv->fw.enhance_sensitivity_table = true; in iwl_parse_tlv_firmware()
803 drv->fw.type = IWL_FW_MVM; in iwl_parse_tlv_firmware()
808 drv->fw.type = IWL_FW_MVM; in iwl_parse_tlv_firmware()
813 drv->fw.type = IWL_FW_MVM; in iwl_parse_tlv_firmware()
824 drv->fw.phy_config = le32_to_cpup((__le32 *)tlv_data); in iwl_parse_tlv_firmware()
825 drv->fw.valid_tx_ant = (drv->fw.phy_config & in iwl_parse_tlv_firmware()
828 drv->fw.valid_rx_ant = (drv->fw.phy_config & in iwl_parse_tlv_firmware()
835 drv->fw.type = IWL_FW_MVM; in iwl_parse_tlv_firmware()
840 drv->fw.type = IWL_FW_MVM; in iwl_parse_tlv_firmware()
845 drv->fw.type = IWL_FW_MVM; in iwl_parse_tlv_firmware()
854 drv->fw.img[IWL_UCODE_REGULAR].is_dual_cpus = in iwl_parse_tlv_firmware()
856 drv->fw.img[IWL_UCODE_INIT].is_dual_cpus = in iwl_parse_tlv_firmware()
858 drv->fw.img[IWL_UCODE_WOWLAN].is_dual_cpus = in iwl_parse_tlv_firmware()
866 if (iwl_store_cscheme(&drv->fw, tlv_data, tlv_len)) in iwl_parse_tlv_firmware()
888 snprintf(drv->fw.fw_version, in iwl_parse_tlv_firmware()
889 sizeof(drv->fw.fw_version), in iwl_parse_tlv_firmware()
893 snprintf(drv->fw.fw_version, in iwl_parse_tlv_firmware()
894 sizeof(drv->fw.fw_version), in iwl_parse_tlv_firmware()
935 drv->fw.dbg.n_dest_reg = (dest_v1) ? in iwl_parse_tlv_firmware()
943 drv->fw.dbg.n_dest_reg /= in iwl_parse_tlv_firmware()
944 sizeof(drv->fw.dbg.dest_tlv->reg_ops[0]); in iwl_parse_tlv_firmware()
958 if (conf->id >= ARRAY_SIZE(drv->fw.dbg.conf_tlv)) { in iwl_parse_tlv_firmware()
987 if (trigger_id >= ARRAY_SIZE(drv->fw.dbg.trigger_tlv)) { in iwl_parse_tlv_firmware()
1014 drv->fw.dbg.dump_mask = in iwl_parse_tlv_firmware()
1047 drv->fw.img[IWL_UCODE_REGULAR].paging_mem_size = in iwl_parse_tlv_firmware()
1050 drv->fw.img[usniffer_img].paging_mem_size = in iwl_parse_tlv_firmware()
1079 drv->fw.iml_len = tlv_len; in iwl_parse_tlv_firmware()
1080 drv->fw.iml = kmemdup(tlv_data, tlv_len, GFP_KERNEL); in iwl_parse_tlv_firmware()
1081 if (!drv->fw.iml) in iwl_parse_tlv_firmware()
1194 if (drv->fw.phy_integration_ver) { in iwl_parse_tlv_firmware()
1200 drv->fw.phy_integration_ver = in iwl_parse_tlv_firmware()
1202 if (!drv->fw.phy_integration_ver) in iwl_parse_tlv_firmware()
1204 drv->fw.phy_integration_ver_len = tlv_len; in iwl_parse_tlv_firmware()
1250 drv->fw.img[type].sec = sec; in iwl_alloc_ucode()
1251 drv->fw.img[type].num_sec = pieces->img[type].sec_counter; in iwl_alloc_ucode()
1327 &drv->fw, dbgfs_dir); in _iwl_op_mode_start()
1366 struct iwl_fw *fw = &drv->fw; in iwl_req_fw_callback() local
1379 fw->ucode_capa.max_probe_length = IWL_DEFAULT_MAX_PROBE_LENGTH; in iwl_req_fw_callback()
1380 fw->ucode_capa.standard_phy_calibration_size = in iwl_req_fw_callback()
1382 fw->ucode_capa.n_scan_channels = IWL_DEFAULT_SCAN_CHANNELS; in iwl_req_fw_callback()
1383 fw->ucode_capa.num_stations = IWL_MVM_STATION_COUNT_MAX; in iwl_req_fw_callback()
1385 fw->dbg.dump_mask = 0xffffffff; in iwl_req_fw_callback()
1410 &fw->ucode_capa, &usniffer_images); in iwl_req_fw_callback()
1415 if (fw_has_api(&drv->fw.ucode_capa, IWL_UCODE_TLV_API_NEW_VERSION)) in iwl_req_fw_callback()
1416 api_ver = drv->fw.ucode_ver; in iwl_req_fw_callback()
1418 api_ver = IWL_UCODE_API(drv->fw.ucode_ver); in iwl_req_fw_callback()
1437 if (fw->type == IWL_FW_DVM && validate_sec_sizes(drv, pieces, in iwl_req_fw_callback()
1452 size_t dbg_dest_size = sizeof(*drv->fw.dbg.dest_tlv) + in iwl_req_fw_callback()
1453 sizeof(drv->fw.dbg.dest_tlv->reg_ops[0]) * in iwl_req_fw_callback()
1454 drv->fw.dbg.n_dest_reg; in iwl_req_fw_callback()
1456 drv->fw.dbg.dest_tlv = kmalloc(dbg_dest_size, GFP_KERNEL); in iwl_req_fw_callback()
1458 if (!drv->fw.dbg.dest_tlv) in iwl_req_fw_callback()
1462 memcpy(drv->fw.dbg.dest_tlv, pieces->dbg_dest_tlv_v1, in iwl_req_fw_callback()
1466 drv->fw.dbg.dest_tlv; in iwl_req_fw_callback()
1481 sizeof(drv->fw.dbg.dest_tlv->reg_ops[0]) * in iwl_req_fw_callback()
1482 drv->fw.dbg.n_dest_reg); in iwl_req_fw_callback()
1498 for (i = 0; i < ARRAY_SIZE(drv->fw.dbg.conf_tlv); i++) { in iwl_req_fw_callback()
1500 drv->fw.dbg.conf_tlv[i] = in iwl_req_fw_callback()
1504 if (!drv->fw.dbg.conf_tlv[i]) in iwl_req_fw_callback()
1531 for (i = 0; i < ARRAY_SIZE(drv->fw.dbg.trigger_tlv); i++) { in iwl_req_fw_callback()
1544 drv->fw.dbg.trigger_tlv_len[i] = in iwl_req_fw_callback()
1546 drv->fw.dbg.trigger_tlv[i] = in iwl_req_fw_callback()
1548 drv->fw.dbg.trigger_tlv_len[i], in iwl_req_fw_callback()
1550 if (!drv->fw.dbg.trigger_tlv[i]) in iwl_req_fw_callback()
1557 drv->fw.dbg.mem_tlv = pieces->dbg_mem_tlv; in iwl_req_fw_callback()
1559 drv->fw.dbg.n_mem_tlv = pieces->n_mem_tlv; in iwl_req_fw_callback()
1566 fw->init_evtlog_ptr = pieces->init_evtlog_ptr; in iwl_req_fw_callback()
1568 fw->init_evtlog_size = (pieces->init_evtlog_size - 16)/12; in iwl_req_fw_callback()
1570 fw->init_evtlog_size = in iwl_req_fw_callback()
1572 fw->init_errlog_ptr = pieces->init_errlog_ptr; in iwl_req_fw_callback()
1573 fw->inst_evtlog_ptr = pieces->inst_evtlog_ptr; in iwl_req_fw_callback()
1575 fw->inst_evtlog_size = (pieces->inst_evtlog_size - 16)/12; in iwl_req_fw_callback()
1577 fw->inst_evtlog_size = in iwl_req_fw_callback()
1579 fw->inst_errlog_ptr = pieces->inst_errlog_ptr; in iwl_req_fw_callback()
1585 if (fw->ucode_capa.standard_phy_calibration_size > in iwl_req_fw_callback()
1587 fw->ucode_capa.standard_phy_calibration_size = in iwl_req_fw_callback()
1594 switch (fw->type) { in iwl_req_fw_callback()
1599 WARN(1, "Invalid fw type %d\n", fw->type); in iwl_req_fw_callback()
1607 drv->fw.fw_version, op->name); in iwl_req_fw_callback()