Lines Matching refs:pieces

422 static void alloc_sec_data(struct iwl_firmware_pieces *pieces,  in alloc_sec_data()  argument
426 struct fw_img_parsing *img = &pieces->img[type]; in alloc_sec_data()
442 static void set_sec_data(struct iwl_firmware_pieces *pieces, in set_sec_data() argument
447 alloc_sec_data(pieces, type, sec); in set_sec_data()
449 pieces->img[type].sec[sec].data = data; in set_sec_data()
452 static void set_sec_size(struct iwl_firmware_pieces *pieces, in set_sec_size() argument
457 alloc_sec_data(pieces, type, sec); in set_sec_size()
459 pieces->img[type].sec[sec].size = size; in set_sec_size()
462 static size_t get_sec_size(struct iwl_firmware_pieces *pieces, in get_sec_size() argument
466 return pieces->img[type].sec[sec].size; in get_sec_size()
469 static void set_sec_offset(struct iwl_firmware_pieces *pieces, in set_sec_offset() argument
474 alloc_sec_data(pieces, type, sec); in set_sec_offset()
476 pieces->img[type].sec[sec].offset = offset; in set_sec_offset()
583 struct iwl_firmware_pieces *pieces) in iwl_parse_v1_v2_firmware() argument
601 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
603 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
605 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
607 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
620 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
622 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
624 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
626 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
649 get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST) + in iwl_parse_v1_v2_firmware()
650 get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA) + in iwl_parse_v1_v2_firmware()
651 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST) + in iwl_parse_v1_v2_firmware()
652 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA)) { in iwl_parse_v1_v2_firmware()
661 set_sec_data(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST, src); in iwl_parse_v1_v2_firmware()
662 src += get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST); in iwl_parse_v1_v2_firmware()
663 set_sec_offset(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
665 set_sec_data(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA, src); in iwl_parse_v1_v2_firmware()
666 src += get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA); in iwl_parse_v1_v2_firmware()
667 set_sec_offset(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
669 set_sec_data(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST, src); in iwl_parse_v1_v2_firmware()
670 src += get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST); in iwl_parse_v1_v2_firmware()
671 set_sec_offset(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
673 set_sec_data(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA, src); in iwl_parse_v1_v2_firmware()
674 src += get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA); in iwl_parse_v1_v2_firmware()
675 set_sec_offset(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
779 struct iwl_firmware_pieces *pieces, in iwl_parse_tlv_firmware() argument
848 set_sec_data(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
850 set_sec_size(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
852 set_sec_offset(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
857 set_sec_data(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
859 set_sec_size(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
861 set_sec_offset(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
866 set_sec_data(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
868 set_sec_size(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
870 set_sec_offset(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
875 set_sec_data(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
877 set_sec_size(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
879 set_sec_offset(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
926 pieces->init_evtlog_ptr = in iwl_parse_tlv_firmware()
932 pieces->init_evtlog_size = in iwl_parse_tlv_firmware()
938 pieces->init_errlog_ptr = in iwl_parse_tlv_firmware()
944 pieces->inst_evtlog_ptr = in iwl_parse_tlv_firmware()
950 pieces->inst_evtlog_size = in iwl_parse_tlv_firmware()
956 pieces->inst_errlog_ptr = in iwl_parse_tlv_firmware()
965 set_sec_data(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
967 set_sec_size(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
969 set_sec_offset(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
974 set_sec_data(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
976 set_sec_size(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
978 set_sec_offset(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
989 iwl_store_ucode_sec(&pieces->img[IWL_UCODE_REGULAR], in iwl_parse_tlv_firmware()
994 iwl_store_ucode_sec(&pieces->img[IWL_UCODE_INIT], in iwl_parse_tlv_firmware()
999 iwl_store_ucode_sec(&pieces->img[IWL_UCODE_WOWLAN], in iwl_parse_tlv_firmware()
1021 iwl_store_ucode_sec(&pieces->img[IWL_UCODE_REGULAR], in iwl_parse_tlv_firmware()
1026 iwl_store_ucode_sec(&pieces->img[IWL_UCODE_INIT], in iwl_parse_tlv_firmware()
1031 iwl_store_ucode_sec(&pieces->img[IWL_UCODE_WOWLAN], in iwl_parse_tlv_firmware()
1067 pieces->major = le32_to_cpup(ptr++); in iwl_parse_tlv_firmware()
1073 "%u.%08x.%u %s", pieces->major, minor, in iwl_parse_tlv_firmware()
1082 pieces->dbg_dest_ver = (const u8 *)tlv_data; in iwl_parse_tlv_firmware()
1083 if (*pieces->dbg_dest_ver == 1) { in iwl_parse_tlv_firmware()
1085 } else if (*pieces->dbg_dest_ver == 0) { in iwl_parse_tlv_firmware()
1090 *pieces->dbg_dest_ver); in iwl_parse_tlv_firmware()
1094 if (pieces->dbg_dest_tlv_init) { in iwl_parse_tlv_firmware()
1100 pieces->dbg_dest_tlv_init = true; in iwl_parse_tlv_firmware()
1103 pieces->dbg_dest_tlv_v1 = dest_v1; in iwl_parse_tlv_firmware()
1106 pieces->dbg_dest_tlv = dest; in iwl_parse_tlv_firmware()
1130 if (!pieces->dbg_dest_tlv_init) { in iwl_parse_tlv_firmware()
1144 if (pieces->dbg_conf_tlv[conf->id]) { in iwl_parse_tlv_firmware()
1157 pieces->dbg_conf_tlv[conf->id] = conf; in iwl_parse_tlv_firmware()
1158 pieces->dbg_conf_tlv_len[conf->id] = tlv_len; in iwl_parse_tlv_firmware()
1173 if (pieces->dbg_trigger_tlv[trigger_id]) { in iwl_parse_tlv_firmware()
1182 pieces->dbg_trigger_tlv[trigger_id] = trigger; in iwl_parse_tlv_firmware()
1183 pieces->dbg_trigger_tlv_len[trigger_id] = tlv_len; in iwl_parse_tlv_firmware()
1199 iwl_store_ucode_sec(&pieces->img[IWL_UCODE_REGULAR_USNIFFER], in iwl_parse_tlv_firmware()
1246 size = sizeof(*pieces->dbg_mem_tlv) * in iwl_parse_tlv_firmware()
1247 (pieces->n_mem_tlv + 1); in iwl_parse_tlv_firmware()
1248 n = krealloc(pieces->dbg_mem_tlv, size, GFP_KERNEL); in iwl_parse_tlv_firmware()
1251 pieces->dbg_mem_tlv = n; in iwl_parse_tlv_firmware()
1252 pieces->dbg_mem_tlv[pieces->n_mem_tlv] = *dbg_mem; in iwl_parse_tlv_firmware()
1253 pieces->n_mem_tlv++; in iwl_parse_tlv_firmware()
1466 struct iwl_firmware_pieces *pieces, in iwl_alloc_ucode() argument
1469 return iwl_alloc_ucode_mem(&drv->fw.img[type], &pieces->img[type]); in iwl_alloc_ucode()
1473 struct iwl_firmware_pieces *pieces, in validate_sec_sizes() argument
1477 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1480 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1483 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST)); in validate_sec_sizes()
1485 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA)); in validate_sec_sizes()
1488 if (get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST) > in validate_sec_sizes()
1491 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1496 if (get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA) > in validate_sec_sizes()
1499 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1504 if (get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST) > in validate_sec_sizes()
1507 get_sec_size(pieces, IWL_UCODE_INIT, in validate_sec_sizes()
1512 if (get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA) > in validate_sec_sizes()
1515 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1596 struct iwl_firmware_pieces *pieces; in iwl_req_fw_callback() local
1615 pieces = kzalloc(sizeof(*pieces), GFP_KERNEL); in iwl_req_fw_callback()
1616 if (!pieces) in iwl_req_fw_callback()
1635 err = iwl_parse_v1_v2_firmware(drv, ucode_raw, pieces); in iwl_req_fw_callback()
1637 err = iwl_parse_tlv_firmware(drv, ucode_raw, pieces, in iwl_req_fw_callback()
1665 if (fw->type == IWL_FW_DVM && validate_sec_sizes(drv, pieces, in iwl_req_fw_callback()
1676 if (iwl_alloc_ucode(drv, pieces, i)) in iwl_req_fw_callback()
1679 if (pieces->dbg_dest_tlv_init) { in iwl_req_fw_callback()
1689 if (*pieces->dbg_dest_ver == 0) { in iwl_req_fw_callback()
1690 memcpy(drv->fw.dbg.dest_tlv, pieces->dbg_dest_tlv_v1, in iwl_req_fw_callback()
1696 dest_tlv->version = pieces->dbg_dest_tlv->version; in iwl_req_fw_callback()
1698 pieces->dbg_dest_tlv->monitor_mode; in iwl_req_fw_callback()
1700 pieces->dbg_dest_tlv->size_power; in iwl_req_fw_callback()
1702 pieces->dbg_dest_tlv->wrap_count; in iwl_req_fw_callback()
1704 pieces->dbg_dest_tlv->write_ptr_reg; in iwl_req_fw_callback()
1706 pieces->dbg_dest_tlv->base_shift; in iwl_req_fw_callback()
1708 pieces->dbg_dest_tlv->reg_ops, in iwl_req_fw_callback()
1720 dest_tlv->base_reg = pieces->dbg_dest_tlv->cfg_reg; in iwl_req_fw_callback()
1722 pieces->dbg_dest_tlv->size_shift; in iwl_req_fw_callback()
1727 if (pieces->dbg_conf_tlv[i]) { in iwl_req_fw_callback()
1729 kmemdup(pieces->dbg_conf_tlv[i], in iwl_req_fw_callback()
1730 pieces->dbg_conf_tlv_len[i], in iwl_req_fw_callback()
1760 if (pieces->dbg_trigger_tlv[i]) { in iwl_req_fw_callback()
1768 if (WARN_ON(pieces->dbg_trigger_tlv_len[i] < in iwl_req_fw_callback()
1773 pieces->dbg_trigger_tlv_len[i]; in iwl_req_fw_callback()
1775 kmemdup(pieces->dbg_trigger_tlv[i], in iwl_req_fw_callback()
1785 drv->fw.dbg.mem_tlv = pieces->dbg_mem_tlv; in iwl_req_fw_callback()
1786 pieces->dbg_mem_tlv = NULL; in iwl_req_fw_callback()
1787 drv->fw.dbg.n_mem_tlv = pieces->n_mem_tlv; in iwl_req_fw_callback()
1794 fw->init_evtlog_ptr = pieces->init_evtlog_ptr; in iwl_req_fw_callback()
1795 if (pieces->init_evtlog_size) in iwl_req_fw_callback()
1796 fw->init_evtlog_size = (pieces->init_evtlog_size - 16)/12; in iwl_req_fw_callback()
1800 fw->init_errlog_ptr = pieces->init_errlog_ptr; in iwl_req_fw_callback()
1801 fw->inst_evtlog_ptr = pieces->inst_evtlog_ptr; in iwl_req_fw_callback()
1802 if (pieces->inst_evtlog_size) in iwl_req_fw_callback()
1803 fw->inst_evtlog_size = (pieces->inst_evtlog_size - 16)/12; in iwl_req_fw_callback()
1807 fw->inst_errlog_ptr = pieces->inst_errlog_ptr; in iwl_req_fw_callback()
1837 if (pieces->major >= IWL_MLD_SUPPORTED_FW_VERSION && in iwl_req_fw_callback()
1841 if (pieces->major >= IWL_MLD_SUPPORTED_FW_VERSION && in iwl_req_fw_callback()
1891 if (pieces) { in iwl_req_fw_callback()
1892 for (i = 0; i < ARRAY_SIZE(pieces->img); i++) in iwl_req_fw_callback()
1893 kfree(pieces->img[i].sec); in iwl_req_fw_callback()
1894 kfree(pieces->dbg_mem_tlv); in iwl_req_fw_callback()
1895 kfree(pieces); in iwl_req_fw_callback()