Lines Matching refs:pieces
302 static struct fw_sec *get_sec(struct iwl_firmware_pieces *pieces, in get_sec() argument
306 return &pieces->img[type].sec[sec]; in get_sec()
309 static void set_sec_data(struct iwl_firmware_pieces *pieces, in set_sec_data() argument
314 pieces->img[type].sec[sec].data = data; in set_sec_data()
317 static void set_sec_size(struct iwl_firmware_pieces *pieces, in set_sec_size() argument
322 pieces->img[type].sec[sec].size = size; in set_sec_size()
325 static size_t get_sec_size(struct iwl_firmware_pieces *pieces, in get_sec_size() argument
329 return pieces->img[type].sec[sec].size; in get_sec_size()
332 static void set_sec_offset(struct iwl_firmware_pieces *pieces, in set_sec_offset() argument
337 pieces->img[type].sec[sec].offset = offset; in set_sec_offset()
378 static int iwl_store_ucode_sec(struct iwl_firmware_pieces *pieces, in iwl_store_ucode_sec() argument
386 if (WARN_ON(!pieces || !data || type >= IWL_UCODE_TYPE_MAX)) in iwl_store_ucode_sec()
391 img = &pieces->img[type]; in iwl_store_ucode_sec()
455 struct iwl_firmware_pieces *pieces) in iwl_parse_v1_v2_firmware() argument
473 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
475 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
477 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
479 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
492 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
494 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
496 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
498 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
523 get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST) + in iwl_parse_v1_v2_firmware()
524 get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA) + in iwl_parse_v1_v2_firmware()
525 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST) + in iwl_parse_v1_v2_firmware()
526 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA)) { in iwl_parse_v1_v2_firmware()
535 set_sec_data(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST, src); in iwl_parse_v1_v2_firmware()
536 src += get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST); in iwl_parse_v1_v2_firmware()
537 set_sec_offset(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
539 set_sec_data(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA, src); in iwl_parse_v1_v2_firmware()
540 src += get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA); in iwl_parse_v1_v2_firmware()
541 set_sec_offset(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
543 set_sec_data(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST, src); in iwl_parse_v1_v2_firmware()
544 src += get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST); in iwl_parse_v1_v2_firmware()
545 set_sec_offset(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST, in iwl_parse_v1_v2_firmware()
547 set_sec_data(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA, src); in iwl_parse_v1_v2_firmware()
548 src += get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA); in iwl_parse_v1_v2_firmware()
549 set_sec_offset(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA, in iwl_parse_v1_v2_firmware()
556 struct iwl_firmware_pieces *pieces, in iwl_parse_tlv_firmware() argument
626 set_sec_data(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
628 set_sec_size(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
630 set_sec_offset(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
635 set_sec_data(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
637 set_sec_size(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
639 set_sec_offset(pieces, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
644 set_sec_data(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
646 set_sec_size(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
648 set_sec_offset(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
653 set_sec_data(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
655 set_sec_size(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
657 set_sec_offset(pieces, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
706 pieces->init_evtlog_ptr = in iwl_parse_tlv_firmware()
712 pieces->init_evtlog_size = in iwl_parse_tlv_firmware()
718 pieces->init_errlog_ptr = in iwl_parse_tlv_firmware()
724 pieces->inst_evtlog_ptr = in iwl_parse_tlv_firmware()
730 pieces->inst_evtlog_size = in iwl_parse_tlv_firmware()
736 pieces->inst_errlog_ptr = in iwl_parse_tlv_firmware()
745 set_sec_data(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
747 set_sec_size(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
749 set_sec_offset(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
754 set_sec_data(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
756 set_sec_size(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
758 set_sec_offset(pieces, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
769 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
774 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
779 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
801 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_REGULAR, in iwl_parse_tlv_firmware()
806 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_INIT, in iwl_parse_tlv_firmware()
811 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_WOWLAN, in iwl_parse_tlv_firmware()
863 if (pieces->dbg_dest_tlv) { in iwl_parse_tlv_firmware()
869 pieces->dbg_dest_tlv = dest; in iwl_parse_tlv_firmware()
884 if (!pieces->dbg_dest_tlv) { in iwl_parse_tlv_firmware()
898 if (pieces->dbg_conf_tlv[conf->id]) { in iwl_parse_tlv_firmware()
911 pieces->dbg_conf_tlv[conf->id] = conf; in iwl_parse_tlv_firmware()
912 pieces->dbg_conf_tlv_len[conf->id] = tlv_len; in iwl_parse_tlv_firmware()
927 if (pieces->dbg_trigger_tlv[trigger_id]) { in iwl_parse_tlv_firmware()
936 pieces->dbg_trigger_tlv[trigger_id] = trigger; in iwl_parse_tlv_firmware()
937 pieces->dbg_trigger_tlv_len[trigger_id] = tlv_len; in iwl_parse_tlv_firmware()
942 iwl_store_ucode_sec(pieces, tlv_data, in iwl_parse_tlv_firmware()
981 struct iwl_firmware_pieces *pieces, in iwl_alloc_ucode() argument
986 i < IWL_UCODE_SECTION_MAX && get_sec_size(pieces, type, i); in iwl_alloc_ucode()
989 get_sec(pieces, type, i))) in iwl_alloc_ucode()
995 struct iwl_firmware_pieces *pieces, in validate_sec_sizes() argument
999 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1002 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1005 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST)); in validate_sec_sizes()
1007 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA)); in validate_sec_sizes()
1010 if (get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST) > in validate_sec_sizes()
1013 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1018 if (get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA) > in validate_sec_sizes()
1021 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1026 if (get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST) > in validate_sec_sizes()
1029 get_sec_size(pieces, IWL_UCODE_INIT, in validate_sec_sizes()
1034 if (get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA) > in validate_sec_sizes()
1037 get_sec_size(pieces, IWL_UCODE_REGULAR, in validate_sec_sizes()
1101 struct iwl_firmware_pieces *pieces; in iwl_req_fw_callback() local
1118 pieces = kzalloc(sizeof(*pieces), GFP_KERNEL); in iwl_req_fw_callback()
1119 if (!pieces) in iwl_req_fw_callback()
1143 err = iwl_parse_v1_v2_firmware(drv, ucode_raw, pieces); in iwl_req_fw_callback()
1145 err = iwl_parse_tlv_firmware(drv, ucode_raw, pieces, in iwl_req_fw_callback()
1189 if (!fw->mvm_fw && validate_sec_sizes(drv, pieces, drv->cfg)) in iwl_req_fw_callback()
1198 if (iwl_alloc_ucode(drv, pieces, i)) in iwl_req_fw_callback()
1201 if (pieces->dbg_dest_tlv) { in iwl_req_fw_callback()
1203 kmemdup(pieces->dbg_dest_tlv, in iwl_req_fw_callback()
1204 sizeof(*pieces->dbg_dest_tlv) + in iwl_req_fw_callback()
1205 sizeof(pieces->dbg_dest_tlv->reg_ops[0]) * in iwl_req_fw_callback()
1213 if (pieces->dbg_conf_tlv[i]) { in iwl_req_fw_callback()
1215 pieces->dbg_conf_tlv_len[i]; in iwl_req_fw_callback()
1217 kmemdup(pieces->dbg_conf_tlv[i], in iwl_req_fw_callback()
1244 if (pieces->dbg_trigger_tlv[i]) { in iwl_req_fw_callback()
1252 if (WARN_ON(pieces->dbg_trigger_tlv_len[i] < in iwl_req_fw_callback()
1257 pieces->dbg_trigger_tlv_len[i]; in iwl_req_fw_callback()
1259 kmemdup(pieces->dbg_trigger_tlv[i], in iwl_req_fw_callback()
1274 fw->init_evtlog_ptr = pieces->init_evtlog_ptr; in iwl_req_fw_callback()
1275 if (pieces->init_evtlog_size) in iwl_req_fw_callback()
1276 fw->init_evtlog_size = (pieces->init_evtlog_size - 16)/12; in iwl_req_fw_callback()
1280 fw->init_errlog_ptr = pieces->init_errlog_ptr; in iwl_req_fw_callback()
1281 fw->inst_evtlog_ptr = pieces->inst_evtlog_ptr; in iwl_req_fw_callback()
1282 if (pieces->inst_evtlog_size) in iwl_req_fw_callback()
1283 fw->inst_evtlog_size = (pieces->inst_evtlog_size - 16)/12; in iwl_req_fw_callback()
1287 fw->inst_errlog_ptr = pieces->inst_errlog_ptr; in iwl_req_fw_callback()
1346 kfree(pieces); in iwl_req_fw_callback()
1354 kfree(pieces); in iwl_req_fw_callback()
1362 kfree(pieces); in iwl_req_fw_callback()