|
|
|
@ -243,7 +243,7 @@ static void iwl_fw_dump_rxf(struct iwl_fw_runtime *fwrt,
|
|
|
|
|
/* Pull RXF2 */
|
|
|
|
|
iwl_fwrt_dump_rxf(fwrt, dump_data, cfg->rxfifo2_size,
|
|
|
|
|
RXF_DIFF_FROM_PREV +
|
|
|
|
|
fwrt->trans->cfg->umac_prph_offset, 1);
|
|
|
|
|
fwrt->trans->cfg->trans.umac_prph_offset, 1);
|
|
|
|
|
/* Pull LMAC2 RXF1 */
|
|
|
|
|
if (fwrt->smem_cfg.num_lmacs > 1)
|
|
|
|
|
iwl_fwrt_dump_rxf(fwrt, dump_data,
|
|
|
|
@ -684,17 +684,18 @@ static void iwl_fw_prph_handler(struct iwl_fw_runtime *fwrt, void *ptr,
|
|
|
|
|
{
|
|
|
|
|
u32 range_len;
|
|
|
|
|
|
|
|
|
|
if (fwrt->trans->cfg->device_family >= IWL_DEVICE_FAMILY_AX210) {
|
|
|
|
|
if (fwrt->trans->cfg->trans.device_family >= IWL_DEVICE_FAMILY_AX210) {
|
|
|
|
|
range_len = ARRAY_SIZE(iwl_prph_dump_addr_ax210);
|
|
|
|
|
handler(fwrt, iwl_prph_dump_addr_ax210, range_len, ptr);
|
|
|
|
|
} else if (fwrt->trans->cfg->device_family >= IWL_DEVICE_FAMILY_22000) {
|
|
|
|
|
} else if (fwrt->trans->cfg->trans.device_family >=
|
|
|
|
|
IWL_DEVICE_FAMILY_22000) {
|
|
|
|
|
range_len = ARRAY_SIZE(iwl_prph_dump_addr_22000);
|
|
|
|
|
handler(fwrt, iwl_prph_dump_addr_22000, range_len, ptr);
|
|
|
|
|
} else {
|
|
|
|
|
range_len = ARRAY_SIZE(iwl_prph_dump_addr_comm);
|
|
|
|
|
handler(fwrt, iwl_prph_dump_addr_comm, range_len, ptr);
|
|
|
|
|
|
|
|
|
|
if (fwrt->trans->cfg->mq_rx_supported) {
|
|
|
|
|
if (fwrt->trans->cfg->trans.mq_rx_supported) {
|
|
|
|
|
range_len = ARRAY_SIZE(iwl_prph_dump_addr_9000);
|
|
|
|
|
handler(fwrt, iwl_prph_dump_addr_9000, range_len, ptr);
|
|
|
|
|
}
|
|
|
|
@ -856,7 +857,8 @@ iwl_fw_error_dump_file(struct iwl_fw_runtime *fwrt,
|
|
|
|
|
iwl_fw_prph_handler(fwrt, &prph_len,
|
|
|
|
|
iwl_fw_get_prph_len);
|
|
|
|
|
|
|
|
|
|
if (fwrt->trans->cfg->device_family == IWL_DEVICE_FAMILY_7000 &&
|
|
|
|
|
if (fwrt->trans->cfg->trans.device_family ==
|
|
|
|
|
IWL_DEVICE_FAMILY_7000 &&
|
|
|
|
|
iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_RADIO_REG))
|
|
|
|
|
radio_len = sizeof(*dump_data) + RADIO_REG_MAX_READ;
|
|
|
|
|
}
|
|
|
|
@ -1136,7 +1138,7 @@ static int iwl_dump_ini_paging_iter(struct iwl_fw_runtime *fwrt,
|
|
|
|
|
struct iwl_fw_ini_error_dump_range *range;
|
|
|
|
|
u32 page_size;
|
|
|
|
|
|
|
|
|
|
if (!fwrt->trans->cfg->gen2)
|
|
|
|
|
if (!fwrt->trans->cfg->trans.gen2)
|
|
|
|
|
return _iwl_dump_ini_paging_iter(fwrt, reg, range_ptr, idx);
|
|
|
|
|
|
|
|
|
|
range = range_ptr;
|
|
|
|
@ -1442,7 +1444,7 @@ static void
|
|
|
|
|
struct iwl_fw_ini_monitor_dump *mon_dump = (void *)data;
|
|
|
|
|
u32 write_ptr_addr, write_ptr_msk, cycle_cnt_addr, cycle_cnt_msk;
|
|
|
|
|
|
|
|
|
|
switch (fwrt->trans->cfg->device_family) {
|
|
|
|
|
switch (fwrt->trans->cfg->trans.device_family) {
|
|
|
|
|
case IWL_DEVICE_FAMILY_9000:
|
|
|
|
|
case IWL_DEVICE_FAMILY_22000:
|
|
|
|
|
write_ptr_addr = MON_BUFF_WRPTR_VER2;
|
|
|
|
@ -1452,7 +1454,7 @@ static void
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
IWL_ERR(fwrt, "Unsupported device family %d\n",
|
|
|
|
|
fwrt->trans->cfg->device_family);
|
|
|
|
|
fwrt->trans->cfg->trans.device_family);
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1469,10 +1471,10 @@ static void
|
|
|
|
|
struct iwl_fw_ini_monitor_dump *mon_dump = (void *)data;
|
|
|
|
|
const struct iwl_cfg *cfg = fwrt->trans->cfg;
|
|
|
|
|
|
|
|
|
|
if (fwrt->trans->cfg->device_family != IWL_DEVICE_FAMILY_9000 &&
|
|
|
|
|
fwrt->trans->cfg->device_family != IWL_DEVICE_FAMILY_22000) {
|
|
|
|
|
if (fwrt->trans->cfg->trans.device_family != IWL_DEVICE_FAMILY_9000 &&
|
|
|
|
|
fwrt->trans->cfg->trans.device_family != IWL_DEVICE_FAMILY_22000) {
|
|
|
|
|
IWL_ERR(fwrt, "Unsupported device family %d\n",
|
|
|
|
|
fwrt->trans->cfg->device_family);
|
|
|
|
|
fwrt->trans->cfg->trans.device_family);
|
|
|
|
|
return NULL;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -1493,7 +1495,7 @@ static u32 iwl_dump_ini_mem_ranges(struct iwl_fw_runtime *fwrt,
|
|
|
|
|
static u32 iwl_dump_ini_paging_ranges(struct iwl_fw_runtime *fwrt,
|
|
|
|
|
struct iwl_fw_ini_region_cfg *reg)
|
|
|
|
|
{
|
|
|
|
|
if (fwrt->trans->cfg->gen2)
|
|
|
|
|
if (fwrt->trans->cfg->trans.gen2)
|
|
|
|
|
return fwrt->trans->init_dram.paging_cnt;
|
|
|
|
|
|
|
|
|
|
return fwrt->num_of_paging_blk;
|
|
|
|
@ -1541,7 +1543,7 @@ static u32 iwl_dump_ini_paging_get_size(struct iwl_fw_runtime *fwrt,
|
|
|
|
|
u32 range_header_len = sizeof(struct iwl_fw_ini_error_dump_range);
|
|
|
|
|
u32 size = sizeof(struct iwl_fw_ini_error_dump);
|
|
|
|
|
|
|
|
|
|
if (fwrt->trans->cfg->gen2) {
|
|
|
|
|
if (fwrt->trans->cfg->trans.gen2) {
|
|
|
|
|
for (i = 0; i < iwl_dump_ini_paging_ranges(fwrt, reg); i++)
|
|
|
|
|
size += range_header_len +
|
|
|
|
|
fwrt->trans->init_dram.paging[i].size;
|
|
|
|
@ -2470,7 +2472,7 @@ static int iwl_fw_dbg_suspend_resume_hcmd(struct iwl_trans *trans, bool suspend)
|
|
|
|
|
static void iwl_fw_dbg_stop_recording(struct iwl_trans *trans,
|
|
|
|
|
struct iwl_fw_dbg_params *params)
|
|
|
|
|
{
|
|
|
|
|
if (trans->cfg->device_family == IWL_DEVICE_FAMILY_7000) {
|
|
|
|
|
if (trans->cfg->trans.device_family == IWL_DEVICE_FAMILY_7000) {
|
|
|
|
|
iwl_set_bits_prph(trans, MON_BUFF_SAMPLE_CTL, 0x100);
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
@ -2494,7 +2496,7 @@ static int iwl_fw_dbg_restart_recording(struct iwl_trans *trans,
|
|
|
|
|
if (!params)
|
|
|
|
|
return -EIO;
|
|
|
|
|
|
|
|
|
|
if (trans->cfg->device_family == IWL_DEVICE_FAMILY_7000) {
|
|
|
|
|
if (trans->cfg->trans.device_family == IWL_DEVICE_FAMILY_7000) {
|
|
|
|
|
iwl_clear_bits_prph(trans, MON_BUFF_SAMPLE_CTL, 0x100);
|
|
|
|
|
iwl_clear_bits_prph(trans, MON_BUFF_SAMPLE_CTL, 0x1);
|
|
|
|
|
iwl_set_bits_prph(trans, MON_BUFF_SAMPLE_CTL, 0x1);
|
|
|
|
|