Lines Matching defs:pieces

319  * These functions are just to extract uCode section data from the pieces
322 static struct fw_sec *get_sec(struct iwl_firmware_pieces *pieces,
326 return &pieces->img[type].sec[sec];
329 static void alloc_sec_data(struct iwl_firmware_pieces *pieces,
333 struct fw_img_parsing *img = &pieces->img[type];
349 static void set_sec_data(struct iwl_firmware_pieces *pieces,
354 alloc_sec_data(pieces, type, sec);
356 pieces->img[type].sec[sec].data = data;
359 static void set_sec_size(struct iwl_firmware_pieces *pieces,
364 alloc_sec_data(pieces, type, sec);
366 pieces->img[type].sec[sec].size = size;
369 static size_t get_sec_size(struct iwl_firmware_pieces *pieces,
373 return pieces->img[type].sec[sec].size;
376 static void set_sec_offset(struct iwl_firmware_pieces *pieces,
381 alloc_sec_data(pieces, type, sec);
383 pieces->img[type].sec[sec].offset = offset;
389 static int iwl_store_ucode_sec(struct iwl_firmware_pieces *pieces,
398 if (WARN_ON(!pieces || !data || type >= IWL_UCODE_TYPE_MAX))
403 img = &pieces->img[type];
494 struct iwl_firmware_pieces *pieces)
512 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST,
514 set_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA,
516 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST,
518 set_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA,
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,
560 get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST) +
561 get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA) +
562 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST) +
563 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA)) {
572 set_sec_data(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST, src);
573 src += get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST);
574 set_sec_offset(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST,
576 set_sec_data(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA, src);
577 src += get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA);
578 set_sec_offset(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA,
580 set_sec_data(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST, src);
581 src += get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST);
582 set_sec_offset(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST,
584 set_sec_data(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA, src);
585 src += get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA);
586 set_sec_offset(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA,
690 struct iwl_firmware_pieces *pieces,
759 set_sec_data(pieces, IWL_UCODE_REGULAR,
761 set_sec_size(pieces, IWL_UCODE_REGULAR,
763 set_sec_offset(pieces, IWL_UCODE_REGULAR,
768 set_sec_data(pieces, IWL_UCODE_REGULAR,
770 set_sec_size(pieces, IWL_UCODE_REGULAR,
772 set_sec_offset(pieces, IWL_UCODE_REGULAR,
777 set_sec_data(pieces, IWL_UCODE_INIT,
779 set_sec_size(pieces, IWL_UCODE_INIT,
781 set_sec_offset(pieces, IWL_UCODE_INIT,
786 set_sec_data(pieces, IWL_UCODE_INIT,
788 set_sec_size(pieces, IWL_UCODE_INIT,
790 set_sec_offset(pieces, IWL_UCODE_INIT,
837 pieces->init_evtlog_ptr =
843 pieces->init_evtlog_size =
849 pieces->init_errlog_ptr =
855 pieces->inst_evtlog_ptr =
861 pieces->inst_evtlog_size =
867 pieces->inst_errlog_ptr =
876 set_sec_data(pieces, IWL_UCODE_WOWLAN,
878 set_sec_size(pieces, IWL_UCODE_WOWLAN,
880 set_sec_offset(pieces, IWL_UCODE_WOWLAN,
885 set_sec_data(pieces, IWL_UCODE_WOWLAN,
887 set_sec_size(pieces, IWL_UCODE_WOWLAN,
889 set_sec_offset(pieces, IWL_UCODE_WOWLAN,
900 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_REGULAR,
905 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_INIT,
910 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_WOWLAN,
932 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_REGULAR,
937 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_INIT,
942 iwl_store_ucode_sec(pieces, tlv_data, IWL_UCODE_WOWLAN,
999 pieces->dbg_dest_ver = (const u8 *)tlv_data;
1000 if (*pieces->dbg_dest_ver == 1) {
1002 } else if (*pieces->dbg_dest_ver == 0) {
1007 *pieces->dbg_dest_ver);
1011 if (pieces->dbg_dest_tlv_init) {
1017 pieces->dbg_dest_tlv_init = true;
1020 pieces->dbg_dest_tlv_v1 = dest_v1;
1023 pieces->dbg_dest_tlv = dest;
1047 if (!pieces->dbg_dest_tlv_init) {
1061 if (pieces->dbg_conf_tlv[conf->id]) {
1074 pieces->dbg_conf_tlv[conf->id] = conf;
1075 pieces->dbg_conf_tlv_len[conf->id] = tlv_len;
1090 if (pieces->dbg_trigger_tlv[trigger_id]) {
1099 pieces->dbg_trigger_tlv[trigger_id] = trigger;
1100 pieces->dbg_trigger_tlv_len[trigger_id] = tlv_len;
1116 iwl_store_ucode_sec(pieces, tlv_data,
1164 size = sizeof(*pieces->dbg_mem_tlv) *
1165 (pieces->n_mem_tlv + 1);
1166 n = krealloc(pieces->dbg_mem_tlv, size, GFP_KERNEL);
1169 pieces->dbg_mem_tlv = n;
1170 pieces->dbg_mem_tlv[pieces->n_mem_tlv] = *dbg_mem;
1171 pieces->n_mem_tlv++;
1342 struct iwl_firmware_pieces *pieces,
1348 sec = kcalloc(pieces->img[type].sec_counter, sizeof(*sec), GFP_KERNEL);
1352 drv->fw.img[type].num_sec = pieces->img[type].sec_counter;
1354 for (i = 0; i < pieces->img[type].sec_counter; i++)
1355 if (iwl_alloc_fw_desc(drv, &sec[i], get_sec(pieces, type, i)))
1362 struct iwl_firmware_pieces *pieces,
1366 get_sec_size(pieces, IWL_UCODE_REGULAR,
1369 get_sec_size(pieces, IWL_UCODE_REGULAR,
1372 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST));
1374 get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA));
1377 if (get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_INST) >
1380 get_sec_size(pieces, IWL_UCODE_REGULAR,
1385 if (get_sec_size(pieces, IWL_UCODE_REGULAR, IWL_UCODE_SECTION_DATA) >
1388 get_sec_size(pieces, IWL_UCODE_REGULAR,
1393 if (get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_INST) >
1396 get_sec_size(pieces, IWL_UCODE_INIT,
1401 if (get_sec_size(pieces, IWL_UCODE_INIT, IWL_UCODE_SECTION_DATA) >
1404 get_sec_size(pieces, IWL_UCODE_REGULAR,
1471 struct iwl_firmware_pieces *pieces;
1490 pieces = kzalloc(sizeof(*pieces), GFP_KERNEL);
1491 if (!pieces)
1510 err = iwl_parse_v1_v2_firmware(drv, ucode_raw, pieces);
1512 err = iwl_parse_tlv_firmware(drv, ucode_raw, pieces,
1540 if (fw->type == IWL_FW_DVM && validate_sec_sizes(drv, pieces,
1551 if (iwl_alloc_ucode(drv, pieces, i))
1554 if (pieces->dbg_dest_tlv_init) {
1564 if (*pieces->dbg_dest_ver == 0) {
1565 memcpy(drv->fw.dbg.dest_tlv, pieces->dbg_dest_tlv_v1,
1571 dest_tlv->version = pieces->dbg_dest_tlv->version;
1573 pieces->dbg_dest_tlv->monitor_mode;
1575 pieces->dbg_dest_tlv->size_power;
1577 pieces->dbg_dest_tlv->wrap_count;
1579 pieces->dbg_dest_tlv->write_ptr_reg;
1581 pieces->dbg_dest_tlv->base_shift;
1583 pieces->dbg_dest_tlv->reg_ops,
1595 dest_tlv->base_reg = pieces->dbg_dest_tlv->cfg_reg;
1597 pieces->dbg_dest_tlv->size_shift;
1602 if (pieces->dbg_conf_tlv[i]) {
1604 kmemdup(pieces->dbg_conf_tlv[i],
1605 pieces->dbg_conf_tlv_len[i],
1635 if (pieces->dbg_trigger_tlv[i]) {
1643 if (WARN_ON(pieces->dbg_trigger_tlv_len[i] <
1648 pieces->dbg_trigger_tlv_len[i];
1650 kmemdup(pieces->dbg_trigger_tlv[i],
1660 drv->fw.dbg.mem_tlv = pieces->dbg_mem_tlv;
1661 pieces->dbg_mem_tlv = NULL;
1662 drv->fw.dbg.n_mem_tlv = pieces->n_mem_tlv;
1669 fw->init_evtlog_ptr = pieces->init_evtlog_ptr;
1670 if (pieces->init_evtlog_size)
1671 fw->init_evtlog_size = (pieces->init_evtlog_size - 16)/12;
1675 fw->init_errlog_ptr = pieces->init_errlog_ptr;
1676 fw->inst_evtlog_ptr = pieces->inst_evtlog_ptr;
1677 if (pieces->inst_evtlog_size)
1678 fw->inst_evtlog_size = (pieces->inst_evtlog_size - 16)/12;
1682 fw->inst_errlog_ptr = pieces->inst_errlog_ptr;
1764 if (pieces) {
1765 for (i = 0; i < ARRAY_SIZE(pieces->img); i++)
1766 kfree(pieces->img[i].sec);
1767 kfree(pieces->dbg_mem_tlv);
1768 kfree(pieces);