Lines Matching full:trans
64 #include "iwl-trans.h"
150 static int iwl_dbg_tlv_alloc_debug_info(struct iwl_trans *trans, in iwl_dbg_tlv_alloc_debug_info() argument
158 IWL_DEBUG_FW(trans, "WRT: Loading debug cfg: %s\n", in iwl_dbg_tlv_alloc_debug_info()
161 return iwl_dbg_tlv_add(tlv, &trans->dbg.debug_info_tlv_list); in iwl_dbg_tlv_alloc_debug_info()
164 static int iwl_dbg_tlv_alloc_buf_alloc(struct iwl_trans *trans, in iwl_dbg_tlv_alloc_buf_alloc() argument
194 trans->dbg.fw_mon_cfg[alloc_id] = *alloc; in iwl_dbg_tlv_alloc_buf_alloc()
198 IWL_ERR(trans, in iwl_dbg_tlv_alloc_buf_alloc()
204 static int iwl_dbg_tlv_alloc_hcmd(struct iwl_trans *trans, in iwl_dbg_tlv_alloc_hcmd() argument
219 IWL_ERR(trans, in iwl_dbg_tlv_alloc_hcmd()
225 return iwl_dbg_tlv_add(tlv, &trans->dbg.time_point[tp].hcmd_list); in iwl_dbg_tlv_alloc_hcmd()
228 static int iwl_dbg_tlv_alloc_region(struct iwl_trans *trans, in iwl_dbg_tlv_alloc_region() argument
241 IWL_ERR(trans, "WRT: Invalid region id %u\n", id); in iwl_dbg_tlv_alloc_region()
247 IWL_ERR(trans, "WRT: Invalid region type %u\n", type); in iwl_dbg_tlv_alloc_region()
252 !trans->ops->read_config32) { in iwl_dbg_tlv_alloc_region()
253 IWL_ERR(trans, "WRT: Unsupported region type %u\n", type); in iwl_dbg_tlv_alloc_region()
257 active_reg = &trans->dbg.active_regions[id]; in iwl_dbg_tlv_alloc_region()
259 IWL_WARN(trans, "WRT: Overriding region id %u\n", id); in iwl_dbg_tlv_alloc_region()
268 IWL_DEBUG_FW(trans, "WRT: Enabling region id %u type %u\n", id, type); in iwl_dbg_tlv_alloc_region()
273 static int iwl_dbg_tlv_alloc_trigger(struct iwl_trans *trans, in iwl_dbg_tlv_alloc_trigger() argument
286 IWL_ERR(trans, in iwl_dbg_tlv_alloc_trigger()
302 ret = iwl_dbg_tlv_add(tlv, &trans->dbg.time_point[tp].trig_list); in iwl_dbg_tlv_alloc_trigger()
308 static int (*dbg_tlv_alloc[])(struct iwl_trans *trans,
317 void iwl_dbg_tlv_alloc(struct iwl_trans *trans, struct iwl_ucode_tlv *tlv, in iwl_dbg_tlv_alloc() argument
325 &trans->dbg.external_ini_cfg : &trans->dbg.internal_ini_cfg; in iwl_dbg_tlv_alloc()
329 !(domain & trans->dbg.domains_bitmap)) { in iwl_dbg_tlv_alloc()
330 IWL_DEBUG_FW(trans, in iwl_dbg_tlv_alloc()
332 domain, trans->dbg.domains_bitmap); in iwl_dbg_tlv_alloc()
337 IWL_ERR(trans, "WRT: Unsupported TLV type 0x%x\n", type); in iwl_dbg_tlv_alloc()
342 IWL_ERR(trans, "WRT: Unsupported TLV 0x%x version %u\n", type, in iwl_dbg_tlv_alloc()
347 ret = dbg_tlv_alloc[tlv_idx](trans, tlv); in iwl_dbg_tlv_alloc()
349 IWL_ERR(trans, in iwl_dbg_tlv_alloc()
364 void iwl_dbg_tlv_del_timers(struct iwl_trans *trans) in iwl_dbg_tlv_del_timers() argument
366 struct list_head *timer_list = &trans->dbg.periodic_trig_list; in iwl_dbg_tlv_del_timers()
377 static void iwl_dbg_tlv_fragments_free(struct iwl_trans *trans, in iwl_dbg_tlv_fragments_free() argument
387 fw_mon = &trans->dbg.fw_mon_ini[alloc_id]; in iwl_dbg_tlv_fragments_free()
392 dma_free_coherent(trans->dev, frag->size, frag->block, in iwl_dbg_tlv_fragments_free()
405 void iwl_dbg_tlv_free(struct iwl_trans *trans) in iwl_dbg_tlv_free() argument
410 iwl_dbg_tlv_del_timers(trans); in iwl_dbg_tlv_free()
412 for (i = 0; i < ARRAY_SIZE(trans->dbg.active_regions); i++) { in iwl_dbg_tlv_free()
414 &trans->dbg.active_regions[i]; in iwl_dbg_tlv_free()
421 &trans->dbg.debug_info_tlv_list, list) { in iwl_dbg_tlv_free()
426 for (i = 0; i < ARRAY_SIZE(trans->dbg.time_point); i++) { in iwl_dbg_tlv_free()
428 &trans->dbg.time_point[i]; in iwl_dbg_tlv_free()
449 for (i = 0; i < ARRAY_SIZE(trans->dbg.fw_mon_ini); i++) in iwl_dbg_tlv_free()
450 iwl_dbg_tlv_fragments_free(trans, i); in iwl_dbg_tlv_free()
453 static int iwl_dbg_tlv_parse_bin(struct iwl_trans *trans, const u8 *data, in iwl_dbg_tlv_parse_bin() argument
466 IWL_ERR(trans, "invalid TLV len: %zd/%u\n", in iwl_dbg_tlv_parse_bin()
473 iwl_dbg_tlv_alloc(trans, tlv, true); in iwl_dbg_tlv_parse_bin()
479 void iwl_dbg_tlv_load_bin(struct device *dev, struct iwl_trans *trans) in iwl_dbg_tlv_load_bin() argument
491 iwl_dbg_tlv_parse_bin(trans, fw->data, fw->size); in iwl_dbg_tlv_load_bin()
496 void iwl_dbg_tlv_init(struct iwl_trans *trans) in iwl_dbg_tlv_init() argument
500 INIT_LIST_HEAD(&trans->dbg.debug_info_tlv_list); in iwl_dbg_tlv_init()
501 INIT_LIST_HEAD(&trans->dbg.periodic_trig_list); in iwl_dbg_tlv_init()
503 for (i = 0; i < ARRAY_SIZE(trans->dbg.time_point); i++) { in iwl_dbg_tlv_init()
505 &trans->dbg.time_point[i]; in iwl_dbg_tlv_init()
564 fw_mon_cfg = &fwrt->trans->dbg.fw_mon_cfg[alloc_id]; in iwl_dbg_tlv_alloc_fragments()
565 fw_mon = &fwrt->trans->dbg.fw_mon_ini[alloc_id]; in iwl_dbg_tlv_alloc_fragments()
604 iwl_dbg_tlv_fragments_free(fwrt->trans, in iwl_dbg_tlv_alloc_fragments()
633 if (le32_to_cpu(fwrt->trans->dbg.fw_mon_cfg[alloc_id].buf_location) != in iwl_dbg_tlv_apply_buffer()
637 fw_mon = &fwrt->trans->dbg.fw_mon_ini[alloc_id]; in iwl_dbg_tlv_apply_buffer()
678 ret = iwl_trans_send_cmd(fwrt->trans, &hcmd); in iwl_dbg_tlv_apply_buffer()
716 iwl_trans_send_cmd(fwrt->trans, &cmd); in iwl_dbg_tlv_send_hcmds()
745 &fwrt->trans->dbg.time_point[IWL_FW_INI_TIME_POINT_PERIODIC].active_trig_list; in iwl_dbg_tlv_set_periodic_trigs()
788 &fwrt->trans->dbg.periodic_trig_list); in iwl_dbg_tlv_set_periodic_trigs()
1015 enum iwl_fw_ini_buffer_location *ini_dest = &fwrt->trans->dbg.ini_dest; in iwl_dbg_tlv_init_cfg()
1023 fwrt->trans->dbg.domains_bitmap); in iwl_dbg_tlv_init_cfg()
1025 for (i = 0; i < ARRAY_SIZE(fwrt->trans->dbg.time_point); i++) { in iwl_dbg_tlv_init_cfg()
1027 &fwrt->trans->dbg.time_point[i]; in iwl_dbg_tlv_init_cfg()
1035 &fwrt->trans->dbg.fw_mon_cfg[i]; in iwl_dbg_tlv_init_cfg()
1061 if (!iwl_trans_dbg_ini_valid(fwrt->trans) || in iwl_dbg_tlv_time_point()
1066 hcmd_list = &fwrt->trans->dbg.time_point[tp_id].hcmd_list; in iwl_dbg_tlv_time_point()
1067 trig_list = &fwrt->trans->dbg.time_point[tp_id].active_trig_list; in iwl_dbg_tlv_time_point()