Lines Matching defs:pieces
315 * These functions are just to extract uCode section data from the pieces
318 static struct fw_sec *get_sec(struct iwl_firmware_pieces *pieces,
322 return &pieces->img[type].sec[sec];
325 static void alloc_sec_data(struct iwl_firmware_pieces *pieces,
329 struct fw_img_parsing *img = &pieces->img[type];
345 static void set_sec_data(struct iwl_firmware_pieces *pieces,
350 alloc_sec_data(pieces, type, sec);
352 pieces->img[type].sec[sec].data = data;
355 static void set_sec_size(struct iwl_firmware_pieces *pieces,
360 alloc_sec_data(pieces, type, sec);
362 pieces->img[type].sec[sec].size = size;
365 static size_t get_sec_size(struct iwl_firmware_pieces *pieces,
369 return pieces->img[type].sec[sec].size;
372 static void set_sec_offset(struct iwl_firmware_pieces *pieces,
377 alloc_sec_data(pieces, type, sec);
379 pieces->img[type].sec[sec].offset = offset;
408 static int iwl_store_ucode_sec(struct iwl_firmware_pieces *pieces,
417 if (WARN_ON(!pieces || !data || type >= IWL_UCODE_TYPE_MAX))
422 img = &pieces->img[type];
513 struct iwl_firmware_pieces *pieces)
531 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST,
533 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA,
535 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST,
537 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA,
550 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST,
552 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA,
554 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST,
556 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA,
579 get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST) +
580 get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA) +
581 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST) +
582 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA)) {
591 set_sec_data(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST, src);
592 src += get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST);
593 set_sec_offset(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST,
595 set_sec_data(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA, src);
596 src += get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA);
597 set_sec_offset(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA,
599 set_sec_data(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST, src);
600 src += get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST);
601 set_sec_offset(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST,
603 set_sec_data(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA, src);
604 src += get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA);
605 set_sec_offset(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA,
614 struct iwl_firmware_pieces *pieces,
683 set_sec_data(pieces, IWL_UCODE_REGULAR,
685 set_sec_size(pieces, IWL_UCODE_REGULAR,
687 set_sec_offset(pieces, IWL_UCODE_REGULAR,
692 set_sec_data(pieces, IWL_UCODE_REGULAR,
694 set_sec_size(pieces, IWL_UCODE_REGULAR,
696 set_sec_offset(pieces, IWL_UCODE_REGULAR,
701 set_sec_data(pieces, IWL_UCODE_INIT,
703 set_sec_size(pieces, IWL_UCODE_INIT,
705 set_sec_offset(pieces, IWL_UCODE_INIT,
710 set_sec_data(pieces, IWL_UCODE_INIT,
712 set_sec_size(pieces, IWL_UCODE_INIT,
714 set_sec_offset(pieces, IWL_UCODE_INIT,
761 pieces->init_evtlog_ptr =
767 pieces->init_evtlog_size =
773 pieces->init_errlog_ptr =
779 pieces->inst_evtlog_ptr =
785 pieces->inst_evtlog_size =
791 pieces->inst_errlog_ptr =
800 set_sec_data(pieces, IWL_UCODE_WOWLAN,
802 set_sec_size(pieces, IWL_UCODE_WOWLAN,
804 set_sec_offset(pieces, IWL_UCODE_WOWLAN,
809 set_sec_data(pieces, IWL_UCODE_WOWLAN,
811 set_sec_size(pieces, IWL_UCODE_WOWLAN,
813 set_sec_offset(pieces, IWL_UCODE_WOWLAN,
824 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_REGULAR,
829 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_INIT,
834 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_WOWLAN,
856 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_REGULAR,
861 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_INIT,
866 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_WOWLAN,
927 pieces->dbg_dest_ver = (u8 *)tlv_data;
928 if (*pieces->dbg_dest_ver == 1) {
930 } else if (*pieces->dbg_dest_ver == 0) {
935 *pieces->dbg_dest_ver);
939 if (pieces->dbg_dest_tlv_init) {
945 pieces->dbg_dest_tlv_init = true;
948 pieces->dbg_dest_tlv_v1 = dest_v1;
951 pieces->dbg_dest_tlv = dest;
974 if (!pieces->dbg_dest_tlv_init) {
988 if (pieces->dbg_conf_tlv[conf->id]) {
1001 pieces->dbg_conf_tlv[conf->id] = conf;
1002 pieces->dbg_conf_tlv_len[conf->id] = tlv_len;
1017 if (pieces->dbg_trigger_tlv[trigger_id]) {
1026 pieces->dbg_trigger_tlv[trigger_id] = trigger;
1027 pieces->dbg_trigger_tlv_len[trigger_id] = tlv_len;
1043 iwl_store_ucode_sec(pieces, tlv_data,
1091 size = sizeof(*pieces->dbg_mem_tlv) *
1092 (pieces->n_mem_tlv + 1);
1093 n = krealloc(pieces->dbg_mem_tlv, size, GFP_KERNEL);
1096 pieces->dbg_mem_tlv = n;
1097 pieces->dbg_mem_tlv[pieces->n_mem_tlv] = *dbg_mem;
1098 pieces->n_mem_tlv++;
1234 struct iwl_firmware_pieces *pieces,
1240 sec = kcalloc(pieces->img[type].sec_counter, sizeof(*sec), GFP_KERNEL);
1244 drv->fw.img[type].num_sec = pieces->img[type].sec_counter;
1246 for (i = 0; i < pieces->img[type].sec_counter; i++)
1247 if (iwl_alloc_fw_desc(drv, &sec[i], get_sec(pieces, type, i)))
1254 struct iwl_firmware_pieces *pieces,
1258 get_sec_size(pieces, IWL_UCODE_REGULAR,
1261 get_sec_size(pieces, IWL_UCODE_REGULAR,
1264 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST));
1266 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA));
1269 if (get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST) >
1272 get_sec_size(pieces, IWL_UCODE_REGULAR,
1277 if (get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA) >
1280 get_sec_size(pieces, IWL_UCODE_REGULAR,
1285 if (get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST) >
1288 get_sec_size(pieces, IWL_UCODE_INIT,
1293 if (get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA) >
1296 get_sec_size(pieces, IWL_UCODE_REGULAR,
1363 struct iwl_firmware_pieces *pieces;
1381 pieces = kzalloc(sizeof(*pieces), GFP_KERNEL);
1382 if (!pieces)
1401 err = iwl_parse_v1_v2_firmware(drv, ucode_raw, pieces);
1403 err = iwl_parse_tlv_firmware(drv, ucode_raw, pieces,
1431 if (fw->type == IWL_FW_DVM && validate_sec_sizes(drv, pieces,
1442 if (iwl_alloc_ucode(drv, pieces, i))
1445 if (pieces->dbg_dest_tlv_init) {
1455 if (*pieces->dbg_dest_ver == 0) {
1456 memcpy(drv->fw.dbg.dest_tlv, pieces->dbg_dest_tlv_v1,
1462 dest_tlv->version = pieces->dbg_dest_tlv->version;
1464 pieces->dbg_dest_tlv->monitor_mode;
1466 pieces->dbg_dest_tlv->size_power;
1468 pieces->dbg_dest_tlv->wrap_count;
1470 pieces->dbg_dest_tlv->write_ptr_reg;
1472 pieces->dbg_dest_tlv->base_shift;
1474 pieces->dbg_dest_tlv->reg_ops,
1486 dest_tlv->base_reg = pieces->dbg_dest_tlv->cfg_reg;
1488 pieces->dbg_dest_tlv->size_shift;
1493 if (pieces->dbg_conf_tlv[i]) {
1495 kmemdup(pieces->dbg_conf_tlv[i],
1496 pieces->dbg_conf_tlv_len[i],
1526 if (pieces->dbg_trigger_tlv[i]) {
1534 if (WARN_ON(pieces->dbg_trigger_tlv_len[i] <
1539 pieces->dbg_trigger_tlv_len[i];
1541 kmemdup(pieces->dbg_trigger_tlv[i],
1551 drv->fw.dbg.mem_tlv = pieces->dbg_mem_tlv;
1552 pieces->dbg_mem_tlv = NULL;
1553 drv->fw.dbg.n_mem_tlv = pieces->n_mem_tlv;
1560 fw->init_evtlog_ptr = pieces->init_evtlog_ptr;
1561 if (pieces->init_evtlog_size)
1562 fw->init_evtlog_size = (pieces->init_evtlog_size - 16)/12;
1566 fw->init_errlog_ptr = pieces->init_errlog_ptr;
1567 fw->inst_evtlog_ptr = pieces->inst_evtlog_ptr;
1568 if (pieces->inst_evtlog_size)
1569 fw->inst_evtlog_size = (pieces->inst_evtlog_size - 16)/12;
1573 fw->inst_errlog_ptr = pieces->inst_errlog_ptr;
1655 if (pieces) {
1656 for (i = 0; i < ARRAY_SIZE(pieces->img); i++)
1657 kfree(pieces->img[i].sec);
1658 kfree(pieces->dbg_mem_tlv);
1659 kfree(pieces);