Lines Matching refs:fwrt
99 static void iwl_fwrt_dump_umac_error_log(struct iwl_fw_runtime *fwrt) in iwl_fwrt_dump_umac_error_log() argument
101 struct iwl_trans *trans = fwrt->trans; in iwl_fwrt_dump_umac_error_log()
103 u32 base = fwrt->trans->dbg.umac_error_event_table; in iwl_fwrt_dump_umac_error_log()
107 !(fwrt->trans->dbg.error_event_table_tlv_status & in iwl_fwrt_dump_umac_error_log()
114 fwrt->dump.umac_err_id = table.error_id; in iwl_fwrt_dump_umac_error_log()
119 fwrt->trans->status, table.valid); in iwl_fwrt_dump_umac_error_log()
125 IWL_ERR(fwrt, "PNVM data is missing, please install %s\n", in iwl_fwrt_dump_umac_error_log()
129 IWL_ERR(fwrt, "0x%08X | %s\n", table.error_id, in iwl_fwrt_dump_umac_error_log()
131 IWL_ERR(fwrt, "0x%08X | umac branchlink1\n", table.blink1); in iwl_fwrt_dump_umac_error_log()
132 IWL_ERR(fwrt, "0x%08X | umac branchlink2\n", table.blink2); in iwl_fwrt_dump_umac_error_log()
133 IWL_ERR(fwrt, "0x%08X | umac interruptlink1\n", table.ilink1); in iwl_fwrt_dump_umac_error_log()
134 IWL_ERR(fwrt, "0x%08X | umac interruptlink2\n", table.ilink2); in iwl_fwrt_dump_umac_error_log()
135 IWL_ERR(fwrt, "0x%08X | umac data1\n", table.data1); in iwl_fwrt_dump_umac_error_log()
136 IWL_ERR(fwrt, "0x%08X | umac data2\n", table.data2); in iwl_fwrt_dump_umac_error_log()
137 IWL_ERR(fwrt, "0x%08X | umac data3\n", table.data3); in iwl_fwrt_dump_umac_error_log()
138 IWL_ERR(fwrt, "0x%08X | umac major\n", table.umac_major); in iwl_fwrt_dump_umac_error_log()
139 IWL_ERR(fwrt, "0x%08X | umac minor\n", table.umac_minor); in iwl_fwrt_dump_umac_error_log()
140 IWL_ERR(fwrt, "0x%08X | frame pointer\n", table.frame_pointer); in iwl_fwrt_dump_umac_error_log()
141 IWL_ERR(fwrt, "0x%08X | stack pointer\n", table.stack_pointer); in iwl_fwrt_dump_umac_error_log()
142 IWL_ERR(fwrt, "0x%08X | last host cmd\n", table.cmd_header); in iwl_fwrt_dump_umac_error_log()
143 IWL_ERR(fwrt, "0x%08X | isr status reg\n", table.nic_isr_pref); in iwl_fwrt_dump_umac_error_log()
146 static void iwl_fwrt_dump_lmac_error_log(struct iwl_fw_runtime *fwrt, u8 lmac_num) in iwl_fwrt_dump_lmac_error_log() argument
148 struct iwl_trans *trans = fwrt->trans; in iwl_fwrt_dump_lmac_error_log()
150 u32 val, base = fwrt->trans->dbg.lmac_error_event_table[lmac_num]; in iwl_fwrt_dump_lmac_error_log()
152 if (fwrt->cur_fw_img == IWL_UCODE_INIT) { in iwl_fwrt_dump_lmac_error_log()
154 base = fwrt->fw->init_errlog_ptr; in iwl_fwrt_dump_lmac_error_log()
157 base = fwrt->fw->inst_errlog_ptr; in iwl_fwrt_dump_lmac_error_log()
160 if ((fwrt->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_BZ && !base) || in iwl_fwrt_dump_lmac_error_log()
161 (fwrt->trans->trans_cfg->device_family < IWL_DEVICE_FAMILY_BZ && base < 0x400000)) { in iwl_fwrt_dump_lmac_error_log()
162 IWL_ERR(fwrt, in iwl_fwrt_dump_lmac_error_log()
165 (fwrt->cur_fw_img == IWL_UCODE_INIT) in iwl_fwrt_dump_lmac_error_log()
190 fwrt->dump.lmac_err_id[lmac_num] = table.error_id; in iwl_fwrt_dump_lmac_error_log()
195 fwrt->trans->status, table.valid); in iwl_fwrt_dump_lmac_error_log()
200 IWL_ERR(fwrt, "Loaded firmware version: %s\n", fwrt->fw->fw_version); in iwl_fwrt_dump_lmac_error_log()
202 IWL_ERR(fwrt, "0x%08X | %-28s\n", table.error_id, in iwl_fwrt_dump_lmac_error_log()
204 IWL_ERR(fwrt, "0x%08X | trm_hw_status0\n", table.trm_hw_status0); in iwl_fwrt_dump_lmac_error_log()
205 IWL_ERR(fwrt, "0x%08X | trm_hw_status1\n", table.trm_hw_status1); in iwl_fwrt_dump_lmac_error_log()
206 IWL_ERR(fwrt, "0x%08X | branchlink2\n", table.blink2); in iwl_fwrt_dump_lmac_error_log()
207 IWL_ERR(fwrt, "0x%08X | interruptlink1\n", table.ilink1); in iwl_fwrt_dump_lmac_error_log()
208 IWL_ERR(fwrt, "0x%08X | interruptlink2\n", table.ilink2); in iwl_fwrt_dump_lmac_error_log()
209 IWL_ERR(fwrt, "0x%08X | data1\n", table.data1); in iwl_fwrt_dump_lmac_error_log()
210 IWL_ERR(fwrt, "0x%08X | data2\n", table.data2); in iwl_fwrt_dump_lmac_error_log()
211 IWL_ERR(fwrt, "0x%08X | data3\n", table.data3); in iwl_fwrt_dump_lmac_error_log()
212 IWL_ERR(fwrt, "0x%08X | beacon time\n", table.bcon_time); in iwl_fwrt_dump_lmac_error_log()
213 IWL_ERR(fwrt, "0x%08X | tsf low\n", table.tsf_low); in iwl_fwrt_dump_lmac_error_log()
214 IWL_ERR(fwrt, "0x%08X | tsf hi\n", table.tsf_hi); in iwl_fwrt_dump_lmac_error_log()
215 IWL_ERR(fwrt, "0x%08X | time gp1\n", table.gp1); in iwl_fwrt_dump_lmac_error_log()
216 IWL_ERR(fwrt, "0x%08X | time gp2\n", table.gp2); in iwl_fwrt_dump_lmac_error_log()
217 IWL_ERR(fwrt, "0x%08X | uCode revision type\n", table.fw_rev_type); in iwl_fwrt_dump_lmac_error_log()
218 IWL_ERR(fwrt, "0x%08X | uCode version major\n", table.major); in iwl_fwrt_dump_lmac_error_log()
219 IWL_ERR(fwrt, "0x%08X | uCode version minor\n", table.minor); in iwl_fwrt_dump_lmac_error_log()
220 IWL_ERR(fwrt, "0x%08X | hw version\n", table.hw_ver); in iwl_fwrt_dump_lmac_error_log()
221 IWL_ERR(fwrt, "0x%08X | board version\n", table.brd_ver); in iwl_fwrt_dump_lmac_error_log()
222 IWL_ERR(fwrt, "0x%08X | hcmd\n", table.hcmd); in iwl_fwrt_dump_lmac_error_log()
223 IWL_ERR(fwrt, "0x%08X | isr0\n", table.isr0); in iwl_fwrt_dump_lmac_error_log()
224 IWL_ERR(fwrt, "0x%08X | isr1\n", table.isr1); in iwl_fwrt_dump_lmac_error_log()
225 IWL_ERR(fwrt, "0x%08X | isr2\n", table.isr2); in iwl_fwrt_dump_lmac_error_log()
226 IWL_ERR(fwrt, "0x%08X | isr3\n", table.isr3); in iwl_fwrt_dump_lmac_error_log()
227 IWL_ERR(fwrt, "0x%08X | isr4\n", table.isr4); in iwl_fwrt_dump_lmac_error_log()
228 IWL_ERR(fwrt, "0x%08X | last cmd Id\n", table.last_cmd_id); in iwl_fwrt_dump_lmac_error_log()
229 IWL_ERR(fwrt, "0x%08X | wait_event\n", table.wait_event); in iwl_fwrt_dump_lmac_error_log()
230 IWL_ERR(fwrt, "0x%08X | l2p_control\n", table.l2p_control); in iwl_fwrt_dump_lmac_error_log()
231 IWL_ERR(fwrt, "0x%08X | l2p_duration\n", table.l2p_duration); in iwl_fwrt_dump_lmac_error_log()
232 IWL_ERR(fwrt, "0x%08X | l2p_mhvalid\n", table.l2p_mhvalid); in iwl_fwrt_dump_lmac_error_log()
233 IWL_ERR(fwrt, "0x%08X | l2p_addr_match\n", table.l2p_addr_match); in iwl_fwrt_dump_lmac_error_log()
234 IWL_ERR(fwrt, "0x%08X | lmpm_pmg_sel\n", table.lmpm_pmg_sel); in iwl_fwrt_dump_lmac_error_log()
235 IWL_ERR(fwrt, "0x%08X | timestamp\n", table.u_timestamp); in iwl_fwrt_dump_lmac_error_log()
236 IWL_ERR(fwrt, "0x%08X | flow_handler\n", table.flow_handler); in iwl_fwrt_dump_lmac_error_log()
263 static void iwl_fwrt_dump_tcm_error_log(struct iwl_fw_runtime *fwrt, int idx) in iwl_fwrt_dump_tcm_error_log() argument
265 struct iwl_trans *trans = fwrt->trans; in iwl_fwrt_dump_tcm_error_log()
267 u32 base = fwrt->trans->dbg.tcm_error_event_table[idx]; in iwl_fwrt_dump_tcm_error_log()
272 if (!base || !(fwrt->trans->dbg.error_event_table_tlv_status & flag)) in iwl_fwrt_dump_tcm_error_log()
277 IWL_ERR(fwrt, "TCM%d status:\n", idx + 1); in iwl_fwrt_dump_tcm_error_log()
278 IWL_ERR(fwrt, "0x%08X | error ID\n", table.error_id); in iwl_fwrt_dump_tcm_error_log()
279 IWL_ERR(fwrt, "0x%08X | tcm branchlink2\n", table.blink2); in iwl_fwrt_dump_tcm_error_log()
280 IWL_ERR(fwrt, "0x%08X | tcm interruptlink1\n", table.ilink1); in iwl_fwrt_dump_tcm_error_log()
281 IWL_ERR(fwrt, "0x%08X | tcm interruptlink2\n", table.ilink2); in iwl_fwrt_dump_tcm_error_log()
282 IWL_ERR(fwrt, "0x%08X | tcm data1\n", table.data1); in iwl_fwrt_dump_tcm_error_log()
283 IWL_ERR(fwrt, "0x%08X | tcm data2\n", table.data2); in iwl_fwrt_dump_tcm_error_log()
284 IWL_ERR(fwrt, "0x%08X | tcm data3\n", table.data3); in iwl_fwrt_dump_tcm_error_log()
285 IWL_ERR(fwrt, "0x%08X | tcm log PC\n", table.logpc); in iwl_fwrt_dump_tcm_error_log()
286 IWL_ERR(fwrt, "0x%08X | tcm frame pointer\n", table.frame_pointer); in iwl_fwrt_dump_tcm_error_log()
287 IWL_ERR(fwrt, "0x%08X | tcm stack pointer\n", table.stack_pointer); in iwl_fwrt_dump_tcm_error_log()
288 IWL_ERR(fwrt, "0x%08X | tcm msg ID\n", table.msgid); in iwl_fwrt_dump_tcm_error_log()
289 IWL_ERR(fwrt, "0x%08X | tcm ISR status\n", table.isr); in iwl_fwrt_dump_tcm_error_log()
291 IWL_ERR(fwrt, "0x%08X | tcm HW status[%d]\n", in iwl_fwrt_dump_tcm_error_log()
294 IWL_ERR(fwrt, "0x%08X | tcm SW status[%d]\n", in iwl_fwrt_dump_tcm_error_log()
327 static void iwl_fwrt_dump_rcm_error_log(struct iwl_fw_runtime *fwrt, int idx) in iwl_fwrt_dump_rcm_error_log() argument
329 struct iwl_trans *trans = fwrt->trans; in iwl_fwrt_dump_rcm_error_log()
331 u32 base = fwrt->trans->dbg.rcm_error_event_table[idx]; in iwl_fwrt_dump_rcm_error_log()
335 if (!base || !(fwrt->trans->dbg.error_event_table_tlv_status & flag)) in iwl_fwrt_dump_rcm_error_log()
340 IWL_ERR(fwrt, "RCM%d status:\n", idx + 1); in iwl_fwrt_dump_rcm_error_log()
341 IWL_ERR(fwrt, "0x%08X | error ID\n", table.error_id); in iwl_fwrt_dump_rcm_error_log()
342 IWL_ERR(fwrt, "0x%08X | rcm branchlink2\n", table.blink2); in iwl_fwrt_dump_rcm_error_log()
343 IWL_ERR(fwrt, "0x%08X | rcm interruptlink1\n", table.ilink1); in iwl_fwrt_dump_rcm_error_log()
344 IWL_ERR(fwrt, "0x%08X | rcm interruptlink2\n", table.ilink2); in iwl_fwrt_dump_rcm_error_log()
345 IWL_ERR(fwrt, "0x%08X | rcm data1\n", table.data1); in iwl_fwrt_dump_rcm_error_log()
346 IWL_ERR(fwrt, "0x%08X | rcm data2\n", table.data2); in iwl_fwrt_dump_rcm_error_log()
347 IWL_ERR(fwrt, "0x%08X | rcm data3\n", table.data3); in iwl_fwrt_dump_rcm_error_log()
348 IWL_ERR(fwrt, "0x%08X | rcm log PC\n", table.logpc); in iwl_fwrt_dump_rcm_error_log()
349 IWL_ERR(fwrt, "0x%08X | rcm frame pointer\n", table.frame_pointer); in iwl_fwrt_dump_rcm_error_log()
350 IWL_ERR(fwrt, "0x%08X | rcm stack pointer\n", table.stack_pointer); in iwl_fwrt_dump_rcm_error_log()
351 IWL_ERR(fwrt, "0x%08X | rcm msg ID\n", table.msgid); in iwl_fwrt_dump_rcm_error_log()
352 IWL_ERR(fwrt, "0x%08X | rcm ISR status\n", table.isr); in iwl_fwrt_dump_rcm_error_log()
353 IWL_ERR(fwrt, "0x%08X | frame HW status\n", table.frame_hw_status); in iwl_fwrt_dump_rcm_error_log()
354 IWL_ERR(fwrt, "0x%08X | LMAC-to-RCM request mbox\n", in iwl_fwrt_dump_rcm_error_log()
356 IWL_ERR(fwrt, "0x%08X | RCM-to-LMAC request mbox\n", in iwl_fwrt_dump_rcm_error_log()
358 IWL_ERR(fwrt, "0x%08X | MAC header control\n", table.mh_ctl); in iwl_fwrt_dump_rcm_error_log()
359 IWL_ERR(fwrt, "0x%08X | MAC header addr1 low\n", table.mh_addr1_lo); in iwl_fwrt_dump_rcm_error_log()
360 IWL_ERR(fwrt, "0x%08X | MAC header info\n", table.mh_info); in iwl_fwrt_dump_rcm_error_log()
361 IWL_ERR(fwrt, "0x%08X | MAC header error\n", table.mh_err); in iwl_fwrt_dump_rcm_error_log()
364 static void iwl_fwrt_dump_iml_error_log(struct iwl_fw_runtime *fwrt) in iwl_fwrt_dump_iml_error_log() argument
366 struct iwl_trans *trans = fwrt->trans; in iwl_fwrt_dump_iml_error_log()
369 if (fwrt->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_22000) { in iwl_fwrt_dump_iml_error_log()
372 } else if (fwrt->trans->trans_cfg->device_family >= in iwl_fwrt_dump_iml_error_log()
387 IWL_ERR(fwrt, "0x%08X | IML/ROM error/state\n", error); in iwl_fwrt_dump_iml_error_log()
388 IWL_ERR(fwrt, "0x%08X | IML/ROM data1\n", in iwl_fwrt_dump_iml_error_log()
391 if (fwrt->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_22000) in iwl_fwrt_dump_iml_error_log()
392 IWL_ERR(fwrt, "0x%08X | IML/ROM WFPM_AUTH_KEY_0\n", in iwl_fwrt_dump_iml_error_log()
398 static void iwl_fwrt_dump_fseq_regs(struct iwl_fw_runtime *fwrt) in iwl_fwrt_dump_fseq_regs() argument
400 struct iwl_trans *trans = fwrt->trans; in iwl_fwrt_dump_fseq_regs()
423 IWL_ERR(fwrt, "Fseq Registers:\n"); in iwl_fwrt_dump_fseq_regs()
426 IWL_ERR(fwrt, "0x%08X | %s\n", in iwl_fwrt_dump_fseq_regs()
433 void iwl_fwrt_dump_error_logs(struct iwl_fw_runtime *fwrt) in iwl_fwrt_dump_error_logs() argument
435 if (!test_bit(STATUS_DEVICE_ENABLED, &fwrt->trans->status)) { in iwl_fwrt_dump_error_logs()
436 IWL_ERR(fwrt, in iwl_fwrt_dump_error_logs()
441 iwl_fwrt_dump_lmac_error_log(fwrt, 0); in iwl_fwrt_dump_error_logs()
442 if (fwrt->trans->dbg.lmac_error_event_table[1]) in iwl_fwrt_dump_error_logs()
443 iwl_fwrt_dump_lmac_error_log(fwrt, 1); in iwl_fwrt_dump_error_logs()
444 iwl_fwrt_dump_umac_error_log(fwrt); in iwl_fwrt_dump_error_logs()
445 iwl_fwrt_dump_tcm_error_log(fwrt, 0); in iwl_fwrt_dump_error_logs()
446 iwl_fwrt_dump_rcm_error_log(fwrt, 0); in iwl_fwrt_dump_error_logs()
447 iwl_fwrt_dump_tcm_error_log(fwrt, 1); in iwl_fwrt_dump_error_logs()
448 iwl_fwrt_dump_rcm_error_log(fwrt, 1); in iwl_fwrt_dump_error_logs()
449 iwl_fwrt_dump_iml_error_log(fwrt); in iwl_fwrt_dump_error_logs()
450 iwl_fwrt_dump_fseq_regs(fwrt); in iwl_fwrt_dump_error_logs()
452 if (fwrt->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_BZ) { in iwl_fwrt_dump_error_logs()
453 u32 scratch = iwl_read32(fwrt->trans, CSR_FUNC_SCRATCH); in iwl_fwrt_dump_error_logs()
455 IWL_ERR(fwrt, "Function Scratch status:\n"); in iwl_fwrt_dump_error_logs()
456 IWL_ERR(fwrt, "0x%08X | Func Scratch\n", scratch); in iwl_fwrt_dump_error_logs()