Lines Matching full:pieces

321 static void alloc_sec_data(struct iwl_firmware_pieces *pieces,  in alloc_sec_data()  argument
325 struct fw_img_parsing *img = &pieces->img[type]; in alloc_sec_data()
341 static void set_sec_data(struct iwl_firmware_pieces *pieces, in set_sec_data() argument
346 alloc_sec_data(pieces, type, sec); in set_sec_data()
348 pieces->img[type].sec[sec].data = data; in set_sec_data()
351 static void set_sec_size(struct iwl_firmware_pieces *pieces, in set_sec_size() argument
356 alloc_sec_data(pieces, type, sec); in set_sec_size()
358 pieces->img[type].sec[sec].size = size; in set_sec_size()
361 static size_t get_sec_size(struct iwl_firmware_pieces *pieces, in get_sec_size() argument
365 return pieces->img[type].sec[sec].size; in get_sec_size()
368 static void set_sec_offset(struct iwl_firmware_pieces *pieces, in set_sec_offset() argument
373 alloc_sec_data(pieces, type, sec); in set_sec_offset()
375 pieces->img[type].sec[sec].offset = offset; in set_sec_offset()
482 struct iwl_firmware_pieces *pieces) in iwl_parse_v1_v2_firmware() argument
500 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
502 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
504 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
506 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
519 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
521 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
523 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
525 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
548 get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST) + in iwl_parse_v1_v2_firmware()
549 get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA) + in iwl_parse_v1_v2_firmware()
550 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST) + in iwl_parse_v1_v2_firmware()
551 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA)) { in iwl_parse_v1_v2_firmware()
560 set_sec_data(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST, src); in iwl_parse_v1_v2_firmware()
561 src += get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST); in iwl_parse_v1_v2_firmware()
562 set_sec_offset(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
564 set_sec_data(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA, src); in iwl_parse_v1_v2_firmware()
565 src += get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA); in iwl_parse_v1_v2_firmware()
566 set_sec_offset(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
568 set_sec_data(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST, src); in iwl_parse_v1_v2_firmware()
569 src += get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST); in iwl_parse_v1_v2_firmware()
570 set_sec_offset(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
572 set_sec_data(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA, src); in iwl_parse_v1_v2_firmware()
573 src += get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA); in iwl_parse_v1_v2_firmware()
574 set_sec_offset(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
678 struct iwl_firmware_pieces *pieces, in iwl_parse_tlv_firmware() argument
747 set_sec_data(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
749 set_sec_size(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
751 set_sec_offset(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
756 set_sec_data(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
758 set_sec_size(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
760 set_sec_offset(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
765 set_sec_data(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
767 set_sec_size(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
769 set_sec_offset(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
774 set_sec_data(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
776 set_sec_size(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
778 set_sec_offset(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
825 pieces->init_evtlog_ptr = in iwl_parse_tlv_firmware()
831 pieces->init_evtlog_size = in iwl_parse_tlv_firmware()
837 pieces->init_errlog_ptr = in iwl_parse_tlv_firmware()
843 pieces->inst_evtlog_ptr = in iwl_parse_tlv_firmware()
849 pieces->inst_evtlog_size = in iwl_parse_tlv_firmware()
855 pieces->inst_errlog_ptr = in iwl_parse_tlv_firmware()
864 set_sec_data(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
866 set_sec_size(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
868 set_sec_offset(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
873 set_sec_data(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
875 set_sec_size(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
877 set_sec_offset(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
888 iwl_store_ucode_sec(&pieces->img[IWL_UCODE_REGULAR], in iwl_parse_tlv_firmware()
893 iwl_store_ucode_sec(&pieces->img[IWL_UCODE_INIT], in iwl_parse_tlv_firmware()
898 iwl_store_ucode_sec(&pieces->img[IWL_UCODE_WOWLAN], in iwl_parse_tlv_firmware()
920 iwl_store_ucode_sec(&pieces->img[IWL_UCODE_REGULAR], in iwl_parse_tlv_firmware()
925 iwl_store_ucode_sec(&pieces->img[IWL_UCODE_INIT], in iwl_parse_tlv_firmware()
930 iwl_store_ucode_sec(&pieces->img[IWL_UCODE_WOWLAN], in iwl_parse_tlv_firmware()
981 pieces->dbg_dest_ver = (const u8 *)tlv_data; in iwl_parse_tlv_firmware()
982 if (*pieces->dbg_dest_ver == 1) { in iwl_parse_tlv_firmware()
984 } else if (*pieces->dbg_dest_ver == 0) { in iwl_parse_tlv_firmware()
989 *pieces->dbg_dest_ver); in iwl_parse_tlv_firmware()
993 if (pieces->dbg_dest_tlv_init) { in iwl_parse_tlv_firmware()
999 pieces->dbg_dest_tlv_init = true; in iwl_parse_tlv_firmware()
1002 pieces->dbg_dest_tlv_v1 = dest_v1; in iwl_parse_tlv_firmware()
1005 pieces->dbg_dest_tlv = dest; in iwl_parse_tlv_firmware()
1029 if (!pieces->dbg_dest_tlv_init) { in iwl_parse_tlv_firmware()
1043 if (pieces->dbg_conf_tlv[conf->id]) { in iwl_parse_tlv_firmware()
1056 pieces->dbg_conf_tlv[conf->id] = conf; in iwl_parse_tlv_firmware()
1057 pieces->dbg_conf_tlv_len[conf->id] = tlv_len; in iwl_parse_tlv_firmware()
1072 if (pieces->dbg_trigger_tlv[trigger_id]) { in iwl_parse_tlv_firmware()
1081 pieces->dbg_trigger_tlv[trigger_id] = trigger; in iwl_parse_tlv_firmware()
1082 pieces->dbg_trigger_tlv_len[trigger_id] = tlv_len; in iwl_parse_tlv_firmware()
1098 iwl_store_ucode_sec(&pieces->img[IWL_UCODE_REGULAR_USNIFFER], in iwl_parse_tlv_firmware()
1145 size = sizeof(*pieces->dbg_mem_tlv) * in iwl_parse_tlv_firmware()
1146 (pieces->n_mem_tlv + 1); in iwl_parse_tlv_firmware()
1147 n = krealloc(pieces->dbg_mem_tlv, size, GFP_KERNEL); in iwl_parse_tlv_firmware()
1150 pieces->dbg_mem_tlv = n; in iwl_parse_tlv_firmware()
1151 pieces->dbg_mem_tlv[pieces->n_mem_tlv] = *dbg_mem; in iwl_parse_tlv_firmware()
1152 pieces->n_mem_tlv++; in iwl_parse_tlv_firmware()
1356 struct iwl_firmware_pieces *pieces, in iwl_alloc_ucode() argument
1359 return iwl_alloc_ucode_mem(&drv->fw.img[type], &pieces->img[type]); in iwl_alloc_ucode()
1363 struct iwl_firmware_pieces *pieces, in validate_sec_sizes() argument
1367 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1370 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1373 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST)); in validate_sec_sizes()
1375 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA)); in validate_sec_sizes()
1378 if (get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST) > in validate_sec_sizes()
1381 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1386 if (get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA) > in validate_sec_sizes()
1389 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1394 if (get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST) > in validate_sec_sizes()
1397 get_sec_size(pieces, IWL_UCODE_INIT, in validate_sec_sizes()
1402 if (get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA) > in validate_sec_sizes()
1405 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1484 struct iwl_firmware_pieces *pieces; in iwl_req_fw_callback() local
1502 pieces = kzalloc(sizeof(*pieces), GFP_KERNEL); in iwl_req_fw_callback()
1503 if (!pieces) in iwl_req_fw_callback()
1522 err = iwl_parse_v1_v2_firmware(drv, ucode_raw, pieces); in iwl_req_fw_callback()
1524 err = iwl_parse_tlv_firmware(drv, ucode_raw, pieces, in iwl_req_fw_callback()
1552 if (fw->type == IWL_FW_DVM && validate_sec_sizes(drv, pieces, in iwl_req_fw_callback()
1563 if (iwl_alloc_ucode(drv, pieces, i)) in iwl_req_fw_callback()
1566 if (pieces->dbg_dest_tlv_init) { in iwl_req_fw_callback()
1576 if (*pieces->dbg_dest_ver == 0) { in iwl_req_fw_callback()
1577 memcpy(drv->fw.dbg.dest_tlv, pieces->dbg_dest_tlv_v1, in iwl_req_fw_callback()
1583 dest_tlv->version = pieces->dbg_dest_tlv->version; in iwl_req_fw_callback()
1585 pieces->dbg_dest_tlv->monitor_mode; in iwl_req_fw_callback()
1587 pieces->dbg_dest_tlv->size_power; in iwl_req_fw_callback()
1589 pieces->dbg_dest_tlv->wrap_count; in iwl_req_fw_callback()
1591 pieces->dbg_dest_tlv->write_ptr_reg; in iwl_req_fw_callback()
1593 pieces->dbg_dest_tlv->base_shift; in iwl_req_fw_callback()
1595 pieces->dbg_dest_tlv->reg_ops, in iwl_req_fw_callback()
1607 dest_tlv->base_reg = pieces->dbg_dest_tlv->cfg_reg; in iwl_req_fw_callback()
1609 pieces->dbg_dest_tlv->size_shift; in iwl_req_fw_callback()
1614 if (pieces->dbg_conf_tlv[i]) { in iwl_req_fw_callback()
1616 kmemdup(pieces->dbg_conf_tlv[i], in iwl_req_fw_callback()
1617 pieces->dbg_conf_tlv_len[i], in iwl_req_fw_callback()
1647 if (pieces->dbg_trigger_tlv[i]) { in iwl_req_fw_callback()
1655 if (WARN_ON(pieces->dbg_trigger_tlv_len[i] < in iwl_req_fw_callback()
1660 pieces->dbg_trigger_tlv_len[i]; in iwl_req_fw_callback()
1662 kmemdup(pieces->dbg_trigger_tlv[i], in iwl_req_fw_callback()
1672 drv->fw.dbg.mem_tlv = pieces->dbg_mem_tlv; in iwl_req_fw_callback()
1673 pieces->dbg_mem_tlv = NULL; in iwl_req_fw_callback()
1674 drv->fw.dbg.n_mem_tlv = pieces->n_mem_tlv; in iwl_req_fw_callback()
1681 fw->init_evtlog_ptr = pieces->init_evtlog_ptr; in iwl_req_fw_callback()
1682 if (pieces->init_evtlog_size) in iwl_req_fw_callback()
1683 fw->init_evtlog_size = (pieces->init_evtlog_size - 16)/12; in iwl_req_fw_callback()
1687 fw->init_errlog_ptr = pieces->init_errlog_ptr; in iwl_req_fw_callback()
1688 fw->inst_evtlog_ptr = pieces->inst_evtlog_ptr; in iwl_req_fw_callback()
1689 if (pieces->inst_evtlog_size) in iwl_req_fw_callback()
1690 fw->inst_evtlog_size = (pieces->inst_evtlog_size - 16)/12; in iwl_req_fw_callback()
1694 fw->inst_errlog_ptr = pieces->inst_errlog_ptr; in iwl_req_fw_callback()
1764 if (pieces) { in iwl_req_fw_callback()
1765 for (i = 0; i < ARRAY_SIZE(pieces->img); i++) in iwl_req_fw_callback()
1766 kfree(pieces->img[i].sec); in iwl_req_fw_callback()
1767 kfree(pieces->dbg_mem_tlv); in iwl_req_fw_callback()
1768 kfree(pieces); in iwl_req_fw_callback()