fwrt 89 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static void iwl_read_radio_regs(struct iwl_fw_runtime *fwrt, fwrt 96 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_DEBUG_INFO(fwrt, "WRT radio registers dump\n"); fwrt 98 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!iwl_trans_grab_nic_access(fwrt->trans, &flags)) fwrt 108 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_write_prph_no_grab(fwrt->trans, RSP_RADIO_CMD, rd_cmd); fwrt 109 drivers/net/wireless/intel/iwlwifi/fw/dbg.c *pos = (u8)iwl_read_prph_no_grab(fwrt->trans, RSP_RADIO_RDDAT); fwrt 116 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_release_nic_access(fwrt->trans, &flags); fwrt 119 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static void iwl_fwrt_dump_rxf(struct iwl_fw_runtime *fwrt, fwrt 142 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(iwl_trans_read_prph(fwrt->trans, fwrt 145 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(iwl_trans_read_prph(fwrt->trans, fwrt 148 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(iwl_trans_read_prph(fwrt->trans, fwrt 151 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(iwl_trans_read_prph(fwrt->trans, fwrt 154 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(iwl_trans_read_prph(fwrt->trans, fwrt 158 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_write_prph(fwrt->trans, RXF_SET_FENCE_MODE + offset, 0x1); fwrt 160 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_write_prph(fwrt->trans, RXF_LD_WR2FENCE + offset, 0x1); fwrt 162 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_write_prph(fwrt->trans, fwrt 168 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fifo_data[i] = iwl_trans_read_prph(fwrt->trans, fwrt 174 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static void iwl_fwrt_dump_txf(struct iwl_fw_runtime *fwrt, fwrt 197 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(iwl_trans_read_prph(fwrt->trans, fwrt 200 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(iwl_trans_read_prph(fwrt->trans, fwrt 203 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(iwl_trans_read_prph(fwrt->trans, fwrt 206 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(iwl_trans_read_prph(fwrt->trans, fwrt 209 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(iwl_trans_read_prph(fwrt->trans, fwrt 213 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_write_prph(fwrt->trans, TXF_READ_MODIFY_ADDR + offset, fwrt 217 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_read_prph(fwrt->trans, TXF_READ_MODIFY_DATA + offset); fwrt 222 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fifo_data[i] = iwl_trans_read_prph(fwrt->trans, fwrt 228 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static void iwl_fw_dump_rxf(struct iwl_fw_runtime *fwrt, fwrt 231 drivers/net/wireless/intel/iwlwifi/fw/dbg.c struct iwl_fwrt_shared_mem_cfg *cfg = &fwrt->smem_cfg; fwrt 234 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_DEBUG_INFO(fwrt, "WRT RX FIFO dump\n"); fwrt 236 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!iwl_trans_grab_nic_access(fwrt->trans, &flags)) fwrt 239 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_RXF)) { fwrt 241 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fwrt_dump_rxf(fwrt, dump_data, fwrt 244 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fwrt_dump_rxf(fwrt, dump_data, cfg->rxfifo2_size, fwrt 246 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->trans->trans_cfg->umac_prph_offset, 1); fwrt 248 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->smem_cfg.num_lmacs > 1) fwrt 249 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fwrt_dump_rxf(fwrt, dump_data, fwrt 254 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_release_nic_access(fwrt->trans, &flags); fwrt 257 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static void iwl_fw_dump_txf(struct iwl_fw_runtime *fwrt, fwrt 261 drivers/net/wireless/intel/iwlwifi/fw/dbg.c struct iwl_fwrt_shared_mem_cfg *cfg = &fwrt->smem_cfg; fwrt 267 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_DEBUG_INFO(fwrt, "WRT TX FIFO dump\n"); fwrt 269 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!iwl_trans_grab_nic_access(fwrt->trans, &flags)) fwrt 272 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_TXF)) { fwrt 274 drivers/net/wireless/intel/iwlwifi/fw/dbg.c for (i = 0; i < fwrt->smem_cfg.num_txfifo_entries; i++) { fwrt 276 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_write_prph(fwrt->trans, TXF_LARC_NUM, i); fwrt 277 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fwrt_dump_txf(fwrt, dump_data, fwrt 282 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->smem_cfg.num_lmacs > 1) { fwrt 283 drivers/net/wireless/intel/iwlwifi/fw/dbg.c for (i = 0; i < fwrt->smem_cfg.num_txfifo_entries; fwrt 286 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_write_prph(fwrt->trans, fwrt 289 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fwrt_dump_txf(fwrt, dump_data, fwrt 297 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_INTERNAL_TXF) && fwrt 298 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fw_has_capa(&fwrt->fw->ucode_capa, fwrt 302 drivers/net/wireless/intel/iwlwifi/fw/dbg.c i < ARRAY_SIZE(fwrt->smem_cfg.internal_txfifo_size); fwrt 306 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fifo_len = fwrt->smem_cfg.internal_txfifo_size[i]; fwrt 321 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_write_prph(fwrt->trans, TXF_CPU2_NUM, i + fwrt 322 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->smem_cfg.num_txfifo_entries); fwrt 325 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(iwl_trans_read_prph(fwrt->trans, fwrt 328 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(iwl_trans_read_prph(fwrt->trans, fwrt 331 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(iwl_trans_read_prph(fwrt->trans, fwrt 334 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(iwl_trans_read_prph(fwrt->trans, fwrt 337 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(iwl_trans_read_prph(fwrt->trans, fwrt 341 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_write_prph(fwrt->trans, fwrt 346 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_read_prph(fwrt->trans, fwrt 353 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_read_prph(fwrt->trans, fwrt 359 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_release_nic_access(fwrt->trans, &flags); fwrt 579 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static void iwl_dump_prph(struct iwl_fw_runtime *fwrt, fwrt 584 drivers/net/wireless/intel/iwlwifi/fw/dbg.c struct iwl_trans *trans = fwrt->trans; fwrt 659 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static void iwl_fw_get_prph_len(struct iwl_fw_runtime *fwrt, fwrt 681 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static void iwl_fw_prph_handler(struct iwl_fw_runtime *fwrt, void *ptr, fwrt 688 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_AX210) { fwrt 690 drivers/net/wireless/intel/iwlwifi/fw/dbg.c handler(fwrt, iwl_prph_dump_addr_ax210, range_len, ptr); fwrt 691 drivers/net/wireless/intel/iwlwifi/fw/dbg.c } else if (fwrt->trans->trans_cfg->device_family >= fwrt 694 drivers/net/wireless/intel/iwlwifi/fw/dbg.c handler(fwrt, iwl_prph_dump_addr_22000, range_len, ptr); fwrt 697 drivers/net/wireless/intel/iwlwifi/fw/dbg.c handler(fwrt, iwl_prph_dump_addr_comm, range_len, ptr); fwrt 699 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->trans->trans_cfg->mq_rx_supported) { fwrt 701 drivers/net/wireless/intel/iwlwifi/fw/dbg.c handler(fwrt, iwl_prph_dump_addr_9000, range_len, ptr); fwrt 706 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static void iwl_fw_dump_mem(struct iwl_fw_runtime *fwrt, fwrt 720 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_read_mem_bytes(fwrt->trans, ofs, dump_mem->data, len); fwrt 723 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_DEBUG_INFO(fwrt, "WRT memory dump. Type=%u\n", dump_mem->type); fwrt 730 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static int iwl_fw_rxf_len(struct iwl_fw_runtime *fwrt, fwrt 738 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_RXF)) fwrt 754 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static int iwl_fw_txf_len(struct iwl_fw_runtime *fwrt, fwrt 762 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_TXF)) fwrt 778 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!(iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_INTERNAL_TXF) && fwrt 779 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fw_has_capa(&fwrt->fw->ucode_capa, fwrt 790 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static void iwl_dump_paging(struct iwl_fw_runtime *fwrt, fwrt 795 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_DEBUG_INFO(fwrt, "WRT paging dump\n"); fwrt 796 drivers/net/wireless/intel/iwlwifi/fw/dbg.c for (i = 1; i < fwrt->num_of_paging_blk + 1; i++) { fwrt 799 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->fw_paging_db[i].fw_paging_block; fwrt 800 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dma_addr_t addr = fwrt->fw_paging_db[i].fw_paging_phys; fwrt 807 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dma_sync_single_for_cpu(fwrt->trans->dev, addr, fwrt 812 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dma_sync_single_for_device(fwrt->trans->dev, addr, fwrt 820 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_error_dump_file(struct iwl_fw_runtime *fwrt, fwrt 829 drivers/net/wireless/intel/iwlwifi/fw/dbg.c const struct iwl_fw_dbg_mem_seg_tlv *fw_mem = fwrt->fw->dbg.mem_tlv; fwrt 830 drivers/net/wireless/intel/iwlwifi/fw/dbg.c struct iwl_fwrt_shared_mem_cfg *mem_cfg = &fwrt->smem_cfg; fwrt 832 drivers/net/wireless/intel/iwlwifi/fw/dbg.c u32 smem_len = fwrt->fw->dbg.n_mem_tlv ? 0 : fwrt->trans->cfg->smem_len; fwrt 833 drivers/net/wireless/intel/iwlwifi/fw/dbg.c u32 sram2_len = fwrt->fw->dbg.n_mem_tlv ? fwrt 834 drivers/net/wireless/intel/iwlwifi/fw/dbg.c 0 : fwrt->trans->cfg->dccm2_len; fwrt 838 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!fwrt->trans->cfg->dccm_offset || !fwrt->trans->cfg->dccm_len) { fwrt 841 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->cur_fw_img >= IWL_UCODE_TYPE_MAX) fwrt 843 drivers/net/wireless/intel/iwlwifi/fw/dbg.c img = &fwrt->fw->img[fwrt->cur_fw_img]; fwrt 847 drivers/net/wireless/intel/iwlwifi/fw/dbg.c sram_ofs = fwrt->trans->cfg->dccm_offset; fwrt 848 drivers/net/wireless/intel/iwlwifi/fw/dbg.c sram_len = fwrt->trans->cfg->dccm_len; fwrt 852 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (test_bit(STATUS_FW_ERROR, &fwrt->trans->status)) { fwrt 853 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fifo_len = iwl_fw_rxf_len(fwrt, mem_cfg); fwrt 854 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fifo_len += iwl_fw_txf_len(fwrt, mem_cfg); fwrt 857 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_PRPH)) fwrt 858 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_prph_handler(fwrt, &prph_len, fwrt 861 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->trans->trans_cfg->device_family == fwrt 863 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_RADIO_REG)) fwrt 869 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_DEV_FW_INFO)) fwrt 871 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_MEM_CFG)) fwrt 874 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_MEM)) { fwrt 879 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!fwrt->fw->dbg.n_mem_tlv) fwrt 886 drivers/net/wireless/intel/iwlwifi/fw/dbg.c for (i = 0; i < fwrt->fw->dbg.n_mem_tlv; i++) fwrt 891 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (iwl_fw_dbg_is_paging_enabled(fwrt)) fwrt 892 drivers/net/wireless/intel/iwlwifi/fw/dbg.c file_len += fwrt->num_of_paging_blk * fwrt 897 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (iwl_fw_dbg_is_d3_debug_enabled(fwrt) && fwrt->dump.d3_debug_data) { fwrt 899 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->trans->cfg->d3_debug_data_length * 2; fwrt 903 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->dump.monitor_only) { fwrt 908 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_ERROR_INFO) && fwrt 909 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->dump.desc) fwrt 911 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->dump.desc->len; fwrt 922 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_DEV_FW_INFO)) { fwrt 927 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(CSR_HW_REV_TYPE(fwrt->trans->hw_rev)); fwrt 929 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(CSR_HW_REV_STEP(fwrt->trans->hw_rev)); fwrt 930 drivers/net/wireless/intel/iwlwifi/fw/dbg.c memcpy(dump_info->fw_human_readable, fwrt->fw->human_readable, fwrt 932 drivers/net/wireless/intel/iwlwifi/fw/dbg.c strncpy(dump_info->dev_human_readable, fwrt->trans->cfg->name, fwrt 934 drivers/net/wireless/intel/iwlwifi/fw/dbg.c strncpy(dump_info->bus_human_readable, fwrt->dev->bus->name, fwrt 936 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dump_info->num_of_lmacs = fwrt->smem_cfg.num_lmacs; fwrt 938 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(fwrt->dump.lmac_err_id[0]); fwrt 939 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->smem_cfg.num_lmacs > 1) fwrt 941 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(fwrt->dump.lmac_err_id[1]); fwrt 942 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dump_info->umac_err_id = cpu_to_le32(fwrt->dump.umac_err_id); fwrt 947 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_MEM_CFG)) { fwrt 979 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_dump_rxf(fwrt, &dump_data); fwrt 980 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_dump_txf(fwrt, &dump_data); fwrt 984 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_read_radio_regs(fwrt, &dump_data); fwrt 986 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_ERROR_INFO) && fwrt 987 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->dump.desc) { fwrt 990 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->dump.desc->len); fwrt 992 drivers/net/wireless/intel/iwlwifi/fw/dbg.c memcpy(dump_trig, &fwrt->dump.desc->trig_desc, fwrt 993 drivers/net/wireless/intel/iwlwifi/fw/dbg.c sizeof(*dump_trig) + fwrt->dump.desc->len); fwrt 999 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->dump.monitor_only) fwrt 1002 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_MEM)) { fwrt 1004 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->fw->dbg.mem_tlv; fwrt 1006 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!fwrt->fw->dbg.n_mem_tlv) fwrt 1007 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_dump_mem(fwrt, &dump_data, sram_len, sram_ofs, fwrt 1010 drivers/net/wireless/intel/iwlwifi/fw/dbg.c for (i = 0; i < fwrt->fw->dbg.n_mem_tlv; i++) { fwrt 1014 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_dump_mem(fwrt, &dump_data, len, ofs, fwrt 1018 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_dump_mem(fwrt, &dump_data, smem_len, fwrt 1019 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->trans->cfg->smem_offset, fwrt 1022 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_dump_mem(fwrt, &dump_data, sram2_len, fwrt 1023 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->trans->cfg->dccm2_offset, fwrt 1027 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (iwl_fw_dbg_is_d3_debug_enabled(fwrt) && fwrt->dump.d3_debug_data) { fwrt 1028 drivers/net/wireless/intel/iwlwifi/fw/dbg.c u32 addr = fwrt->trans->cfg->d3_debug_data_base_addr; fwrt 1029 drivers/net/wireless/intel/iwlwifi/fw/dbg.c size_t data_size = fwrt->trans->cfg->d3_debug_data_length; fwrt 1034 drivers/net/wireless/intel/iwlwifi/fw/dbg.c memcpy(dump_data->data, fwrt->dump.d3_debug_data, data_size); fwrt 1036 drivers/net/wireless/intel/iwlwifi/fw/dbg.c kfree(fwrt->dump.d3_debug_data); fwrt 1037 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->dump.d3_debug_data = NULL; fwrt 1039 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_read_mem_bytes(fwrt->trans, addr, fwrt 1047 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (iwl_fw_dbg_is_paging_enabled(fwrt)) fwrt 1048 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_dump_paging(fwrt, &dump_data); fwrt 1051 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_prph_handler(fwrt, &dump_data, iwl_dump_prph); fwrt 1058 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static int iwl_dump_ini_prph_iter(struct iwl_fw_runtime *fwrt, fwrt 1071 drivers/net/wireless/intel/iwlwifi/fw/dbg.c prph_val = iwl_read_prph(fwrt->trans, addr + i); fwrt 1080 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static int iwl_dump_ini_csr_iter(struct iwl_fw_runtime *fwrt, fwrt 1092 drivers/net/wireless/intel/iwlwifi/fw/dbg.c *val++ = cpu_to_le32(iwl_trans_read32(fwrt->trans, addr + i)); fwrt 1097 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static int iwl_dump_ini_dev_mem_iter(struct iwl_fw_runtime *fwrt, fwrt 1106 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_read_mem_bytes(fwrt->trans, addr, range->data, fwrt 1112 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static int _iwl_dump_ini_paging_iter(struct iwl_fw_runtime *fwrt, fwrt 1119 drivers/net/wireless/intel/iwlwifi/fw/dbg.c struct page *page = fwrt->fw_paging_db[++idx].fw_paging_block; fwrt 1121 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dma_addr_t addr = fwrt->fw_paging_db[idx].fw_paging_phys; fwrt 1122 drivers/net/wireless/intel/iwlwifi/fw/dbg.c u32 page_size = fwrt->fw_paging_db[idx].fw_paging_size; fwrt 1126 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dma_sync_single_for_cpu(fwrt->trans->dev, addr, page_size, fwrt 1129 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dma_sync_single_for_device(fwrt->trans->dev, addr, page_size, fwrt 1135 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static int iwl_dump_ini_paging_iter(struct iwl_fw_runtime *fwrt, fwrt 1142 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!fwrt->trans->trans_cfg->gen2) fwrt 1143 drivers/net/wireless/intel/iwlwifi/fw/dbg.c return _iwl_dump_ini_paging_iter(fwrt, reg, range_ptr, idx); fwrt 1146 drivers/net/wireless/intel/iwlwifi/fw/dbg.c page_size = fwrt->trans->init_dram.paging[idx].size; fwrt 1150 drivers/net/wireless/intel/iwlwifi/fw/dbg.c memcpy(range->data, fwrt->trans->init_dram.paging[idx].block, fwrt 1157 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_dump_ini_mon_dram_iter(struct iwl_fw_runtime *fwrt, fwrt 1162 drivers/net/wireless/intel/iwlwifi/fw/dbg.c u32 start_addr = iwl_read_umac_prph(fwrt->trans, fwrt 1169 drivers/net/wireless/intel/iwlwifi/fw/dbg.c range->range_data_size = cpu_to_le32(fwrt->trans->dbg.fw_mon[idx].size); fwrt 1171 drivers/net/wireless/intel/iwlwifi/fw/dbg.c memcpy(range->data, fwrt->trans->dbg.fw_mon[idx].block, fwrt 1172 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->trans->dbg.fw_mon[idx].size); fwrt 1177 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static bool iwl_ini_txf_iter(struct iwl_fw_runtime *fwrt, fwrt 1180 drivers/net/wireless/intel/iwlwifi/fw/dbg.c struct iwl_txf_iter_data *iter = &fwrt->dump.txf_iter_data; fwrt 1181 drivers/net/wireless/intel/iwlwifi/fw/dbg.c struct iwl_fwrt_shared_mem_cfg *cfg = &fwrt->smem_cfg; fwrt 1212 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!fw_has_capa(&fwrt->fw->ucode_capa, fwrt 1226 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static int iwl_dump_ini_txf_iter(struct iwl_fw_runtime *fwrt, fwrt 1231 drivers/net/wireless/intel/iwlwifi/fw/dbg.c struct iwl_txf_iter_data *iter = &fwrt->dump.txf_iter_data; fwrt 1240 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!iwl_ini_txf_iter(fwrt, reg, idx)) fwrt 1243 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!iwl_trans_grab_nic_access(fwrt->trans, &flags)) fwrt 1250 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_write_prph_no_grab(fwrt->trans, TXF_LARC_NUM + offs, iter->fifo); fwrt 1260 drivers/net/wireless/intel/iwlwifi/fw/dbg.c reg_dump->data = cpu_to_le32(iwl_read_prph_no_grab(fwrt->trans, fwrt 1272 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_write_prph_no_grab(fwrt->trans, TXF_READ_MODIFY_ADDR + offs, fwrt 1276 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_read_prph_no_grab(fwrt->trans, TXF_READ_MODIFY_DATA + offs); fwrt 1282 drivers/net/wireless/intel/iwlwifi/fw/dbg.c *data++ = cpu_to_le32(iwl_read_prph_no_grab(fwrt->trans, addr)); fwrt 1285 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_release_nic_access(fwrt->trans, &flags); fwrt 1296 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static void iwl_ini_get_rxf_data(struct iwl_fw_runtime *fwrt, fwrt 1315 drivers/net/wireless/intel/iwlwifi/fw/dbg.c data->size = fwrt->smem_cfg.lmac[fifo_idx].rxfifo1_size; fwrt 1322 drivers/net/wireless/intel/iwlwifi/fw/dbg.c data->size = fwrt->smem_cfg.rxfifo2_size; fwrt 1332 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static int iwl_dump_ini_rxf_iter(struct iwl_fw_runtime *fwrt, fwrt 1346 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_ini_get_rxf_data(fwrt, reg, &rxf_data); fwrt 1350 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!iwl_trans_grab_nic_access(fwrt->trans, &flags)) fwrt 1365 drivers/net/wireless/intel/iwlwifi/fw/dbg.c reg_dump->data = cpu_to_le32(iwl_read_prph_no_grab(fwrt->trans, fwrt 1379 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_write_prph_no_grab(fwrt->trans, RXF_SET_FENCE_MODE + offs, 0x1); fwrt 1381 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_write_prph_no_grab(fwrt->trans, RXF_LD_WR2FENCE + offs, 0x1); fwrt 1383 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_write_prph_no_grab(fwrt->trans, RXF_LD_FENCE_OFFSET_ADDR + offs, fwrt 1390 drivers/net/wireless/intel/iwlwifi/fw/dbg.c *data++ = cpu_to_le32(iwl_read_prph_no_grab(fwrt->trans, addr)); fwrt 1393 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_release_nic_access(fwrt->trans, &flags); fwrt 1398 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static void *iwl_dump_ini_mem_fill_header(struct iwl_fw_runtime *fwrt, fwrt 1410 drivers/net/wireless/intel/iwlwifi/fw/dbg.c *iwl_dump_ini_mon_fill_header(struct iwl_fw_runtime *fwrt, fwrt 1419 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!iwl_trans_grab_nic_access(fwrt->trans, &flags)) { fwrt 1420 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_ERR(fwrt, "Failed to get monitor header\n"); fwrt 1424 drivers/net/wireless/intel/iwlwifi/fw/dbg.c write_ptr = iwl_read_prph_no_grab(fwrt->trans, write_ptr_addr); fwrt 1425 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cycle_cnt = iwl_read_prph_no_grab(fwrt->trans, cycle_cnt_addr); fwrt 1427 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_release_nic_access(fwrt->trans, &flags); fwrt 1437 drivers/net/wireless/intel/iwlwifi/fw/dbg.c *iwl_dump_ini_mon_dram_fill_header(struct iwl_fw_runtime *fwrt, fwrt 1444 drivers/net/wireless/intel/iwlwifi/fw/dbg.c switch (fwrt->trans->trans_cfg->device_family) { fwrt 1453 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_ERR(fwrt, "Unsupported device family %d\n", fwrt 1454 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->trans->trans_cfg->device_family); fwrt 1458 drivers/net/wireless/intel/iwlwifi/fw/dbg.c return iwl_dump_ini_mon_fill_header(fwrt, reg, mon_dump, write_ptr_addr, fwrt 1464 drivers/net/wireless/intel/iwlwifi/fw/dbg.c *iwl_dump_ini_mon_smem_fill_header(struct iwl_fw_runtime *fwrt, fwrt 1469 drivers/net/wireless/intel/iwlwifi/fw/dbg.c const struct iwl_cfg *cfg = fwrt->trans->cfg; fwrt 1471 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->trans->trans_cfg->device_family != IWL_DEVICE_FAMILY_9000 && fwrt 1472 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->trans->trans_cfg->device_family != IWL_DEVICE_FAMILY_22000) { fwrt 1473 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_ERR(fwrt, "Unsupported device family %d\n", fwrt 1474 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->trans->trans_cfg->device_family); fwrt 1478 drivers/net/wireless/intel/iwlwifi/fw/dbg.c return iwl_dump_ini_mon_fill_header(fwrt, reg, mon_dump, fwrt 1486 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static u32 iwl_dump_ini_mem_ranges(struct iwl_fw_runtime *fwrt, fwrt 1492 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static u32 iwl_dump_ini_paging_ranges(struct iwl_fw_runtime *fwrt, fwrt 1495 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->trans->trans_cfg->gen2) fwrt 1496 drivers/net/wireless/intel/iwlwifi/fw/dbg.c return fwrt->trans->init_dram.paging_cnt; fwrt 1498 drivers/net/wireless/intel/iwlwifi/fw/dbg.c return fwrt->num_of_paging_blk; fwrt 1501 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static u32 iwl_dump_ini_mon_dram_ranges(struct iwl_fw_runtime *fwrt, fwrt 1507 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static u32 iwl_dump_ini_txf_ranges(struct iwl_fw_runtime *fwrt, fwrt 1512 drivers/net/wireless/intel/iwlwifi/fw/dbg.c while (iwl_ini_txf_iter(fwrt, reg, num_of_fifos)) fwrt 1518 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static u32 iwl_dump_ini_rxf_ranges(struct iwl_fw_runtime *fwrt, fwrt 1527 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static u32 iwl_dump_ini_mem_get_size(struct iwl_fw_runtime *fwrt, fwrt 1531 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_dump_ini_mem_ranges(fwrt, reg) * fwrt 1536 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static u32 iwl_dump_ini_paging_get_size(struct iwl_fw_runtime *fwrt, fwrt 1543 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->trans->trans_cfg->gen2) { fwrt 1544 drivers/net/wireless/intel/iwlwifi/fw/dbg.c for (i = 0; i < iwl_dump_ini_paging_ranges(fwrt, reg); i++) fwrt 1546 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->trans->init_dram.paging[i].size; fwrt 1548 drivers/net/wireless/intel/iwlwifi/fw/dbg.c for (i = 1; i <= iwl_dump_ini_paging_ranges(fwrt, reg); i++) fwrt 1550 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->fw_paging_db[i].fw_paging_size; fwrt 1556 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static u32 iwl_dump_ini_mon_dram_get_size(struct iwl_fw_runtime *fwrt, fwrt 1562 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->trans->dbg.num_blocks) fwrt 1563 drivers/net/wireless/intel/iwlwifi/fw/dbg.c size += fwrt->trans->dbg.fw_mon[0].size; fwrt 1568 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static u32 iwl_dump_ini_mon_smem_get_size(struct iwl_fw_runtime *fwrt, fwrt 1572 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_dump_ini_mem_ranges(fwrt, reg) * fwrt 1577 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static u32 iwl_dump_ini_txf_get_size(struct iwl_fw_runtime *fwrt, fwrt 1580 drivers/net/wireless/intel/iwlwifi/fw/dbg.c struct iwl_txf_iter_data *iter = &fwrt->dump.txf_iter_data; fwrt 1586 drivers/net/wireless/intel/iwlwifi/fw/dbg.c while (iwl_ini_txf_iter(fwrt, reg, size)) { fwrt 1598 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static u32 iwl_dump_ini_rxf_get_size(struct iwl_fw_runtime *fwrt, fwrt 1610 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_ini_get_rxf_data(fwrt, reg, &rx_data); fwrt 1626 drivers/net/wireless/intel/iwlwifi/fw/dbg.c u32 (*get_num_of_ranges)(struct iwl_fw_runtime *fwrt, fwrt 1628 drivers/net/wireless/intel/iwlwifi/fw/dbg.c u32 (*get_size)(struct iwl_fw_runtime *fwrt, fwrt 1630 drivers/net/wireless/intel/iwlwifi/fw/dbg.c void *(*fill_mem_hdr)(struct iwl_fw_runtime *fwrt, fwrt 1632 drivers/net/wireless/intel/iwlwifi/fw/dbg.c int (*fill_range)(struct iwl_fw_runtime *fwrt, fwrt 1648 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static u32 iwl_dump_ini_mem(struct iwl_fw_runtime *fwrt, struct list_head *list, fwrt 1662 drivers/net/wireless/intel/iwlwifi/fw/dbg.c size = ops->get_size(fwrt, reg); fwrt 1676 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_DEBUG_FW(fwrt, "WRT: Collecting region: id=%d, type=%d\n", fwrt 1679 drivers/net/wireless/intel/iwlwifi/fw/dbg.c num_of_ranges = ops->get_num_of_ranges(fwrt, reg); fwrt 1688 drivers/net/wireless/intel/iwlwifi/fw/dbg.c range = ops->fill_mem_hdr(fwrt, reg, header); fwrt 1690 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_ERR(fwrt, fwrt 1697 drivers/net/wireless/intel/iwlwifi/fw/dbg.c int range_size = ops->fill_range(fwrt, reg, range, i); fwrt 1700 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_ERR(fwrt, fwrt 1718 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static u32 iwl_dump_ini_info(struct iwl_fw_runtime *fwrt, fwrt 1743 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(fwrt->trans->dbg.external_ini_cfg); fwrt 1745 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dump->ver_type = cpu_to_le32(fwrt->dump.fw_ver.type); fwrt 1746 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dump->ver_subtype = cpu_to_le32(fwrt->dump.fw_ver.subtype); fwrt 1748 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dump->hw_step = cpu_to_le32(CSR_HW_REV_STEP(fwrt->trans->hw_rev)); fwrt 1749 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dump->hw_type = cpu_to_le32(CSR_HW_REV_TYPE(fwrt->trans->hw_rev)); fwrt 1752 drivers/net/wireless/intel/iwlwifi/fw/dbg.c cpu_to_le32(CSR_HW_RFID_FLAVOR(fwrt->trans->hw_rf_id)); fwrt 1753 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dump->rf_id_dash = cpu_to_le32(CSR_HW_RFID_DASH(fwrt->trans->hw_rf_id)); fwrt 1754 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dump->rf_id_step = cpu_to_le32(CSR_HW_RFID_STEP(fwrt->trans->hw_rf_id)); fwrt 1755 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dump->rf_id_type = cpu_to_le32(CSR_HW_RFID_TYPE(fwrt->trans->hw_rf_id)); fwrt 1757 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dump->lmac_major = cpu_to_le32(fwrt->dump.fw_ver.lmac_major); fwrt 1758 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dump->lmac_minor = cpu_to_le32(fwrt->dump.fw_ver.lmac_minor); fwrt 1759 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dump->umac_major = cpu_to_le32(fwrt->dump.fw_ver.umac_major); fwrt 1760 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dump->umac_minor = cpu_to_le32(fwrt->dump.fw_ver.umac_minor); fwrt 1763 drivers/net/wireless/intel/iwlwifi/fw/dbg.c memcpy(dump->build_tag, fwrt->fw->human_readable, fwrt 1767 drivers/net/wireless/intel/iwlwifi/fw/dbg.c memcpy(dump->img_name, fwrt->dump.img_name, sizeof(dump->img_name)); fwrt 1771 drivers/net/wireless/intel/iwlwifi/fw/dbg.c memcpy(dump->internal_dbg_cfg_name, fwrt->dump.internal_dbg_cfg_name, fwrt 1777 drivers/net/wireless/intel/iwlwifi/fw/dbg.c memcpy(dump->external_dbg_cfg_name, fwrt->dump.external_dbg_cfg_name, fwrt 1860 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static u32 iwl_dump_ini_trigger(struct iwl_fw_runtime *fwrt, fwrt 1871 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (WARN_ON(reg_id >= ARRAY_SIZE(fwrt->dump.active_regs))) fwrt 1874 drivers/net/wireless/intel/iwlwifi/fw/dbg.c reg = fwrt->dump.active_regs[reg_id]; fwrt 1876 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_WARN(fwrt, fwrt 1890 drivers/net/wireless/intel/iwlwifi/fw/dbg.c size += iwl_dump_ini_mem(fwrt, list, reg, fwrt 1895 drivers/net/wireless/intel/iwlwifi/fw/dbg.c size += iwl_dump_ini_info(fwrt, trigger, list); fwrt 1900 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static u32 iwl_dump_ini_file_gen(struct iwl_fw_runtime *fwrt, fwrt 1909 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!iwl_fw_ini_trigger_on(fwrt, trig_id)) fwrt 1912 drivers/net/wireless/intel/iwlwifi/fw/dbg.c trigger = fwrt->dump.active_trigs[trig_id].trig; fwrt 1922 drivers/net/wireless/intel/iwlwifi/fw/dbg.c size = iwl_dump_ini_trigger(fwrt, trigger, list); fwrt 1937 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static void iwl_fw_error_dump(struct iwl_fw_runtime *fwrt) fwrt 1943 drivers/net/wireless/intel/iwlwifi/fw/dbg.c u32 dump_mask = fwrt->fw->dbg.dump_mask; fwrt 1945 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dump_file = iwl_fw_error_dump_file(fwrt, &fw_error_dump); fwrt 1949 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->dump.monitor_only) fwrt 1952 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fw_error_dump.trans_ptr = iwl_trans_dump_data(fwrt->trans, dump_mask); fwrt 1973 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dev_coredumpsg(fwrt->trans->dev, sg_dump_data, file_len, fwrt 1980 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_free_dump_desc(fwrt); fwrt 1994 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static void iwl_fw_error_ini_dump(struct iwl_fw_runtime *fwrt, u8 wk_idx) fwrt 1996 drivers/net/wireless/intel/iwlwifi/fw/dbg.c enum iwl_fw_ini_trigger_id trig_id = fwrt->dump.wks[wk_idx].ini_trig_id; fwrt 2001 drivers/net/wireless/intel/iwlwifi/fw/dbg.c file_len = iwl_dump_ini_file_gen(fwrt, trig_id, &dump_list); fwrt 2016 drivers/net/wireless/intel/iwlwifi/fw/dbg.c dev_coredumpsg(fwrt->trans->dev, sg_dump_data, file_len, fwrt 2022 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->dump.wks[wk_idx].ini_trig_id = IWL_FW_TRIGGER_ID_INVALID; fwrt 2032 drivers/net/wireless/intel/iwlwifi/fw/dbg.c int iwl_fw_dbg_collect_desc(struct iwl_fw_runtime *fwrt, fwrt 2040 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (iwl_trans_dbg_ini_valid(fwrt->trans)) { fwrt 2041 drivers/net/wireless/intel/iwlwifi/fw/dbg.c ret = iwl_fw_dbg_ini_collect(fwrt, trig_type); fwrt 2043 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_free_dump_desc(fwrt); fwrt 2051 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (test_and_set_bit(fwrt->dump.wks[0].idx, &fwrt->dump.active_wks)) fwrt 2054 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (WARN_ON(fwrt->dump.desc)) fwrt 2055 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_free_dump_desc(fwrt); fwrt 2057 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_WARN(fwrt, "Collecting data: trigger %d fired.\n", fwrt 2060 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->dump.desc = desc; fwrt 2061 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->dump.monitor_only = monitor_only; fwrt 2063 drivers/net/wireless/intel/iwlwifi/fw/dbg.c schedule_delayed_work(&fwrt->dump.wks[0].wk, usecs_to_jiffies(delay)); fwrt 2069 drivers/net/wireless/intel/iwlwifi/fw/dbg.c int iwl_fw_dbg_error_collect(struct iwl_fw_runtime *fwrt, fwrt 2075 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!test_bit(STATUS_DEVICE_ENABLED, &fwrt->trans->status)) fwrt 2085 drivers/net/wireless/intel/iwlwifi/fw/dbg.c ret = iwl_fw_dbg_collect_desc(fwrt, iwl_dump_error_desc, false, 0); fwrt 2089 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_sync_nmi(fwrt->trans); fwrt 2095 drivers/net/wireless/intel/iwlwifi/fw/dbg.c int iwl_fw_dbg_collect(struct iwl_fw_runtime *fwrt, fwrt 2111 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_WARN(fwrt, "Force restart: trigger %d fired.\n", fwrt 2113 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_force_nmi(fwrt->trans); fwrt 2133 drivers/net/wireless/intel/iwlwifi/fw/dbg.c return iwl_fw_dbg_collect_desc(fwrt, desc, monitor_only, delay); fwrt 2137 drivers/net/wireless/intel/iwlwifi/fw/dbg.c int _iwl_fw_dbg_ini_collect(struct iwl_fw_runtime *fwrt, fwrt 2144 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (WARN_ON(!iwl_fw_ini_trigger_on(fwrt, id))) fwrt 2147 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!iwl_fw_ini_trigger_on(fwrt, id)) { fwrt 2148 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_WARN(fwrt, "WRT: Trigger %d is not active, aborting dump\n", fwrt 2153 drivers/net/wireless/intel/iwlwifi/fw/dbg.c active = &fwrt->dump.active_trigs[id]; fwrt 2162 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_WARN(fwrt, "WRT: Force restart: trigger %d fired.\n", id); fwrt 2163 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_force_nmi(fwrt->trans); fwrt 2171 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->dump.active_wks == ~0UL) fwrt 2174 drivers/net/wireless/intel/iwlwifi/fw/dbg.c idx = ffz(fwrt->dump.active_wks); fwrt 2177 drivers/net/wireless/intel/iwlwifi/fw/dbg.c test_and_set_bit(fwrt->dump.wks[idx].idx, &fwrt->dump.active_wks)) fwrt 2180 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->dump.wks[idx].ini_trig_id = id; fwrt 2182 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_WARN(fwrt, "WRT: Collecting data: ini trigger %d fired.\n", id); fwrt 2184 drivers/net/wireless/intel/iwlwifi/fw/dbg.c schedule_delayed_work(&fwrt->dump.wks[idx].wk, usecs_to_jiffies(delay)); fwrt 2190 drivers/net/wireless/intel/iwlwifi/fw/dbg.c int iwl_fw_dbg_ini_collect(struct iwl_fw_runtime *fwrt, u32 legacy_trigger_id) fwrt 2207 drivers/net/wireless/intel/iwlwifi/fw/dbg.c return _iwl_fw_dbg_ini_collect(fwrt, id); fwrt 2211 drivers/net/wireless/intel/iwlwifi/fw/dbg.c int iwl_fw_dbg_collect_trig(struct iwl_fw_runtime *fwrt, fwrt 2234 drivers/net/wireless/intel/iwlwifi/fw/dbg.c ret = iwl_fw_dbg_collect(fwrt, le32_to_cpu(trigger->id), buf, len, fwrt 2244 drivers/net/wireless/intel/iwlwifi/fw/dbg.c int iwl_fw_start_dbg_conf(struct iwl_fw_runtime *fwrt, u8 conf_id) fwrt 2250 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (WARN_ONCE(conf_id >= ARRAY_SIZE(fwrt->fw->dbg.conf_tlv), fwrt 2255 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if ((!fwrt->fw->dbg.conf_tlv[conf_id] || fwrt 2256 drivers/net/wireless/intel/iwlwifi/fw/dbg.c !fwrt->fw->dbg.conf_tlv[conf_id]->num_of_hcmds) && fwrt 2260 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!fwrt->fw->dbg.conf_tlv[conf_id]) fwrt 2263 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->dump.conf != FW_DBG_INVALID) fwrt 2264 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_WARN(fwrt, "FW already configured (%d) - re-configuring\n", fwrt 2265 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->dump.conf); fwrt 2268 drivers/net/wireless/intel/iwlwifi/fw/dbg.c ptr = (void *)&fwrt->fw->dbg.conf_tlv[conf_id]->hcmd; fwrt 2269 drivers/net/wireless/intel/iwlwifi/fw/dbg.c for (i = 0; i < fwrt->fw->dbg.conf_tlv[conf_id]->num_of_hcmds; i++) { fwrt 2277 drivers/net/wireless/intel/iwlwifi/fw/dbg.c ret = iwl_trans_send_cmd(fwrt->trans, &hcmd); fwrt 2285 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->dump.conf = conf_id; fwrt 2294 drivers/net/wireless/intel/iwlwifi/fw/dbg.c static void iwl_fw_dbg_collect_sync(struct iwl_fw_runtime *fwrt, u8 wk_idx) fwrt 2298 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!test_bit(wk_idx, &fwrt->dump.active_wks)) fwrt 2301 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->ops && fwrt->ops->fw_running && fwrt 2302 drivers/net/wireless/intel/iwlwifi/fw/dbg.c !fwrt->ops->fw_running(fwrt->ops_ctx)) { fwrt 2303 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_ERR(fwrt, "Firmware not running - cannot dump error\n"); fwrt 2304 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_free_dump_desc(fwrt); fwrt 2309 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (test_bit(STATUS_TRANS_DEAD, &fwrt->trans->status)) { fwrt 2310 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_ERR(fwrt, "Skip fw error dump since bus is dead\n"); fwrt 2314 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_dbg_stop_restart_recording(fwrt, ¶ms, true); fwrt 2316 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_DEBUG_FW_INFO(fwrt, "WRT: Data collection start\n"); fwrt 2317 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (iwl_trans_dbg_ini_valid(fwrt->trans)) fwrt 2318 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_error_ini_dump(fwrt, wk_idx); fwrt 2320 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_error_dump(fwrt); fwrt 2321 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_DEBUG_FW_INFO(fwrt, "WRT: Data collection done\n"); fwrt 2323 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_dbg_stop_restart_recording(fwrt, ¶ms, false); fwrt 2326 drivers/net/wireless/intel/iwlwifi/fw/dbg.c clear_bit(wk_idx, &fwrt->dump.active_wks); fwrt 2331 drivers/net/wireless/intel/iwlwifi/fw/dbg.c struct iwl_fw_runtime *fwrt; fwrt 2332 drivers/net/wireless/intel/iwlwifi/fw/dbg.c typeof(fwrt->dump.wks[0]) *wks; fwrt 2334 drivers/net/wireless/intel/iwlwifi/fw/dbg.c wks = container_of(work, typeof(fwrt->dump.wks[0]), wk.work); fwrt 2335 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt = container_of(wks, struct iwl_fw_runtime, dump.wks[wks->idx]); fwrt 2340 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->ops && fwrt->ops->dump_start && fwrt 2341 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->ops->dump_start(fwrt->ops_ctx)) fwrt 2344 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_dbg_collect_sync(fwrt, wks->idx); fwrt 2346 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fwrt->ops && fwrt->ops->dump_end) fwrt 2347 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->ops->dump_end(fwrt->ops_ctx); fwrt 2350 drivers/net/wireless/intel/iwlwifi/fw/dbg.c void iwl_fw_dbg_read_d3_debug_data(struct iwl_fw_runtime *fwrt) fwrt 2352 drivers/net/wireless/intel/iwlwifi/fw/dbg.c const struct iwl_cfg *cfg = fwrt->trans->cfg; fwrt 2354 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!iwl_fw_dbg_is_d3_debug_enabled(fwrt)) fwrt 2357 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!fwrt->dump.d3_debug_data) { fwrt 2358 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->dump.d3_debug_data = kmalloc(cfg->d3_debug_data_length, fwrt 2360 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (!fwrt->dump.d3_debug_data) { fwrt 2361 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_ERR(fwrt, fwrt 2368 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_trans_read_mem_bytes(fwrt->trans, cfg->d3_debug_data_base_addr, fwrt 2369 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->dump.d3_debug_data, fwrt 2374 drivers/net/wireless/intel/iwlwifi/fw/dbg.c void iwl_fw_dbg_stop_sync(struct iwl_fw_runtime *fwrt) fwrt 2378 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_dbg_tlv_del_timers(fwrt->trans); fwrt 2380 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_dbg_collect_sync(fwrt, i); fwrt 2382 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_dbg_stop_restart_recording(fwrt, NULL, true); fwrt 2388 drivers/net/wireless/intel/iwlwifi/fw/dbg.c void iwl_fw_error_print_fseq_regs(struct iwl_fw_runtime *fwrt) fwrt 2390 drivers/net/wireless/intel/iwlwifi/fw/dbg.c struct iwl_trans *trans = fwrt->trans; fwrt 2414 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_ERR(fwrt, "Fseq Registers:\n"); fwrt 2417 drivers/net/wireless/intel/iwlwifi/fw/dbg.c IWL_ERR(fwrt, "0x%08X | %s\n", fwrt 2480 drivers/net/wireless/intel/iwlwifi/fw/dbg.c void iwl_fw_dbg_stop_restart_recording(struct iwl_fw_runtime *fwrt, fwrt 2486 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (test_bit(STATUS_FW_ERROR, &fwrt->trans->status)) fwrt 2489 drivers/net/wireless/intel/iwlwifi/fw/dbg.c if (fw_has_capa(&fwrt->fw->ucode_capa, fwrt 2491 drivers/net/wireless/intel/iwlwifi/fw/dbg.c ret = iwl_fw_dbg_suspend_resume_hcmd(fwrt->trans, stop); fwrt 2493 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_dbg_stop_recording(fwrt->trans, params); fwrt 2495 drivers/net/wireless/intel/iwlwifi/fw/dbg.c ret = iwl_fw_dbg_restart_recording(fwrt->trans, params); fwrt 2499 drivers/net/wireless/intel/iwlwifi/fw/dbg.c fwrt->trans->dbg.rec_on = false; fwrt 2501 drivers/net/wireless/intel/iwlwifi/fw/dbg.c iwl_fw_set_dbg_rec_on(fwrt); fwrt 101 drivers/net/wireless/intel/iwlwifi/fw/dbg.h static inline void iwl_fw_free_dump_desc(struct iwl_fw_runtime *fwrt) fwrt 103 drivers/net/wireless/intel/iwlwifi/fw/dbg.h if (fwrt->dump.desc != &iwl_dump_desc_assert) fwrt 104 drivers/net/wireless/intel/iwlwifi/fw/dbg.h kfree(fwrt->dump.desc); fwrt 105 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->dump.desc = NULL; fwrt 106 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->dump.lmac_err_id[0] = 0; fwrt 107 drivers/net/wireless/intel/iwlwifi/fw/dbg.h if (fwrt->smem_cfg.num_lmacs > 1) fwrt 108 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->dump.lmac_err_id[1] = 0; fwrt 109 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->dump.umac_err_id = 0; fwrt 112 drivers/net/wireless/intel/iwlwifi/fw/dbg.h int iwl_fw_dbg_collect_desc(struct iwl_fw_runtime *fwrt, fwrt 115 drivers/net/wireless/intel/iwlwifi/fw/dbg.h int iwl_fw_dbg_error_collect(struct iwl_fw_runtime *fwrt, fwrt 117 drivers/net/wireless/intel/iwlwifi/fw/dbg.h int _iwl_fw_dbg_ini_collect(struct iwl_fw_runtime *fwrt, fwrt 119 drivers/net/wireless/intel/iwlwifi/fw/dbg.h int iwl_fw_dbg_ini_collect(struct iwl_fw_runtime *fwrt, u32 legacy_trigger_id); fwrt 120 drivers/net/wireless/intel/iwlwifi/fw/dbg.h int iwl_fw_dbg_collect(struct iwl_fw_runtime *fwrt, fwrt 123 drivers/net/wireless/intel/iwlwifi/fw/dbg.h int iwl_fw_dbg_collect_trig(struct iwl_fw_runtime *fwrt, fwrt 126 drivers/net/wireless/intel/iwlwifi/fw/dbg.h int iwl_fw_start_dbg_conf(struct iwl_fw_runtime *fwrt, u8 id); fwrt 156 drivers/net/wireless/intel/iwlwifi/fw/dbg.h iwl_fw_dbg_trigger_stop_conf_match(struct iwl_fw_runtime *fwrt, fwrt 160 drivers/net/wireless/intel/iwlwifi/fw/dbg.h (fwrt->dump.conf == FW_DBG_INVALID || fwrt 161 drivers/net/wireless/intel/iwlwifi/fw/dbg.h (BIT(fwrt->dump.conf) & le32_to_cpu(trig->stop_conf_ids)))); fwrt 165 drivers/net/wireless/intel/iwlwifi/fw/dbg.h iwl_fw_dbg_no_trig_window(struct iwl_fw_runtime *fwrt, u32 id, u32 dis_usec) fwrt 170 drivers/net/wireless/intel/iwlwifi/fw/dbg.h if (fwrt->dump.non_collect_ts_start[id] && fwrt 171 drivers/net/wireless/intel/iwlwifi/fw/dbg.h (time_after(fwrt->dump.non_collect_ts_start[id] + wind_jiff, fwrt 175 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->dump.non_collect_ts_start[id] = jiffies; fwrt 180 drivers/net/wireless/intel/iwlwifi/fw/dbg.h iwl_fw_dbg_trigger_check_stop(struct iwl_fw_runtime *fwrt, fwrt 189 drivers/net/wireless/intel/iwlwifi/fw/dbg.h if (iwl_fw_dbg_no_trig_window(fwrt, le32_to_cpu(trig->id), usec)) { fwrt 190 drivers/net/wireless/intel/iwlwifi/fw/dbg.h IWL_WARN(fwrt, "Trigger %d occurred while no-collect window.\n", fwrt 195 drivers/net/wireless/intel/iwlwifi/fw/dbg.h return iwl_fw_dbg_trigger_stop_conf_match(fwrt, trig); fwrt 199 drivers/net/wireless/intel/iwlwifi/fw/dbg.h _iwl_fw_dbg_trigger_on(struct iwl_fw_runtime *fwrt, fwrt 205 drivers/net/wireless/intel/iwlwifi/fw/dbg.h if (iwl_trans_dbg_ini_valid(fwrt->trans)) fwrt 208 drivers/net/wireless/intel/iwlwifi/fw/dbg.h if (!iwl_fw_dbg_trigger_enabled(fwrt->fw, id)) fwrt 211 drivers/net/wireless/intel/iwlwifi/fw/dbg.h trig = _iwl_fw_dbg_get_trigger(fwrt->fw, id); fwrt 213 drivers/net/wireless/intel/iwlwifi/fw/dbg.h if (!iwl_fw_dbg_trigger_check_stop(fwrt, wdev, trig)) fwrt 219 drivers/net/wireless/intel/iwlwifi/fw/dbg.h #define iwl_fw_dbg_trigger_on(fwrt, wdev, id) ({ \ fwrt 222 drivers/net/wireless/intel/iwlwifi/fw/dbg.h _iwl_fw_dbg_trigger_on((fwrt), (wdev), (id)); \ fwrt 226 drivers/net/wireless/intel/iwlwifi/fw/dbg.h iwl_fw_ini_trigger_on(struct iwl_fw_runtime *fwrt, fwrt 232 drivers/net/wireless/intel/iwlwifi/fw/dbg.h if (!iwl_trans_dbg_ini_valid(fwrt->trans) || fwrt 234 drivers/net/wireless/intel/iwlwifi/fw/dbg.h !fwrt->dump.active_trigs[id].active) fwrt 237 drivers/net/wireless/intel/iwlwifi/fw/dbg.h trig = fwrt->dump.active_trigs[id].trig; fwrt 240 drivers/net/wireless/intel/iwlwifi/fw/dbg.h if (iwl_fw_dbg_no_trig_window(fwrt, id, usec)) { fwrt 241 drivers/net/wireless/intel/iwlwifi/fw/dbg.h IWL_WARN(fwrt, "Trigger %d fired in no-collect window\n", id); fwrt 249 drivers/net/wireless/intel/iwlwifi/fw/dbg.h _iwl_fw_dbg_trigger_simple_stop(struct iwl_fw_runtime *fwrt, fwrt 256 drivers/net/wireless/intel/iwlwifi/fw/dbg.h if (!iwl_fw_dbg_trigger_check_stop(fwrt, wdev, trigger)) fwrt 259 drivers/net/wireless/intel/iwlwifi/fw/dbg.h iwl_fw_dbg_collect_trig(fwrt, trigger, NULL); fwrt 262 drivers/net/wireless/intel/iwlwifi/fw/dbg.h #define iwl_fw_dbg_trigger_simple_stop(fwrt, wdev, trig) \ fwrt 263 drivers/net/wireless/intel/iwlwifi/fw/dbg.h _iwl_fw_dbg_trigger_simple_stop((fwrt), (wdev), \ fwrt 264 drivers/net/wireless/intel/iwlwifi/fw/dbg.h iwl_fw_dbg_get_trigger((fwrt)->fw,\ fwrt 266 drivers/net/wireless/intel/iwlwifi/fw/dbg.h void iwl_fw_dbg_stop_restart_recording(struct iwl_fw_runtime *fwrt, fwrt 271 drivers/net/wireless/intel/iwlwifi/fw/dbg.h static inline void iwl_fw_set_dbg_rec_on(struct iwl_fw_runtime *fwrt) fwrt 273 drivers/net/wireless/intel/iwlwifi/fw/dbg.h if (fwrt->cur_fw_img == IWL_UCODE_REGULAR && fwrt 274 drivers/net/wireless/intel/iwlwifi/fw/dbg.h (fwrt->fw->dbg.dest_tlv || fwrt 275 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->trans->dbg.ini_dest != IWL_FW_INI_LOCATION_INVALID)) fwrt 276 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->trans->dbg.rec_on = true; fwrt 280 drivers/net/wireless/intel/iwlwifi/fw/dbg.h static inline void iwl_fw_dump_conf_clear(struct iwl_fw_runtime *fwrt) fwrt 282 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->dump.conf = FW_DBG_INVALID; fwrt 287 drivers/net/wireless/intel/iwlwifi/fw/dbg.h static inline bool iwl_fw_dbg_type_on(struct iwl_fw_runtime *fwrt, u32 type) fwrt 289 drivers/net/wireless/intel/iwlwifi/fw/dbg.h return (fwrt->fw->dbg.dump_mask & BIT(type)); fwrt 292 drivers/net/wireless/intel/iwlwifi/fw/dbg.h static inline bool iwl_fw_dbg_is_d3_debug_enabled(struct iwl_fw_runtime *fwrt) fwrt 294 drivers/net/wireless/intel/iwlwifi/fw/dbg.h return fw_has_capa(&fwrt->fw->ucode_capa, fwrt 296 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->trans->cfg->d3_debug_data_length && fwrt->ops && fwrt 297 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->ops->d3_debug_enable && fwrt 298 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->ops->d3_debug_enable(fwrt->ops_ctx) && fwrt 299 drivers/net/wireless/intel/iwlwifi/fw/dbg.h iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_D3_DEBUG_DATA); fwrt 302 drivers/net/wireless/intel/iwlwifi/fw/dbg.h static inline bool iwl_fw_dbg_is_paging_enabled(struct iwl_fw_runtime *fwrt) fwrt 304 drivers/net/wireless/intel/iwlwifi/fw/dbg.h return iwl_fw_dbg_type_on(fwrt, IWL_FW_ERROR_DUMP_PAGING) && fwrt 305 drivers/net/wireless/intel/iwlwifi/fw/dbg.h !fwrt->trans->trans_cfg->gen2 && fwrt 306 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->cur_fw_img < IWL_UCODE_TYPE_MAX && fwrt 307 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->fw->img[fwrt->cur_fw_img].paging_mem_size && fwrt 308 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->fw_paging_db[0].fw_paging_block; fwrt 311 drivers/net/wireless/intel/iwlwifi/fw/dbg.h void iwl_fw_dbg_read_d3_debug_data(struct iwl_fw_runtime *fwrt); fwrt 313 drivers/net/wireless/intel/iwlwifi/fw/dbg.h static inline void iwl_fw_flush_dumps(struct iwl_fw_runtime *fwrt) fwrt 317 drivers/net/wireless/intel/iwlwifi/fw/dbg.h iwl_dbg_tlv_del_timers(fwrt->trans); fwrt 319 drivers/net/wireless/intel/iwlwifi/fw/dbg.h flush_delayed_work(&fwrt->dump.wks[i].wk); fwrt 320 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->dump.wks[i].ini_trig_id = IWL_FW_TRIGGER_ID_INVALID; fwrt 325 drivers/net/wireless/intel/iwlwifi/fw/dbg.h static inline void iwl_fw_cancel_timestamp(struct iwl_fw_runtime *fwrt) fwrt 327 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->timestamp.delay = 0; fwrt 328 drivers/net/wireless/intel/iwlwifi/fw/dbg.h cancel_delayed_work_sync(&fwrt->timestamp.wk); fwrt 331 drivers/net/wireless/intel/iwlwifi/fw/dbg.h void iwl_fw_trigger_timestamp(struct iwl_fw_runtime *fwrt, u32 delay); fwrt 333 drivers/net/wireless/intel/iwlwifi/fw/dbg.h static inline void iwl_fw_suspend_timestamp(struct iwl_fw_runtime *fwrt) fwrt 335 drivers/net/wireless/intel/iwlwifi/fw/dbg.h cancel_delayed_work_sync(&fwrt->timestamp.wk); fwrt 338 drivers/net/wireless/intel/iwlwifi/fw/dbg.h static inline void iwl_fw_resume_timestamp(struct iwl_fw_runtime *fwrt) fwrt 340 drivers/net/wireless/intel/iwlwifi/fw/dbg.h if (!fwrt->timestamp.delay) fwrt 343 drivers/net/wireless/intel/iwlwifi/fw/dbg.h schedule_delayed_work(&fwrt->timestamp.wk, fwrt 344 drivers/net/wireless/intel/iwlwifi/fw/dbg.h round_jiffies_relative(fwrt->timestamp.delay)); fwrt 349 drivers/net/wireless/intel/iwlwifi/fw/dbg.h static inline void iwl_fw_cancel_timestamp(struct iwl_fw_runtime *fwrt) {} fwrt 351 drivers/net/wireless/intel/iwlwifi/fw/dbg.h static inline void iwl_fw_trigger_timestamp(struct iwl_fw_runtime *fwrt, fwrt 354 drivers/net/wireless/intel/iwlwifi/fw/dbg.h static inline void iwl_fw_suspend_timestamp(struct iwl_fw_runtime *fwrt) {} fwrt 356 drivers/net/wireless/intel/iwlwifi/fw/dbg.h static inline void iwl_fw_resume_timestamp(struct iwl_fw_runtime *fwrt) {} fwrt 360 drivers/net/wireless/intel/iwlwifi/fw/dbg.h void iwl_fw_dbg_stop_sync(struct iwl_fw_runtime *fwrt); fwrt 382 drivers/net/wireless/intel/iwlwifi/fw/dbg.h static inline void iwl_fw_error_collect(struct iwl_fw_runtime *fwrt) fwrt 384 drivers/net/wireless/intel/iwlwifi/fw/dbg.h if (iwl_trans_dbg_ini_valid(fwrt->trans) && fwrt->trans->dbg.hw_error) { fwrt 385 drivers/net/wireless/intel/iwlwifi/fw/dbg.h _iwl_fw_dbg_ini_collect(fwrt, IWL_FW_TRIGGER_ID_FW_HW_ERROR); fwrt 386 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->trans->dbg.hw_error = false; fwrt 388 drivers/net/wireless/intel/iwlwifi/fw/dbg.h iwl_fw_dbg_collect_desc(fwrt, &iwl_dump_desc_assert, false, 0); fwrt 392 drivers/net/wireless/intel/iwlwifi/fw/dbg.h void iwl_fw_error_print_fseq_regs(struct iwl_fw_runtime *fwrt); fwrt 394 drivers/net/wireless/intel/iwlwifi/fw/dbg.h static inline void iwl_fwrt_update_fw_versions(struct iwl_fw_runtime *fwrt, fwrt 399 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->dump.fw_ver.type = lmac->ver_type; fwrt 400 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->dump.fw_ver.subtype = lmac->ver_subtype; fwrt 401 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->dump.fw_ver.lmac_major = le32_to_cpu(lmac->ucode_major); fwrt 402 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->dump.fw_ver.lmac_minor = le32_to_cpu(lmac->ucode_minor); fwrt 406 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->dump.fw_ver.umac_major = le32_to_cpu(umac->umac_major); fwrt 407 drivers/net/wireless/intel/iwlwifi/fw/dbg.h fwrt->dump.fw_ver.umac_minor = le32_to_cpu(umac->umac_minor); fwrt 176 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c debugfs_create_file(alias, mode, parent, fwrt, \ fwrt 182 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c static int iwl_fw_send_timestamp_marker_cmd(struct iwl_fw_runtime *fwrt) fwrt 191 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c .timestamp = cpu_to_le64(fwrt->timestamp.seq++), fwrt 201 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c return iwl_trans_send_cmd(fwrt->trans, &hcmd); fwrt 207 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c struct iwl_fw_runtime *fwrt = fwrt 209 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c unsigned long delay = fwrt->timestamp.delay; fwrt 211 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c ret = iwl_fw_send_timestamp_marker_cmd(fwrt); fwrt 213 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c schedule_delayed_work(&fwrt->timestamp.wk, fwrt 216 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c IWL_INFO(fwrt, fwrt 221 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c void iwl_fw_trigger_timestamp(struct iwl_fw_runtime *fwrt, u32 delay) fwrt 223 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c IWL_INFO(fwrt, fwrt 227 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c iwl_fw_cancel_timestamp(fwrt); fwrt 229 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c fwrt->timestamp.delay = msecs_to_jiffies(delay * 1000); fwrt 231 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c schedule_delayed_work(&fwrt->timestamp.wk, fwrt 232 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c round_jiffies_relative(fwrt->timestamp.delay)); fwrt 235 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c static ssize_t iwl_dbgfs_timestamp_marker_write(struct iwl_fw_runtime *fwrt, fwrt 245 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c iwl_fw_trigger_timestamp(fwrt, delay); fwrt 250 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c static ssize_t iwl_dbgfs_timestamp_marker_read(struct iwl_fw_runtime *fwrt, fwrt 253 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c u32 delay_secs = jiffies_to_msecs(fwrt->timestamp.delay) / 1000; fwrt 267 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c static ssize_t iwl_dbgfs_send_hcmd_write(struct iwl_fw_runtime *fwrt, char *buf, fwrt 279 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c if (fwrt->ops && fwrt->ops->fw_running && fwrt 280 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c !fwrt->ops->fw_running(fwrt->ops_ctx)) fwrt 300 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c IWL_ERR(fwrt, fwrt 306 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c if (fwrt->ops && fwrt->ops->send_hcmd) fwrt 307 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c ret = fwrt->ops->send_hcmd(fwrt->ops_ctx, &hcmd); fwrt 323 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c void iwl_fwrt_dbgfs_register(struct iwl_fw_runtime *fwrt, fwrt 326 drivers/net/wireless/intel/iwlwifi/fw/debugfs.c INIT_DELAYED_WORK(&fwrt->timestamp.wk, iwl_fw_timestamp_marker_wk); fwrt 66 drivers/net/wireless/intel/iwlwifi/fw/debugfs.h void iwl_fwrt_dbgfs_register(struct iwl_fw_runtime *fwrt, fwrt 70 drivers/net/wireless/intel/iwlwifi/fw/debugfs.h static inline void iwl_fwrt_dbgfs_register(struct iwl_fw_runtime *fwrt, fwrt 65 drivers/net/wireless/intel/iwlwifi/fw/init.c void iwl_fw_runtime_init(struct iwl_fw_runtime *fwrt, struct iwl_trans *trans, fwrt 72 drivers/net/wireless/intel/iwlwifi/fw/init.c memset(fwrt, 0, sizeof(*fwrt)); fwrt 73 drivers/net/wireless/intel/iwlwifi/fw/init.c fwrt->trans = trans; fwrt 74 drivers/net/wireless/intel/iwlwifi/fw/init.c fwrt->fw = fw; fwrt 75 drivers/net/wireless/intel/iwlwifi/fw/init.c fwrt->dev = trans->dev; fwrt 76 drivers/net/wireless/intel/iwlwifi/fw/init.c fwrt->dump.conf = FW_DBG_INVALID; fwrt 77 drivers/net/wireless/intel/iwlwifi/fw/init.c fwrt->ops = ops; fwrt 78 drivers/net/wireless/intel/iwlwifi/fw/init.c fwrt->ops_ctx = ops_ctx; fwrt 80 drivers/net/wireless/intel/iwlwifi/fw/init.c fwrt->dump.wks[i].idx = i; fwrt 81 drivers/net/wireless/intel/iwlwifi/fw/init.c INIT_DELAYED_WORK(&fwrt->dump.wks[i].wk, iwl_fw_error_dump_wk); fwrt 83 drivers/net/wireless/intel/iwlwifi/fw/init.c iwl_fwrt_dbgfs_register(fwrt, dbgfs_dir); fwrt 87 drivers/net/wireless/intel/iwlwifi/fw/init.c void iwl_fw_runtime_suspend(struct iwl_fw_runtime *fwrt) fwrt 89 drivers/net/wireless/intel/iwlwifi/fw/init.c iwl_fw_suspend_timestamp(fwrt); fwrt 93 drivers/net/wireless/intel/iwlwifi/fw/init.c void iwl_fw_runtime_resume(struct iwl_fw_runtime *fwrt) fwrt 95 drivers/net/wireless/intel/iwlwifi/fw/init.c iwl_fw_resume_timestamp(fwrt); fwrt 68 drivers/net/wireless/intel/iwlwifi/fw/paging.c void iwl_free_fw_paging(struct iwl_fw_runtime *fwrt) fwrt 72 drivers/net/wireless/intel/iwlwifi/fw/paging.c if (!fwrt->fw_paging_db[0].fw_paging_block) fwrt 76 drivers/net/wireless/intel/iwlwifi/fw/paging.c struct iwl_fw_paging *paging = &fwrt->fw_paging_db[i]; fwrt 79 drivers/net/wireless/intel/iwlwifi/fw/paging.c IWL_DEBUG_FW(fwrt, fwrt 85 drivers/net/wireless/intel/iwlwifi/fw/paging.c dma_unmap_page(fwrt->trans->dev, paging->fw_paging_phys, fwrt 93 drivers/net/wireless/intel/iwlwifi/fw/paging.c memset(fwrt->fw_paging_db, 0, sizeof(fwrt->fw_paging_db)); fwrt 97 drivers/net/wireless/intel/iwlwifi/fw/paging.c static int iwl_alloc_fw_paging_mem(struct iwl_fw_runtime *fwrt, fwrt 104 drivers/net/wireless/intel/iwlwifi/fw/paging.c if (fwrt->fw_paging_db[0].fw_paging_block) fwrt 111 drivers/net/wireless/intel/iwlwifi/fw/paging.c fwrt->num_of_paging_blk = fwrt 113 drivers/net/wireless/intel/iwlwifi/fw/paging.c fwrt->num_of_pages_in_last_blk = fwrt 115 drivers/net/wireless/intel/iwlwifi/fw/paging.c NUM_OF_PAGE_PER_GROUP * (fwrt->num_of_paging_blk - 1); fwrt 117 drivers/net/wireless/intel/iwlwifi/fw/paging.c IWL_DEBUG_FW(fwrt, fwrt 119 drivers/net/wireless/intel/iwlwifi/fw/paging.c fwrt->num_of_paging_blk, fwrt 120 drivers/net/wireless/intel/iwlwifi/fw/paging.c fwrt->num_of_pages_in_last_blk); fwrt 125 drivers/net/wireless/intel/iwlwifi/fw/paging.c for (blk_idx = 0; blk_idx < fwrt->num_of_paging_blk + 1; blk_idx++) { fwrt 132 drivers/net/wireless/intel/iwlwifi/fw/paging.c iwl_free_fw_paging(fwrt); fwrt 136 drivers/net/wireless/intel/iwlwifi/fw/paging.c fwrt->fw_paging_db[blk_idx].fw_paging_block = block; fwrt 137 drivers/net/wireless/intel/iwlwifi/fw/paging.c fwrt->fw_paging_db[blk_idx].fw_paging_size = size; fwrt 139 drivers/net/wireless/intel/iwlwifi/fw/paging.c phys = dma_map_page(fwrt->trans->dev, block, 0, fwrt 142 drivers/net/wireless/intel/iwlwifi/fw/paging.c if (dma_mapping_error(fwrt->trans->dev, phys)) { fwrt 147 drivers/net/wireless/intel/iwlwifi/fw/paging.c iwl_free_fw_paging(fwrt); fwrt 150 drivers/net/wireless/intel/iwlwifi/fw/paging.c fwrt->fw_paging_db[blk_idx].fw_paging_phys = phys; fwrt 153 drivers/net/wireless/intel/iwlwifi/fw/paging.c IWL_DEBUG_FW(fwrt, fwrt 157 drivers/net/wireless/intel/iwlwifi/fw/paging.c IWL_DEBUG_FW(fwrt, fwrt 165 drivers/net/wireless/intel/iwlwifi/fw/paging.c static int iwl_fill_paging_mem(struct iwl_fw_runtime *fwrt, fwrt 194 drivers/net/wireless/intel/iwlwifi/fw/paging.c IWL_ERR(fwrt, "Paging: Missing CSS and/or paging sections\n"); fwrt 200 drivers/net/wireless/intel/iwlwifi/fw/paging.c IWL_DEBUG_FW(fwrt, "Paging: load paging CSS to FW, sec = %d\n", fwrt 203 drivers/net/wireless/intel/iwlwifi/fw/paging.c if (image->sec[sec_idx].len > fwrt->fw_paging_db[0].fw_paging_size) { fwrt 204 drivers/net/wireless/intel/iwlwifi/fw/paging.c IWL_ERR(fwrt, "CSS block is larger than paging size\n"); fwrt 209 drivers/net/wireless/intel/iwlwifi/fw/paging.c memcpy(page_address(fwrt->fw_paging_db[0].fw_paging_block), fwrt 212 drivers/net/wireless/intel/iwlwifi/fw/paging.c dma_sync_single_for_device(fwrt->trans->dev, fwrt 213 drivers/net/wireless/intel/iwlwifi/fw/paging.c fwrt->fw_paging_db[0].fw_paging_phys, fwrt 214 drivers/net/wireless/intel/iwlwifi/fw/paging.c fwrt->fw_paging_db[0].fw_paging_size, fwrt 217 drivers/net/wireless/intel/iwlwifi/fw/paging.c IWL_DEBUG_FW(fwrt, fwrt 219 drivers/net/wireless/intel/iwlwifi/fw/paging.c fwrt->fw_paging_db[0].fw_paging_size); fwrt 228 drivers/net/wireless/intel/iwlwifi/fw/paging.c for (idx = 1; idx < fwrt->num_of_paging_blk + 1; idx++) { fwrt 229 drivers/net/wireless/intel/iwlwifi/fw/paging.c struct iwl_fw_paging *block = &fwrt->fw_paging_db[idx]; fwrt 237 drivers/net/wireless/intel/iwlwifi/fw/paging.c if (idx == fwrt->num_of_paging_blk) { fwrt 240 drivers/net/wireless/intel/iwlwifi/fw/paging.c fwrt->num_of_pages_in_last_blk * FW_PAGING_SIZE) { fwrt 241 drivers/net/wireless/intel/iwlwifi/fw/paging.c IWL_ERR(fwrt, fwrt 248 drivers/net/wireless/intel/iwlwifi/fw/paging.c IWL_ERR(fwrt, fwrt 257 drivers/net/wireless/intel/iwlwifi/fw/paging.c dma_sync_single_for_device(fwrt->trans->dev, fwrt 262 drivers/net/wireless/intel/iwlwifi/fw/paging.c IWL_DEBUG_FW(fwrt, fwrt 272 drivers/net/wireless/intel/iwlwifi/fw/paging.c iwl_free_fw_paging(fwrt); fwrt 276 drivers/net/wireless/intel/iwlwifi/fw/paging.c static int iwl_save_fw_paging(struct iwl_fw_runtime *fwrt, fwrt 281 drivers/net/wireless/intel/iwlwifi/fw/paging.c ret = iwl_alloc_fw_paging_mem(fwrt, fw); fwrt 285 drivers/net/wireless/intel/iwlwifi/fw/paging.c return iwl_fill_paging_mem(fwrt, fw); fwrt 289 drivers/net/wireless/intel/iwlwifi/fw/paging.c static int iwl_send_paging_cmd(struct iwl_fw_runtime *fwrt, fwrt 295 drivers/net/wireless/intel/iwlwifi/fw/paging.c (fwrt->num_of_pages_in_last_blk << fwrt 298 drivers/net/wireless/intel/iwlwifi/fw/paging.c .block_num = cpu_to_le32(fwrt->num_of_paging_blk), fwrt 308 drivers/net/wireless/intel/iwlwifi/fw/paging.c for (blk_idx = 0; blk_idx < fwrt->num_of_paging_blk + 1; blk_idx++) { fwrt 309 drivers/net/wireless/intel/iwlwifi/fw/paging.c dma_addr_t addr = fwrt->fw_paging_db[blk_idx].fw_paging_phys; fwrt 317 drivers/net/wireless/intel/iwlwifi/fw/paging.c return iwl_trans_send_cmd(fwrt->trans, &hcmd); fwrt 320 drivers/net/wireless/intel/iwlwifi/fw/paging.c int iwl_init_paging(struct iwl_fw_runtime *fwrt, enum iwl_ucode_type type) fwrt 322 drivers/net/wireless/intel/iwlwifi/fw/paging.c const struct fw_img *fw = &fwrt->fw->img[type]; fwrt 325 drivers/net/wireless/intel/iwlwifi/fw/paging.c if (fwrt->trans->trans_cfg->gen2) fwrt 336 drivers/net/wireless/intel/iwlwifi/fw/paging.c ret = iwl_save_fw_paging(fwrt, fw); fwrt 338 drivers/net/wireless/intel/iwlwifi/fw/paging.c IWL_ERR(fwrt, "failed to save the FW paging image\n"); fwrt 342 drivers/net/wireless/intel/iwlwifi/fw/paging.c ret = iwl_send_paging_cmd(fwrt, fw); fwrt 344 drivers/net/wireless/intel/iwlwifi/fw/paging.c IWL_ERR(fwrt, "failed to send the paging cmd\n"); fwrt 345 drivers/net/wireless/intel/iwlwifi/fw/paging.c iwl_free_fw_paging(fwrt); fwrt 185 drivers/net/wireless/intel/iwlwifi/fw/runtime.h void iwl_fw_runtime_init(struct iwl_fw_runtime *fwrt, struct iwl_trans *trans, fwrt 190 drivers/net/wireless/intel/iwlwifi/fw/runtime.h static inline void iwl_fw_runtime_free(struct iwl_fw_runtime *fwrt) fwrt 194 drivers/net/wireless/intel/iwlwifi/fw/runtime.h kfree(fwrt->dump.d3_debug_data); fwrt 195 drivers/net/wireless/intel/iwlwifi/fw/runtime.h fwrt->dump.d3_debug_data = NULL; fwrt 199 drivers/net/wireless/intel/iwlwifi/fw/runtime.h &fwrt->dump.active_trigs[i]; fwrt 207 drivers/net/wireless/intel/iwlwifi/fw/runtime.h iwl_dbg_tlv_del_timers(fwrt->trans); fwrt 209 drivers/net/wireless/intel/iwlwifi/fw/runtime.h cancel_delayed_work_sync(&fwrt->dump.wks[i].wk); fwrt 212 drivers/net/wireless/intel/iwlwifi/fw/runtime.h void iwl_fw_runtime_suspend(struct iwl_fw_runtime *fwrt); fwrt 214 drivers/net/wireless/intel/iwlwifi/fw/runtime.h void iwl_fw_runtime_resume(struct iwl_fw_runtime *fwrt); fwrt 216 drivers/net/wireless/intel/iwlwifi/fw/runtime.h static inline void iwl_fw_set_current_image(struct iwl_fw_runtime *fwrt, fwrt 219 drivers/net/wireless/intel/iwlwifi/fw/runtime.h fwrt->cur_fw_img = cur_fw_img; fwrt 222 drivers/net/wireless/intel/iwlwifi/fw/runtime.h int iwl_init_paging(struct iwl_fw_runtime *fwrt, enum iwl_ucode_type type); fwrt 223 drivers/net/wireless/intel/iwlwifi/fw/runtime.h void iwl_free_fw_paging(struct iwl_fw_runtime *fwrt); fwrt 225 drivers/net/wireless/intel/iwlwifi/fw/runtime.h void iwl_get_shared_mem_conf(struct iwl_fw_runtime *fwrt); fwrt 68 drivers/net/wireless/intel/iwlwifi/fw/smem.c static void iwl_parse_shared_mem_22000(struct iwl_fw_runtime *fwrt, fwrt 78 drivers/net/wireless/intel/iwlwifi/fw/smem.c fwrt->smem_cfg.num_lmacs = lmac_num; fwrt 79 drivers/net/wireless/intel/iwlwifi/fw/smem.c fwrt->smem_cfg.num_txfifo_entries = fwrt 81 drivers/net/wireless/intel/iwlwifi/fw/smem.c fwrt->smem_cfg.rxfifo2_size = le32_to_cpu(mem_cfg->rxfifo2_size); fwrt 88 drivers/net/wireless/intel/iwlwifi/fw/smem.c fwrt->smem_cfg.lmac[lmac].txfifo_size[i] = fwrt 90 drivers/net/wireless/intel/iwlwifi/fw/smem.c fwrt->smem_cfg.lmac[lmac].rxfifo1_size = fwrt 95 drivers/net/wireless/intel/iwlwifi/fw/smem.c static void iwl_parse_shared_mem(struct iwl_fw_runtime *fwrt, fwrt 101 drivers/net/wireless/intel/iwlwifi/fw/smem.c fwrt->smem_cfg.num_lmacs = 1; fwrt 103 drivers/net/wireless/intel/iwlwifi/fw/smem.c fwrt->smem_cfg.num_txfifo_entries = ARRAY_SIZE(mem_cfg->txfifo_size); fwrt 105 drivers/net/wireless/intel/iwlwifi/fw/smem.c fwrt->smem_cfg.lmac[0].txfifo_size[i] = fwrt 108 drivers/net/wireless/intel/iwlwifi/fw/smem.c fwrt->smem_cfg.lmac[0].rxfifo1_size = fwrt 110 drivers/net/wireless/intel/iwlwifi/fw/smem.c fwrt->smem_cfg.rxfifo2_size = le32_to_cpu(mem_cfg->rxfifo_size[1]); fwrt 113 drivers/net/wireless/intel/iwlwifi/fw/smem.c if (fw_has_capa(&fwrt->fw->ucode_capa, fwrt 115 drivers/net/wireless/intel/iwlwifi/fw/smem.c BUILD_BUG_ON(sizeof(fwrt->smem_cfg.internal_txfifo_size) != fwrt 118 drivers/net/wireless/intel/iwlwifi/fw/smem.c fwrt->smem_cfg.internal_txfifo_addr = fwrt 122 drivers/net/wireless/intel/iwlwifi/fw/smem.c i < ARRAY_SIZE(fwrt->smem_cfg.internal_txfifo_size); fwrt 124 drivers/net/wireless/intel/iwlwifi/fw/smem.c fwrt->smem_cfg.internal_txfifo_size[i] = fwrt 129 drivers/net/wireless/intel/iwlwifi/fw/smem.c void iwl_get_shared_mem_conf(struct iwl_fw_runtime *fwrt) fwrt 139 drivers/net/wireless/intel/iwlwifi/fw/smem.c if (fw_has_capa(&fwrt->fw->ucode_capa, fwrt 145 drivers/net/wireless/intel/iwlwifi/fw/smem.c ret = iwl_trans_send_cmd(fwrt->trans, &cmd); fwrt 154 drivers/net/wireless/intel/iwlwifi/fw/smem.c if (fwrt->trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_22000) fwrt 155 drivers/net/wireless/intel/iwlwifi/fw/smem.c iwl_parse_shared_mem_22000(fwrt, pkt); fwrt 157 drivers/net/wireless/intel/iwlwifi/fw/smem.c iwl_parse_shared_mem(fwrt, pkt); fwrt 159 drivers/net/wireless/intel/iwlwifi/fw/smem.c IWL_DEBUG_INFO(fwrt, "SHARED MEM CFG: got memory offsets/sizes\n"); fwrt 208 drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.c void iwl_dbg_tlv_time_point(struct iwl_fw_runtime *fwrt, fwrt 92 drivers/net/wireless/intel/iwlwifi/iwl-dbg-tlv.h void iwl_dbg_tlv_time_point(struct iwl_fw_runtime *fwrt, fwrt 1058 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_fw_dbg_stop_restart_recording(&mvm->fwrt, NULL, true); fwrt 1101 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_fw_runtime_suspend(&mvm->fwrt); fwrt 1937 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_fw_dbg_read_d3_debug_data(&mvm->fwrt); fwrt 1942 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_fw_dbg_collect_desc(&mvm->fwrt, &iwl_dump_desc_assert, fwrt 2053 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_fw_runtime_resume(&mvm->fwrt); fwrt 2082 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_fw_runtime_suspend(&mvm->fwrt); fwrt 2139 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_fw_dbg_read_d3_debug_data(&mvm->fwrt); fwrt 2147 drivers/net/wireless/intel/iwlwifi/mvm/d3.c iwl_fw_runtime_resume(&mvm->fwrt); fwrt 87 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) fwrt 111 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) fwrt 125 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) fwrt 140 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) fwrt 173 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) fwrt 210 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c img = &mvm->fw->img[mvm->fwrt.cur_fw_img]; fwrt 242 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c img = &mvm->fw->img[mvm->fwrt.cur_fw_img]; fwrt 752 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->fwrt.fw->human_readable); fwrt 754 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->fwrt.trans->cfg->name); fwrt 756 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c mvm->fwrt.dev->bus->name); fwrt 1339 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c conf = mvm->fwrt.dump.conf; fwrt 1365 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c ret = iwl_fw_start_dbg_conf(&mvm->fwrt, conf_id); fwrt 1378 drivers/net/wireless/intel/iwlwifi/mvm/debugfs.c iwl_fw_dbg_collect(&mvm->fwrt, FW_DBG_TRIGGER_USER, buf, fwrt 255 drivers/net/wireless/intel/iwlwifi/mvm/fw.c (mvm->fwrt.cur_fw_img == IWL_UCODE_INIT) ? fwrt 279 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fwrt_update_fw_versions(&mvm->fwrt, lmac1, umac); fwrt 314 drivers/net/wireless/intel/iwlwifi/mvm/fw.c enum iwl_ucode_type old_type = mvm->fwrt.cur_fw_img; fwrt 328 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_set_current_image(&mvm->fwrt, ucode_type); fwrt 342 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_set_current_image(&mvm->fwrt, old_type); fwrt 357 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_dbg_error_collect(&mvm->fwrt, fwrt 372 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_set_current_image(&mvm->fwrt, old_type); fwrt 378 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_set_current_image(&mvm->fwrt, old_type); fwrt 405 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_set_dbg_rec_on(&mvm->fwrt); fwrt 437 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_dbg_tlv_time_point(&mvm->fwrt, IWL_FW_INI_TIME_POINT_EARLY, NULL); fwrt 445 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_dbg_tlv_time_point(&mvm->fwrt, IWL_FW_INI_TIME_POINT_AFTER_ALIVE, fwrt 515 drivers/net/wireless/intel/iwlwifi/mvm/fw.c enum iwl_ucode_type ucode_type = mvm->fwrt.cur_fw_img; fwrt 1293 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_dbg_stop_sync(&mvm->fwrt); fwrt 1299 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_dbg_tlv_time_point(&mvm->fwrt, IWL_FW_INI_TIME_POINT_EARLY, NULL); fwrt 1308 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_dbg_tlv_time_point(&mvm->fwrt, IWL_FW_INI_TIME_POINT_AFTER_ALIVE, fwrt 1311 drivers/net/wireless/intel/iwlwifi/mvm/fw.c return iwl_init_paging(&mvm->fwrt, mvm->fwrt.cur_fw_img); fwrt 1331 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_dbg_error_collect(&mvm->fwrt, fwrt 1336 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_get_shared_mem_conf(&mvm->fwrt); fwrt 1343 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->fwrt.dump.conf = FW_DBG_INVALID; fwrt 1346 drivers/net/wireless/intel/iwlwifi/mvm/fw.c mvm->fwrt.dump.conf = FW_DBG_START_FROM_ALIVE; fwrt 1347 drivers/net/wireless/intel/iwlwifi/mvm/fw.c iwl_fw_start_dbg_conf(&mvm->fwrt, FW_DBG_START_FROM_ALIVE); fwrt 1434 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_dbg_tlv_time_point(&mvm->fwrt, fwrt 1437 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c trigger = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), fwrt 1451 drivers/net/wireless/intel/iwlwifi/mvm/mac-ctxt.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trigger, NULL); fwrt 905 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_fw_dbg_collect_trig(&(_mvm)->fwrt, _trig, _fmt); \ fwrt 916 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), fwrt 1087 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c mvm->fwrt.dump.conf = FW_DBG_INVALID; fwrt 1112 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_dbg_tlv_time_point(&mvm->fwrt, IWL_FW_INI_TIME_POINT_POST_INIT, fwrt 1114 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_dbg_tlv_time_point(&mvm->fwrt, IWL_FW_INI_TIME_POINT_PERIODIC, fwrt 1251 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_fw_free_dump_desc(&mvm->fwrt); fwrt 2946 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), fwrt 2960 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, fwrt 4487 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_fw_dbg_trigger_simple_stop(&mvm->fwrt, fwrt 4792 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_fw_dbg_collect_trig(&(mvm)->fwrt, trig, _fmt); \ fwrt 4798 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), fwrt 4838 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), fwrt 4848 drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, fwrt 893 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h struct iwl_fw_runtime fwrt; fwrt 1949 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_fw_cancel_timestamp(&mvm->fwrt); fwrt 1951 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_fw_dbg_stop_sync(&mvm->fwrt); fwrt 1953 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_free_fw_paging(&mvm->fwrt); fwrt 1954 drivers/net/wireless/intel/iwlwifi/mvm/mvm.h iwl_fw_dump_conf_clear(&mvm->fwrt); fwrt 179 drivers/net/wireless/intel/iwlwifi/mvm/ops.c if (iwl_fw_dbg_is_d3_debug_enabled(&mvm->fwrt)) fwrt 661 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_runtime_init(&mvm->fwrt, trans, fw, &iwl_mvm_fwrt_ops, mvm, fwrt 691 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_set_current_image(&mvm->fwrt, IWL_UCODE_REGULAR); fwrt 693 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_set_current_image(&mvm->fwrt, IWL_UCODE_INIT); fwrt 820 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_dbg_error_collect(&mvm->fwrt, FW_DBG_TRIGGER_DRIVER); fwrt 859 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_flush_dumps(&mvm->fwrt); fwrt 860 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_runtime_free(&mvm->fwrt); fwrt 901 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_runtime_free(&mvm->fwrt); fwrt 963 drivers/net/wireless/intel/iwlwifi/mvm/ops.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, NULL, fwrt 979 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, fwrt 993 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_dbg_tlv_time_point(&mvm->fwrt, fwrt 1263 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_error_collect(&mvm->fwrt); fwrt 1291 drivers/net/wireless/intel/iwlwifi/mvm/ops.c } else if (mvm->fwrt.cur_fw_img == IWL_UCODE_REGULAR && fwrt 1308 drivers/net/wireless/intel/iwlwifi/mvm/ops.c iwl_fw_error_collect(&mvm->fwrt); fwrt 201 drivers/net/wireless/intel/iwlwifi/mvm/power.c if (mvm->fwrt.cur_fw_img != IWL_UCODE_WOWLAN) fwrt 236 drivers/net/wireless/intel/iwlwifi/mvm/power.c (mvm->fwrt.cur_fw_img == IWL_UCODE_WOWLAN) ? fwrt 243 drivers/net/wireless/intel/iwlwifi/mvm/power.c if (mvm->fwrt.cur_fw_img == IWL_UCODE_WOWLAN || cmd->flags & fwrt 518 drivers/net/wireless/intel/iwlwifi/mvm/power.c mvm->fwrt.cur_fw_img != IWL_UCODE_WOWLAN); fwrt 541 drivers/net/wireless/intel/iwlwifi/mvm/power.c if ((mvm->fwrt.cur_fw_img == IWL_UCODE_WOWLAN) ? fwrt 948 drivers/net/wireless/intel/iwlwifi/mvm/power.c if (mvm->fwrt.cur_fw_img == IWL_UCODE_WOWLAN) fwrt 457 drivers/net/wireless/intel/iwlwifi/mvm/rx.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, fwrt 469 drivers/net/wireless/intel/iwlwifi/mvm/rx.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, fwrt 686 drivers/net/wireless/intel/iwlwifi/mvm/rx.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, NULL, FW_DBG_TRIGGER_STATS); fwrt 701 drivers/net/wireless/intel/iwlwifi/mvm/rx.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, NULL); fwrt 1763 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, fwrt 1775 drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, fwrt 256 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, fwrt 276 drivers/net/wireless/intel/iwlwifi/mvm/time-event.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, fwrt 625 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) { fwrt 676 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) { fwrt 793 drivers/net/wireless/intel/iwlwifi/mvm/tt.c mvm->fwrt.cur_fw_img != IWL_UCODE_REGULAR) { fwrt 82 drivers/net/wireless/intel/iwlwifi/mvm/tx.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, NULL, FW_DBG_TRIGGER_BA); fwrt 91 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, fwrt 812 drivers/net/wireless/intel/iwlwifi/mvm/tx.c mvm->fwrt.smem_cfg.lmac[lmac].txfifo_size[txf] - 256); fwrt 1399 drivers/net/wireless/intel/iwlwifi/mvm/tx.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, NULL, fwrt 1414 drivers/net/wireless/intel/iwlwifi/mvm/tx.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, fwrt 476 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->fwrt.dump.umac_err_id = table.error_id; fwrt 507 drivers/net/wireless/intel/iwlwifi/mvm/utils.c if (mvm->fwrt.cur_fw_img == IWL_UCODE_INIT) { fwrt 519 drivers/net/wireless/intel/iwlwifi/mvm/utils.c (mvm->fwrt.cur_fw_img == IWL_UCODE_INIT) fwrt 542 drivers/net/wireless/intel/iwlwifi/mvm/utils.c mvm->fwrt.dump.lmac_err_id[lmac_num] = table.error_id; fwrt 606 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_fw_error_print_fseq_regs(&mvm->fwrt); fwrt 998 drivers/net/wireless/intel/iwlwifi/mvm/utils.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), fwrt 1009 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig, "%s", errmsg); fwrt 1023 drivers/net/wireless/intel/iwlwifi/mvm/utils.c trig = iwl_fw_dbg_trigger_on(&mvm->fwrt, ieee80211_vif_to_wdev(vif), fwrt 1033 drivers/net/wireless/intel/iwlwifi/mvm/utils.c iwl_fw_dbg_collect_trig(&mvm->fwrt, trig,