Lines Matching refs:pieces

263 static struct fw_sec *get_sec(struct iwl_firmware_pieces *pieces,  in get_sec()  argument
267 return &pieces->img[type].sec[sec]; in get_sec()
270 static void alloc_sec_data(struct iwl_firmware_pieces *pieces, in alloc_sec_data() argument
274 struct fw_img_parsing *img = &pieces->img[type]; in alloc_sec_data()
290 static void set_sec_data(struct iwl_firmware_pieces *pieces, in set_sec_data() argument
295 alloc_sec_data(pieces, type, sec); in set_sec_data()
297 pieces->img[type].sec[sec].data = data; in set_sec_data()
300 static void set_sec_size(struct iwl_firmware_pieces *pieces, in set_sec_size() argument
305 alloc_sec_data(pieces, type, sec); in set_sec_size()
307 pieces->img[type].sec[sec].size = size; in set_sec_size()
310 static size_t get_sec_size(struct iwl_firmware_pieces *pieces, in get_sec_size() argument
314 return pieces->img[type].sec[sec].size; in get_sec_size()
317 static void set_sec_offset(struct iwl_firmware_pieces *pieces, in set_sec_offset() argument
322 alloc_sec_data(pieces, type, sec); in set_sec_offset()
324 pieces->img[type].sec[sec].offset = offset; in set_sec_offset()
330 static int iwl_store_ucode_sec(struct iwl_firmware_pieces *pieces, in iwl_store_ucode_sec() argument
339 if (WARN_ON(!pieces || !data || type >= IWL_UCODE_TYPE_MAX)) in iwl_store_ucode_sec()
344 img = &pieces->img[type]; in iwl_store_ucode_sec()
435 struct iwl_firmware_pieces *pieces) in iwl_parse_v1_v2_firmware() argument
453 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
455 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
457 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
459 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
472 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
474 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
476 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
478 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
501 get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST) + in iwl_parse_v1_v2_firmware()
502 get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA) + in iwl_parse_v1_v2_firmware()
503 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST) + in iwl_parse_v1_v2_firmware()
504 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA)) { in iwl_parse_v1_v2_firmware()
513 set_sec_data(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST, src); in iwl_parse_v1_v2_firmware()
514 src += get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST); in iwl_parse_v1_v2_firmware()
515 set_sec_offset(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
517 set_sec_data(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA, src); in iwl_parse_v1_v2_firmware()
518 src += get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA); in iwl_parse_v1_v2_firmware()
519 set_sec_offset(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
521 set_sec_data(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST, src); in iwl_parse_v1_v2_firmware()
522 src += get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST); in iwl_parse_v1_v2_firmware()
523 set_sec_offset(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
525 set_sec_data(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA, src); in iwl_parse_v1_v2_firmware()
526 src += get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA); in iwl_parse_v1_v2_firmware()
527 set_sec_offset(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
631 struct iwl_firmware_pieces *pieces, in iwl_parse_tlv_firmware() argument
700 set_sec_data(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
702 set_sec_size(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
704 set_sec_offset(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
709 set_sec_data(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
711 set_sec_size(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
713 set_sec_offset(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
718 set_sec_data(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
720 set_sec_size(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
722 set_sec_offset(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
727 set_sec_data(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
729 set_sec_size(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
731 set_sec_offset(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
778 pieces->init_evtlog_ptr = in iwl_parse_tlv_firmware()
784 pieces->init_evtlog_size = in iwl_parse_tlv_firmware()
790 pieces->init_errlog_ptr = in iwl_parse_tlv_firmware()
796 pieces->inst_evtlog_ptr = in iwl_parse_tlv_firmware()
802 pieces->inst_evtlog_size = in iwl_parse_tlv_firmware()
808 pieces->inst_errlog_ptr = in iwl_parse_tlv_firmware()
817 set_sec_data(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
819 set_sec_size(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
821 set_sec_offset(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
826 set_sec_data(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
828 set_sec_size(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
830 set_sec_offset(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
841 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
846 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
851 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
873 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
878 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
883 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
940 pieces->dbg_dest_ver = (const u8 *)tlv_data; in iwl_parse_tlv_firmware()
941 if (*pieces->dbg_dest_ver == 1) { in iwl_parse_tlv_firmware()
943 } else if (*pieces->dbg_dest_ver == 0) { in iwl_parse_tlv_firmware()
948 *pieces->dbg_dest_ver); in iwl_parse_tlv_firmware()
952 if (pieces->dbg_dest_tlv_init) { in iwl_parse_tlv_firmware()
958 pieces->dbg_dest_tlv_init = true; in iwl_parse_tlv_firmware()
961 pieces->dbg_dest_tlv_v1 = dest_v1; in iwl_parse_tlv_firmware()
964 pieces->dbg_dest_tlv = dest; in iwl_parse_tlv_firmware()
988 if (!pieces->dbg_dest_tlv_init) { in iwl_parse_tlv_firmware()
1002 if (pieces->dbg_conf_tlv[conf->id]) { in iwl_parse_tlv_firmware()
1015 pieces->dbg_conf_tlv[conf->id] = conf; in iwl_parse_tlv_firmware()
1016 pieces->dbg_conf_tlv_len[conf->id] = tlv_len; in iwl_parse_tlv_firmware()
1031 if (pieces->dbg_trigger_tlv[trigger_id]) { in iwl_parse_tlv_firmware()
1040 pieces->dbg_trigger_tlv[trigger_id] = trigger; in iwl_parse_tlv_firmware()
1041 pieces->dbg_trigger_tlv_len[trigger_id] = tlv_len; in iwl_parse_tlv_firmware()
1057 iwl_store_ucode_sec(pieces, tlv_data, in iwl_parse_tlv_firmware()
1105 size = sizeof(*pieces->dbg_mem_tlv) * in iwl_parse_tlv_firmware()
1106 (pieces->n_mem_tlv + 1); in iwl_parse_tlv_firmware()
1107 n = krealloc(pieces->dbg_mem_tlv, size, GFP_KERNEL); in iwl_parse_tlv_firmware()
1110 pieces->dbg_mem_tlv = n; in iwl_parse_tlv_firmware()
1111 pieces->dbg_mem_tlv[pieces->n_mem_tlv] = *dbg_mem; in iwl_parse_tlv_firmware()
1112 pieces->n_mem_tlv++; in iwl_parse_tlv_firmware()
1269 struct iwl_firmware_pieces *pieces, in iwl_alloc_ucode() argument
1275 sec = kcalloc(pieces->img[type].sec_counter, sizeof(*sec), GFP_KERNEL); in iwl_alloc_ucode()
1279 drv->fw.img[type].num_sec = pieces->img[type].sec_counter; in iwl_alloc_ucode()
1281 for (i = 0; i < pieces->img[type].sec_counter; i++) in iwl_alloc_ucode()
1282 if (iwl_alloc_fw_desc(drv, &sec[i], get_sec(pieces, type, i))) in iwl_alloc_ucode()
1289 struct iwl_firmware_pieces *pieces, in validate_sec_sizes() argument
1293 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1296 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1299 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST)); in validate_sec_sizes()
1301 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA)); in validate_sec_sizes()
1304 if (get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST) > in validate_sec_sizes()
1307 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1312 if (get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA) > in validate_sec_sizes()
1315 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1320 if (get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST) > in validate_sec_sizes()
1323 get_sec_size(pieces, IWL_UCODE_INIT, in validate_sec_sizes()
1328 if (get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA) > in validate_sec_sizes()
1331 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1398 struct iwl_firmware_pieces *pieces; in iwl_req_fw_callback() local
1416 pieces = kzalloc(sizeof(*pieces), GFP_KERNEL); in iwl_req_fw_callback()
1417 if (!pieces) in iwl_req_fw_callback()
1436 err = iwl_parse_v1_v2_firmware(drv, ucode_raw, pieces); in iwl_req_fw_callback()
1438 err = iwl_parse_tlv_firmware(drv, ucode_raw, pieces, in iwl_req_fw_callback()
1466 if (fw->type == IWL_FW_DVM && validate_sec_sizes(drv, pieces, in iwl_req_fw_callback()
1477 if (iwl_alloc_ucode(drv, pieces, i)) in iwl_req_fw_callback()
1480 if (pieces->dbg_dest_tlv_init) { in iwl_req_fw_callback()
1490 if (*pieces->dbg_dest_ver == 0) { in iwl_req_fw_callback()
1491 memcpy(drv->fw.dbg.dest_tlv, pieces->dbg_dest_tlv_v1, in iwl_req_fw_callback()
1497 dest_tlv->version = pieces->dbg_dest_tlv->version; in iwl_req_fw_callback()
1499 pieces->dbg_dest_tlv->monitor_mode; in iwl_req_fw_callback()
1501 pieces->dbg_dest_tlv->size_power; in iwl_req_fw_callback()
1503 pieces->dbg_dest_tlv->wrap_count; in iwl_req_fw_callback()
1505 pieces->dbg_dest_tlv->write_ptr_reg; in iwl_req_fw_callback()
1507 pieces->dbg_dest_tlv->base_shift; in iwl_req_fw_callback()
1509 pieces->dbg_dest_tlv->reg_ops, in iwl_req_fw_callback()
1521 dest_tlv->base_reg = pieces->dbg_dest_tlv->cfg_reg; in iwl_req_fw_callback()
1523 pieces->dbg_dest_tlv->size_shift; in iwl_req_fw_callback()
1528 if (pieces->dbg_conf_tlv[i]) { in iwl_req_fw_callback()
1530 kmemdup(pieces->dbg_conf_tlv[i], in iwl_req_fw_callback()
1531 pieces->dbg_conf_tlv_len[i], in iwl_req_fw_callback()
1561 if (pieces->dbg_trigger_tlv[i]) { in iwl_req_fw_callback()
1569 if (WARN_ON(pieces->dbg_trigger_tlv_len[i] < in iwl_req_fw_callback()
1574 pieces->dbg_trigger_tlv_len[i]; in iwl_req_fw_callback()
1576 kmemdup(pieces->dbg_trigger_tlv[i], in iwl_req_fw_callback()
1586 drv->fw.dbg.mem_tlv = pieces->dbg_mem_tlv; in iwl_req_fw_callback()
1587 pieces->dbg_mem_tlv = NULL; in iwl_req_fw_callback()
1588 drv->fw.dbg.n_mem_tlv = pieces->n_mem_tlv; in iwl_req_fw_callback()
1595 fw->init_evtlog_ptr = pieces->init_evtlog_ptr; in iwl_req_fw_callback()
1596 if (pieces->init_evtlog_size) in iwl_req_fw_callback()
1597 fw->init_evtlog_size = (pieces->init_evtlog_size - 16)/12; in iwl_req_fw_callback()
1601 fw->init_errlog_ptr = pieces->init_errlog_ptr; in iwl_req_fw_callback()
1602 fw->inst_evtlog_ptr = pieces->inst_evtlog_ptr; in iwl_req_fw_callback()
1603 if (pieces->inst_evtlog_size) in iwl_req_fw_callback()
1604 fw->inst_evtlog_size = (pieces->inst_evtlog_size - 16)/12; in iwl_req_fw_callback()
1608 fw->inst_errlog_ptr = pieces->inst_errlog_ptr; in iwl_req_fw_callback()
1690 if (pieces) { in iwl_req_fw_callback()
1691 for (i = 0; i < ARRAY_SIZE(pieces->img); i++) in iwl_req_fw_callback()
1692 kfree(pieces->img[i].sec); in iwl_req_fw_callback()
1693 kfree(pieces->dbg_mem_tlv); in iwl_req_fw_callback()
1694 kfree(pieces); in iwl_req_fw_callback()