1bfcc09ddSBjoern A. Zeeb /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ 2bfcc09ddSBjoern A. Zeeb /* 3*a4128aadSBjoern A. Zeeb * Copyright (C) 2018-2024 Intel Corporation 4bfcc09ddSBjoern A. Zeeb */ 5bfcc09ddSBjoern A. Zeeb #ifndef __iwl_fw_dbg_tlv_h__ 6bfcc09ddSBjoern A. Zeeb #define __iwl_fw_dbg_tlv_h__ 7bfcc09ddSBjoern A. Zeeb 8bfcc09ddSBjoern A. Zeeb #include <linux/bitops.h> 9bfcc09ddSBjoern A. Zeeb 10bfcc09ddSBjoern A. Zeeb #define IWL_FW_INI_MAX_REGION_ID 64 11bfcc09ddSBjoern A. Zeeb #define IWL_FW_INI_MAX_NAME 32 12bfcc09ddSBjoern A. Zeeb #define IWL_FW_INI_MAX_CFG_NAME 64 13bfcc09ddSBjoern A. Zeeb #define IWL_FW_INI_DOMAIN_ALWAYS_ON 0 14d9836fb4SBjoern A. Zeeb #define IWL_FW_INI_REGION_ID_MASK GENMASK(15, 0) 15d9836fb4SBjoern A. Zeeb #define IWL_FW_INI_REGION_DUMP_POLICY_MASK GENMASK(31, 16) 16*a4128aadSBjoern A. Zeeb #define IWL_FW_INI_PRESET_DISABLE 0xff 17bfcc09ddSBjoern A. Zeeb 18bfcc09ddSBjoern A. Zeeb /** 19bfcc09ddSBjoern A. Zeeb * struct iwl_fw_ini_hcmd 20bfcc09ddSBjoern A. Zeeb * 21bfcc09ddSBjoern A. Zeeb * @id: the debug configuration command type for instance: 0xf6 / 0xf5 / DHC 22bfcc09ddSBjoern A. Zeeb * @group: the desired cmd group 23bfcc09ddSBjoern A. Zeeb * @reserved: to align to FW struct 24bfcc09ddSBjoern A. Zeeb * @data: all of the relevant command data to be sent 25bfcc09ddSBjoern A. Zeeb */ 26bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_hcmd { 27bfcc09ddSBjoern A. Zeeb u8 id; 28bfcc09ddSBjoern A. Zeeb u8 group; 29bfcc09ddSBjoern A. Zeeb __le16 reserved; 309af1bba4SBjoern A. Zeeb u8 data[]; 31bfcc09ddSBjoern A. Zeeb } __packed; /* FW_DEBUG_TLV_HCMD_DATA_API_S_VER_1 */ 32bfcc09ddSBjoern A. Zeeb 33bfcc09ddSBjoern A. Zeeb /** 34bfcc09ddSBjoern A. Zeeb * struct iwl_fw_ini_header - Common Header for all ini debug TLV's structures 35bfcc09ddSBjoern A. Zeeb * 36bfcc09ddSBjoern A. Zeeb * @version: TLV version 37bfcc09ddSBjoern A. Zeeb * @domain: domain of the TLV. One of &enum iwl_fw_ini_dbg_domain 38bfcc09ddSBjoern A. Zeeb */ 39bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_header { 40bfcc09ddSBjoern A. Zeeb __le32 version; 41bfcc09ddSBjoern A. Zeeb __le32 domain; 42bfcc09ddSBjoern A. Zeeb /* followed by the data */ 43bfcc09ddSBjoern A. Zeeb } __packed; /* FW_TLV_DEBUG_HEADER_S_VER_1 */ 44bfcc09ddSBjoern A. Zeeb 45bfcc09ddSBjoern A. Zeeb /** 46*a4128aadSBjoern A. Zeeb * struct iwl_fw_ini_addr_size - Base address and size that defines 47*a4128aadSBjoern A. Zeeb * a chunk of memory 48*a4128aadSBjoern A. Zeeb * 49*a4128aadSBjoern A. Zeeb * @addr: the base address (fixed size - 4 bytes) 50*a4128aadSBjoern A. Zeeb * @size: the size to read 51*a4128aadSBjoern A. Zeeb */ 52*a4128aadSBjoern A. Zeeb struct iwl_fw_ini_addr_size { 53*a4128aadSBjoern A. Zeeb __le32 addr; 54*a4128aadSBjoern A. Zeeb __le32 size; 55*a4128aadSBjoern A. Zeeb } __packed; /* FW_TLV_DEBUG_ADDR_SIZE_VER_1 */ 56*a4128aadSBjoern A. Zeeb 57*a4128aadSBjoern A. Zeeb /** 58*a4128aadSBjoern A. Zeeb * struct iwl_fw_ini_region_dev_addr_range - Configuration to read 59*a4128aadSBjoern A. Zeeb * device address range 60*a4128aadSBjoern A. Zeeb * 61*a4128aadSBjoern A. Zeeb * @offset: offset to add to the base address of each chunk 62*a4128aadSBjoern A. Zeeb * The addrs[] array will be treated as an array of &iwl_fw_ini_addr_size - 63*a4128aadSBjoern A. Zeeb * an array of (addr, size) pairs. 64*a4128aadSBjoern A. Zeeb */ 65*a4128aadSBjoern A. Zeeb struct iwl_fw_ini_region_dev_addr_range { 66*a4128aadSBjoern A. Zeeb __le32 offset; 67*a4128aadSBjoern A. Zeeb } __packed; /* FW_TLV_DEBUG_DEVICE_ADDR_RANGE_API_S_VER_1 */ 68*a4128aadSBjoern A. Zeeb 69*a4128aadSBjoern A. Zeeb /** 70bfcc09ddSBjoern A. Zeeb * struct iwl_fw_ini_region_dev_addr - Configuration to read device addresses 71bfcc09ddSBjoern A. Zeeb * 72bfcc09ddSBjoern A. Zeeb * @size: size of each memory chunk 73bfcc09ddSBjoern A. Zeeb * @offset: offset to add to the base address of each chunk 74bfcc09ddSBjoern A. Zeeb */ 75bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_region_dev_addr { 76bfcc09ddSBjoern A. Zeeb __le32 size; 77bfcc09ddSBjoern A. Zeeb __le32 offset; 78bfcc09ddSBjoern A. Zeeb } __packed; /* FW_TLV_DEBUG_DEVICE_ADDR_API_S_VER_1 */ 79bfcc09ddSBjoern A. Zeeb 80bfcc09ddSBjoern A. Zeeb /** 81bfcc09ddSBjoern A. Zeeb * struct iwl_fw_ini_region_fifos - Configuration to read Tx/Rx fifos 82bfcc09ddSBjoern A. Zeeb * 83bfcc09ddSBjoern A. Zeeb * @fid: fifos ids array. Used to determine what fifos to collect 84bfcc09ddSBjoern A. Zeeb * @hdr_only: if non zero, collect only the registers 85bfcc09ddSBjoern A. Zeeb * @offset: offset to add to the registers addresses 86bfcc09ddSBjoern A. Zeeb */ 87bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_region_fifos { 88bfcc09ddSBjoern A. Zeeb __le32 fid[2]; 89bfcc09ddSBjoern A. Zeeb __le32 hdr_only; 90bfcc09ddSBjoern A. Zeeb __le32 offset; 91bfcc09ddSBjoern A. Zeeb } __packed; /* FW_TLV_DEBUG_REGION_FIFOS_API_S_VER_1 */ 92bfcc09ddSBjoern A. Zeeb 93bfcc09ddSBjoern A. Zeeb /** 94bfcc09ddSBjoern A. Zeeb * struct iwl_fw_ini_region_err_table - error table region data 95bfcc09ddSBjoern A. Zeeb * 96bfcc09ddSBjoern A. Zeeb * Configuration to read Umac/Lmac error table 97bfcc09ddSBjoern A. Zeeb * 98bfcc09ddSBjoern A. Zeeb * @version: version of the error table 99bfcc09ddSBjoern A. Zeeb * @base_addr: base address of the error table 100bfcc09ddSBjoern A. Zeeb * @size: size of the error table 101bfcc09ddSBjoern A. Zeeb * @offset: offset to add to &base_addr 102bfcc09ddSBjoern A. Zeeb */ 103bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_region_err_table { 104bfcc09ddSBjoern A. Zeeb __le32 version; 105bfcc09ddSBjoern A. Zeeb __le32 base_addr; 106bfcc09ddSBjoern A. Zeeb __le32 size; 107bfcc09ddSBjoern A. Zeeb __le32 offset; 108bfcc09ddSBjoern A. Zeeb } __packed; /* FW_TLV_DEBUG_REGION_ERROR_TABLE_API_S_VER_1 */ 109bfcc09ddSBjoern A. Zeeb 110bfcc09ddSBjoern A. Zeeb /** 111bfcc09ddSBjoern A. Zeeb * struct iwl_fw_ini_region_special_device_memory - special device memory 112bfcc09ddSBjoern A. Zeeb * 113bfcc09ddSBjoern A. Zeeb * Configuration to read a special memory 114bfcc09ddSBjoern A. Zeeb * 115bfcc09ddSBjoern A. Zeeb * @type: type of the special memory 116bfcc09ddSBjoern A. Zeeb * @version: version of the special memory 117bfcc09ddSBjoern A. Zeeb * @base_addr: base address of the error table 118bfcc09ddSBjoern A. Zeeb * @size: size of the error table 119bfcc09ddSBjoern A. Zeeb * @offset: offset to add to &base_addr 120bfcc09ddSBjoern A. Zeeb */ 121bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_region_special_device_memory { 122bfcc09ddSBjoern A. Zeeb __le16 type; 123bfcc09ddSBjoern A. Zeeb __le16 version; 124bfcc09ddSBjoern A. Zeeb __le32 base_addr; 125bfcc09ddSBjoern A. Zeeb __le32 size; 126bfcc09ddSBjoern A. Zeeb __le32 offset; 127bfcc09ddSBjoern A. Zeeb } __packed; /* FW_TLV_DEBUG_REGION_SPECIAL_DEVICE_ADDR_API_S_VER_1 */ 128bfcc09ddSBjoern A. Zeeb 129bfcc09ddSBjoern A. Zeeb /** 130bfcc09ddSBjoern A. Zeeb * struct iwl_fw_ini_region_internal_buffer - internal buffer region data 131bfcc09ddSBjoern A. Zeeb * 132bfcc09ddSBjoern A. Zeeb * Configuration to read internal monitor buffer 133bfcc09ddSBjoern A. Zeeb * 134bfcc09ddSBjoern A. Zeeb * @alloc_id: allocation id one of &enum iwl_fw_ini_allocation_id 135bfcc09ddSBjoern A. Zeeb * @base_addr: internal buffer base address 136bfcc09ddSBjoern A. Zeeb * @size: size internal buffer size 137bfcc09ddSBjoern A. Zeeb */ 138bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_region_internal_buffer { 139bfcc09ddSBjoern A. Zeeb __le32 alloc_id; 140bfcc09ddSBjoern A. Zeeb __le32 base_addr; 141bfcc09ddSBjoern A. Zeeb __le32 size; 142bfcc09ddSBjoern A. Zeeb } __packed; /* FW_TLV_DEBUG_REGION_INTERNAL_BUFFER_API_S_VER_1 */ 143bfcc09ddSBjoern A. Zeeb 144bfcc09ddSBjoern A. Zeeb /** 145bfcc09ddSBjoern A. Zeeb * struct iwl_fw_ini_region_tlv - region TLV 146bfcc09ddSBjoern A. Zeeb * 147bfcc09ddSBjoern A. Zeeb * Configures parameters for region data collection 148bfcc09ddSBjoern A. Zeeb * 149bfcc09ddSBjoern A. Zeeb * @hdr: debug header 150*a4128aadSBjoern A. Zeeb * @id: region id. Max id is %IWL_FW_INI_MAX_REGION_ID 151bfcc09ddSBjoern A. Zeeb * @type: region type. One of &enum iwl_fw_ini_region_type 152d9836fb4SBjoern A. Zeeb * @sub_type: region sub type 153d9836fb4SBjoern A. Zeeb * @sub_type_ver: region sub type version 154d9836fb4SBjoern A. Zeeb * @reserved: not in use 155bfcc09ddSBjoern A. Zeeb * @name: region name 156bfcc09ddSBjoern A. Zeeb * @dev_addr: device address configuration. Used by 157*a4128aadSBjoern A. Zeeb * %IWL_FW_INI_REGION_DEVICE_MEMORY, %IWL_FW_INI_REGION_PERIPHERY_MAC, 158*a4128aadSBjoern A. Zeeb * %IWL_FW_INI_REGION_PERIPHERY_PHY, %IWL_FW_INI_REGION_PERIPHERY_AUX, 159*a4128aadSBjoern A. Zeeb * %IWL_FW_INI_REGION_PAGING, %IWL_FW_INI_REGION_CSR, 160*a4128aadSBjoern A. Zeeb * %IWL_FW_INI_REGION_DRAM_IMR and %IWL_FW_INI_REGION_PCI_IOSF_CONFIG 161*a4128aadSBjoern A. Zeeb * %IWL_FW_INI_REGION_DBGI_SRAM, %FW_TLV_DEBUG_REGION_TYPE_DBGI_SRAM, 162*a4128aadSBjoern A. Zeeb * %IWL_FW_INI_REGION_PERIPHERY_SNPS_DPHYIP, 163*a4128aadSBjoern A. Zeeb * @dev_addr_range: device address range configuration. Used by 164*a4128aadSBjoern A. Zeeb * %IWL_FW_INI_REGION_PERIPHERY_MAC_RANGE and 165*a4128aadSBjoern A. Zeeb * %IWL_FW_INI_REGION_PERIPHERY_PHY_RANGE 166*a4128aadSBjoern A. Zeeb * @fifos: fifos configuration. Used by %IWL_FW_INI_REGION_TXF and 167*a4128aadSBjoern A. Zeeb * %IWL_FW_INI_REGION_RXF 168bfcc09ddSBjoern A. Zeeb * @err_table: error table configuration. Used by 169*a4128aadSBjoern A. Zeeb * %IWL_FW_INI_REGION_LMAC_ERROR_TABLE and 170*a4128aadSBjoern A. Zeeb * %IWL_FW_INI_REGION_UMAC_ERROR_TABLE 171bfcc09ddSBjoern A. Zeeb * @internal_buffer: internal monitor buffer configuration. Used by 172*a4128aadSBjoern A. Zeeb * %IWL_FW_INI_REGION_INTERNAL_BUFFER 173*a4128aadSBjoern A. Zeeb * @special_mem: special device memory region, used by 174*a4128aadSBjoern A. Zeeb * %IWL_FW_INI_REGION_SPECIAL_DEVICE_MEMORY 175bfcc09ddSBjoern A. Zeeb * @dram_alloc_id: dram allocation id. One of &enum iwl_fw_ini_allocation_id. 176*a4128aadSBjoern A. Zeeb * Used by %IWL_FW_INI_REGION_DRAM_BUFFER 177*a4128aadSBjoern A. Zeeb * @tlv_mask: tlv collection mask. Used by %IWL_FW_INI_REGION_TLV 178bfcc09ddSBjoern A. Zeeb * @addrs: array of addresses attached to the end of the region tlv 179bfcc09ddSBjoern A. Zeeb */ 180bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_region_tlv { 181bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_header hdr; 182bfcc09ddSBjoern A. Zeeb __le32 id; 183d9836fb4SBjoern A. Zeeb u8 type; 184d9836fb4SBjoern A. Zeeb u8 sub_type; 185d9836fb4SBjoern A. Zeeb u8 sub_type_ver; 186d9836fb4SBjoern A. Zeeb u8 reserved; 187bfcc09ddSBjoern A. Zeeb u8 name[IWL_FW_INI_MAX_NAME]; 188bfcc09ddSBjoern A. Zeeb union { 189bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_region_dev_addr dev_addr; 190*a4128aadSBjoern A. Zeeb struct iwl_fw_ini_region_dev_addr_range dev_addr_range; 191bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_region_fifos fifos; 192bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_region_err_table err_table; 193bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_region_internal_buffer internal_buffer; 194bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_region_special_device_memory special_mem; 195bfcc09ddSBjoern A. Zeeb __le32 dram_alloc_id; 196bfcc09ddSBjoern A. Zeeb __le32 tlv_mask; 197bfcc09ddSBjoern A. Zeeb }; /* FW_TLV_DEBUG_REGION_CONF_PARAMS_API_U_VER_1 */ 198bfcc09ddSBjoern A. Zeeb __le32 addrs[]; 199bfcc09ddSBjoern A. Zeeb } __packed; /* FW_TLV_DEBUG_REGION_API_S_VER_1 */ 200bfcc09ddSBjoern A. Zeeb 201bfcc09ddSBjoern A. Zeeb /** 202bfcc09ddSBjoern A. Zeeb * struct iwl_fw_ini_debug_info_tlv 203bfcc09ddSBjoern A. Zeeb * 204bfcc09ddSBjoern A. Zeeb * debug configuration name for a specific image 205bfcc09ddSBjoern A. Zeeb * 206bfcc09ddSBjoern A. Zeeb * @hdr: debug header 207bfcc09ddSBjoern A. Zeeb * @image_type: image type 208bfcc09ddSBjoern A. Zeeb * @debug_cfg_name: debug configuration name 209bfcc09ddSBjoern A. Zeeb */ 210bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_debug_info_tlv { 211bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_header hdr; 212bfcc09ddSBjoern A. Zeeb __le32 image_type; 213bfcc09ddSBjoern A. Zeeb u8 debug_cfg_name[IWL_FW_INI_MAX_CFG_NAME]; 214bfcc09ddSBjoern A. Zeeb } __packed; /* FW_TLV_DEBUG_INFO_API_S_VER_1 */ 215bfcc09ddSBjoern A. Zeeb 216bfcc09ddSBjoern A. Zeeb /** 217bfcc09ddSBjoern A. Zeeb * struct iwl_fw_ini_allocation_tlv - Allocates DRAM buffers 218bfcc09ddSBjoern A. Zeeb * 219bfcc09ddSBjoern A. Zeeb * @hdr: debug header 220bfcc09ddSBjoern A. Zeeb * @alloc_id: allocation id. One of &enum iwl_fw_ini_allocation_id 221bfcc09ddSBjoern A. Zeeb * @buf_location: buffer location. One of &enum iwl_fw_ini_buffer_location 222bfcc09ddSBjoern A. Zeeb * @req_size: requested buffer size 223bfcc09ddSBjoern A. Zeeb * @max_frags_num: maximum number of fragments 224bfcc09ddSBjoern A. Zeeb * @min_size: minimum buffer size 225bfcc09ddSBjoern A. Zeeb */ 226bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_allocation_tlv { 227bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_header hdr; 228bfcc09ddSBjoern A. Zeeb __le32 alloc_id; 229bfcc09ddSBjoern A. Zeeb __le32 buf_location; 230bfcc09ddSBjoern A. Zeeb __le32 req_size; 231bfcc09ddSBjoern A. Zeeb __le32 max_frags_num; 232bfcc09ddSBjoern A. Zeeb __le32 min_size; 233bfcc09ddSBjoern A. Zeeb } __packed; /* FW_TLV_DEBUG_BUFFER_ALLOCATION_API_S_VER_1 */ 234bfcc09ddSBjoern A. Zeeb 235bfcc09ddSBjoern A. Zeeb /** 236bfcc09ddSBjoern A. Zeeb * struct iwl_fw_ini_trigger_tlv - trigger TLV 237bfcc09ddSBjoern A. Zeeb * 238bfcc09ddSBjoern A. Zeeb * Trigger that upon firing, determines what regions to collect 239bfcc09ddSBjoern A. Zeeb * 240bfcc09ddSBjoern A. Zeeb * @hdr: debug header 241bfcc09ddSBjoern A. Zeeb * @time_point: time point. One of &enum iwl_fw_ini_time_point 242bfcc09ddSBjoern A. Zeeb * @trigger_reason: trigger reason 243bfcc09ddSBjoern A. Zeeb * @apply_policy: uses &enum iwl_fw_ini_trigger_apply_policy 244bfcc09ddSBjoern A. Zeeb * @dump_delay: delay from trigger fire to dump, in usec 245bfcc09ddSBjoern A. Zeeb * @occurrences: max trigger fire occurrences allowed 246bfcc09ddSBjoern A. Zeeb * @reserved: unused 247bfcc09ddSBjoern A. Zeeb * @ignore_consec: ignore consecutive triggers, in usec 248bfcc09ddSBjoern A. Zeeb * @reset_fw: if non zero, will reset and reload the FW 249bfcc09ddSBjoern A. Zeeb * @multi_dut: initiate debug dump data on several DUTs 250bfcc09ddSBjoern A. Zeeb * @regions_mask: mask of regions to collect 251bfcc09ddSBjoern A. Zeeb * @data: trigger data 252bfcc09ddSBjoern A. Zeeb */ 253bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_trigger_tlv { 254bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_header hdr; 255bfcc09ddSBjoern A. Zeeb __le32 time_point; 256bfcc09ddSBjoern A. Zeeb __le32 trigger_reason; 257bfcc09ddSBjoern A. Zeeb __le32 apply_policy; 258bfcc09ddSBjoern A. Zeeb __le32 dump_delay; 259bfcc09ddSBjoern A. Zeeb __le32 occurrences; 260bfcc09ddSBjoern A. Zeeb __le32 reserved; 261bfcc09ddSBjoern A. Zeeb __le32 ignore_consec; 262bfcc09ddSBjoern A. Zeeb __le32 reset_fw; 263bfcc09ddSBjoern A. Zeeb __le32 multi_dut; 264bfcc09ddSBjoern A. Zeeb __le64 regions_mask; 265bfcc09ddSBjoern A. Zeeb __le32 data[]; 266bfcc09ddSBjoern A. Zeeb } __packed; /* FW_TLV_DEBUG_TRIGGER_API_S_VER_1 */ 267bfcc09ddSBjoern A. Zeeb 268bfcc09ddSBjoern A. Zeeb /** 269bfcc09ddSBjoern A. Zeeb * struct iwl_fw_ini_hcmd_tlv - Generic Host command pass through TLV 270bfcc09ddSBjoern A. Zeeb * 271bfcc09ddSBjoern A. Zeeb * @hdr: debug header 272bfcc09ddSBjoern A. Zeeb * @time_point: time point. One of &enum iwl_fw_ini_time_point 273bfcc09ddSBjoern A. Zeeb * @period_msec: interval at which the hcmd will be sent to the FW. 274bfcc09ddSBjoern A. Zeeb * Measured in msec (0 = one time command) 275bfcc09ddSBjoern A. Zeeb * @hcmd: a variable length host-command to be sent to apply the configuration 276bfcc09ddSBjoern A. Zeeb */ 277bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_hcmd_tlv { 278bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_header hdr; 279bfcc09ddSBjoern A. Zeeb __le32 time_point; 280bfcc09ddSBjoern A. Zeeb __le32 period_msec; 281bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_hcmd hcmd; 282bfcc09ddSBjoern A. Zeeb } __packed; /* FW_TLV_DEBUG_HCMD_API_S_VER_1 */ 283bfcc09ddSBjoern A. Zeeb 284bfcc09ddSBjoern A. Zeeb /** 285d9836fb4SBjoern A. Zeeb * struct iwl_fw_ini_addr_val - Address and value to set it to 286bfcc09ddSBjoern A. Zeeb * 287bfcc09ddSBjoern A. Zeeb * @address: the base address 288bfcc09ddSBjoern A. Zeeb * @value: value to set at address 289bfcc09ddSBjoern A. Zeeb */ 290bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_addr_val { 291bfcc09ddSBjoern A. Zeeb __le32 address; 292bfcc09ddSBjoern A. Zeeb __le32 value; 293bfcc09ddSBjoern A. Zeeb } __packed; /* FW_TLV_DEBUG_ADDR_VALUE_VER_1 */ 294bfcc09ddSBjoern A. Zeeb 295bfcc09ddSBjoern A. Zeeb /** 296*a4128aadSBjoern A. Zeeb * struct iwl_fw_ini_conf_set_tlv - configuration TLV to set register/memory. 297bfcc09ddSBjoern A. Zeeb * 298bfcc09ddSBjoern A. Zeeb * @hdr: debug header 299bfcc09ddSBjoern A. Zeeb * @time_point: time point to apply config. One of &enum iwl_fw_ini_time_point 300bfcc09ddSBjoern A. Zeeb * @set_type: write access type preset token for time point. 301bfcc09ddSBjoern A. Zeeb * one of &enum iwl_fw_ini_config_set_type 302bfcc09ddSBjoern A. Zeeb * @addr_offset: the offset to add to any item in address[0] field 303bfcc09ddSBjoern A. Zeeb * @addr_val: address value pair 304bfcc09ddSBjoern A. Zeeb */ 305bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_conf_set_tlv { 306bfcc09ddSBjoern A. Zeeb struct iwl_fw_ini_header hdr; 307bfcc09ddSBjoern A. Zeeb __le32 time_point; 308bfcc09ddSBjoern A. Zeeb __le32 set_type; 309bfcc09ddSBjoern A. Zeeb __le32 addr_offset; 3109af1bba4SBjoern A. Zeeb struct iwl_fw_ini_addr_val addr_val[]; 311bfcc09ddSBjoern A. Zeeb } __packed; /* FW_TLV_DEBUG_CONFIG_SET_API_S_VER_1 */ 312bfcc09ddSBjoern A. Zeeb 313bfcc09ddSBjoern A. Zeeb /** 314bfcc09ddSBjoern A. Zeeb * enum iwl_fw_ini_config_set_type 315bfcc09ddSBjoern A. Zeeb * 316bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_CONFIG_SET_TYPE_INVALID: invalid config set 317bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_PERIPHERY_MAC: for PERIPHERY MAC configuration 318bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_PERIPHERY_PHY: for PERIPHERY PHY configuration 319bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_PERIPHERY_AUX: for PERIPHERY AUX configuration 320bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_MEMORY: for DEVICE MEMORY configuration 321bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_CONFIG_SET_TYPE_CSR: for CSR configuration 322bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_CONFIG_SET_TYPE_DBGC_DRAM_ADDR: for DBGC_DRAM_ADDR configuration 323bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_CONFIG_SET_TYPE_PERIPH_SCRATCH_HWM: for PERIPH SCRATCH HWM configuration 324*a4128aadSBjoern A. Zeeb * @IWL_FW_INI_CONFIG_SET_TYPE_MAX_NUM: max number of configuration supported 325bfcc09ddSBjoern A. Zeeb */ 326bfcc09ddSBjoern A. Zeeb 327bfcc09ddSBjoern A. Zeeb enum iwl_fw_ini_config_set_type { 328bfcc09ddSBjoern A. Zeeb IWL_FW_INI_CONFIG_SET_TYPE_INVALID = 0, 329bfcc09ddSBjoern A. Zeeb IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_PERIPHERY_MAC, 330bfcc09ddSBjoern A. Zeeb IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_PERIPHERY_PHY, 331bfcc09ddSBjoern A. Zeeb IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_PERIPHERY_AUX, 332bfcc09ddSBjoern A. Zeeb IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_MEMORY, 333bfcc09ddSBjoern A. Zeeb IWL_FW_INI_CONFIG_SET_TYPE_CSR, 334bfcc09ddSBjoern A. Zeeb IWL_FW_INI_CONFIG_SET_TYPE_DBGC_DRAM_ADDR, 335bfcc09ddSBjoern A. Zeeb IWL_FW_INI_CONFIG_SET_TYPE_PERIPH_SCRATCH_HWM, 336bfcc09ddSBjoern A. Zeeb IWL_FW_INI_CONFIG_SET_TYPE_MAX_NUM, 337bfcc09ddSBjoern A. Zeeb } __packed; 338bfcc09ddSBjoern A. Zeeb 339bfcc09ddSBjoern A. Zeeb /** 340bfcc09ddSBjoern A. Zeeb * enum iwl_fw_ini_allocation_id 341bfcc09ddSBjoern A. Zeeb * 342bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_ALLOCATION_INVALID: invalid 343bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_ALLOCATION_ID_DBGC1: allocation meant for DBGC1 configuration 344bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_ALLOCATION_ID_DBGC2: allocation meant for DBGC2 configuration 345bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_ALLOCATION_ID_DBGC3: allocation meant for DBGC3 configuration 346d9836fb4SBjoern A. Zeeb * @IWL_FW_INI_ALLOCATION_ID_DBGC4: allocation meant for DBGC4 configuration 347bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_ALLOCATION_NUM: number of allocation ids 348bfcc09ddSBjoern A. Zeeb */ 349bfcc09ddSBjoern A. Zeeb enum iwl_fw_ini_allocation_id { 350bfcc09ddSBjoern A. Zeeb IWL_FW_INI_ALLOCATION_INVALID, 351bfcc09ddSBjoern A. Zeeb IWL_FW_INI_ALLOCATION_ID_DBGC1, 352bfcc09ddSBjoern A. Zeeb IWL_FW_INI_ALLOCATION_ID_DBGC2, 353bfcc09ddSBjoern A. Zeeb IWL_FW_INI_ALLOCATION_ID_DBGC3, 354d9836fb4SBjoern A. Zeeb IWL_FW_INI_ALLOCATION_ID_DBGC4, 355bfcc09ddSBjoern A. Zeeb IWL_FW_INI_ALLOCATION_NUM, 356bfcc09ddSBjoern A. Zeeb }; /* FW_DEBUG_TLV_ALLOCATION_ID_E_VER_1 */ 357bfcc09ddSBjoern A. Zeeb 358bfcc09ddSBjoern A. Zeeb /** 359bfcc09ddSBjoern A. Zeeb * enum iwl_fw_ini_buffer_location 360bfcc09ddSBjoern A. Zeeb * 361bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_LOCATION_INVALID: invalid 362bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_LOCATION_SRAM_PATH: SRAM location 363bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_LOCATION_DRAM_PATH: DRAM location 364bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_LOCATION_NPK_PATH: NPK location 365*a4128aadSBjoern A. Zeeb * @IWL_FW_INI_LOCATION_NUM: number of valid locations 366bfcc09ddSBjoern A. Zeeb */ 367bfcc09ddSBjoern A. Zeeb enum iwl_fw_ini_buffer_location { 368bfcc09ddSBjoern A. Zeeb IWL_FW_INI_LOCATION_INVALID, 369bfcc09ddSBjoern A. Zeeb IWL_FW_INI_LOCATION_SRAM_PATH, 370bfcc09ddSBjoern A. Zeeb IWL_FW_INI_LOCATION_DRAM_PATH, 371bfcc09ddSBjoern A. Zeeb IWL_FW_INI_LOCATION_NPK_PATH, 372bfcc09ddSBjoern A. Zeeb IWL_FW_INI_LOCATION_NUM, 373bfcc09ddSBjoern A. Zeeb }; /* FW_DEBUG_TLV_BUFFER_LOCATION_E_VER_1 */ 374bfcc09ddSBjoern A. Zeeb 375bfcc09ddSBjoern A. Zeeb /** 376bfcc09ddSBjoern A. Zeeb * enum iwl_fw_ini_region_type 377bfcc09ddSBjoern A. Zeeb * 378bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_INVALID: invalid 379bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_TLV: uCode and debug TLVs 380bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_INTERNAL_BUFFER: monitor SMEM buffer 381bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_DRAM_BUFFER: monitor DRAM buffer 382bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_TXF: TX fifos 383bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_RXF: RX fifo 384bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_LMAC_ERROR_TABLE: lmac error table 385bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_UMAC_ERROR_TABLE: umac error table 386bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_RSP_OR_NOTIF: FW response or notification data 387bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_DEVICE_MEMORY: device internal memory 388bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_PERIPHERY_MAC: periphery registers of MAC 389bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_PERIPHERY_PHY: periphery registers of PHY 390bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_PERIPHERY_AUX: periphery registers of AUX 391bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_PAGING: paging memory 392bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_CSR: CSR registers 393bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_DRAM_IMR: IMR memory 394bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_PCI_IOSF_CONFIG: PCI/IOSF config 395bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_SPECIAL_DEVICE_MEMORY: special device memory 396bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_DBGI_SRAM: periphery registers of DBGI SRAM 397*a4128aadSBjoern A. Zeeb * @IWL_FW_INI_REGION_PERIPHERY_MAC_RANGE: a range of periphery registers of MAC 398*a4128aadSBjoern A. Zeeb * @IWL_FW_INI_REGION_PERIPHERY_PHY_RANGE: a range of periphery registers of PHY 399*a4128aadSBjoern A. Zeeb * @IWL_FW_INI_REGION_PERIPHERY_SNPS_DPHYIP: periphery registers of SNPS DPHYIP 400bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_REGION_NUM: number of region types 401bfcc09ddSBjoern A. Zeeb */ 402bfcc09ddSBjoern A. Zeeb enum iwl_fw_ini_region_type { 403bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_INVALID, 404bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_TLV, 405bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_INTERNAL_BUFFER, 406bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_DRAM_BUFFER, 407bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_TXF, 408bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_RXF, 409bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_LMAC_ERROR_TABLE, 410bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_UMAC_ERROR_TABLE, 411bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_RSP_OR_NOTIF, 412bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_DEVICE_MEMORY, 413bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_PERIPHERY_MAC, 414bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_PERIPHERY_PHY, 415bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_PERIPHERY_AUX, 416bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_PAGING, 417bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_CSR, 418bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_DRAM_IMR, 419bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_PCI_IOSF_CONFIG, 420bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_SPECIAL_DEVICE_MEMORY, 421bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_DBGI_SRAM, 422*a4128aadSBjoern A. Zeeb IWL_FW_INI_REGION_PERIPHERY_MAC_RANGE, 423*a4128aadSBjoern A. Zeeb IWL_FW_INI_REGION_PERIPHERY_PHY_RANGE, 424*a4128aadSBjoern A. Zeeb IWL_FW_INI_REGION_PERIPHERY_SNPS_DPHYIP, 425bfcc09ddSBjoern A. Zeeb IWL_FW_INI_REGION_NUM 426bfcc09ddSBjoern A. Zeeb }; /* FW_TLV_DEBUG_REGION_TYPE_API_E */ 427bfcc09ddSBjoern A. Zeeb 428d9836fb4SBjoern A. Zeeb enum iwl_fw_ini_region_device_memory_subtype { 429d9836fb4SBjoern A. Zeeb IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_HW_SMEM = 1, 430d9836fb4SBjoern A. Zeeb IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_UMAC_ERROR_TABLE = 5, 431d9836fb4SBjoern A. Zeeb IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_LMAC_1_ERROR_TABLE = 7, 432d9836fb4SBjoern A. Zeeb IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_LMAC_2_ERROR_TABLE = 10, 433d9836fb4SBjoern A. Zeeb IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_TCM_1_ERROR_TABLE = 14, 434d9836fb4SBjoern A. Zeeb IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_TCM_2_ERROR_TABLE = 16, 435d9836fb4SBjoern A. Zeeb IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_RCM_1_ERROR_TABLE = 18, 436d9836fb4SBjoern A. Zeeb IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_RCM_2_ERROR_TABLE = 20, 437d9836fb4SBjoern A. Zeeb }; /* FW_TLV_DEBUG_REGION_DEVICE_MEMORY_SUBTYPE_API_E */ 438d9836fb4SBjoern A. Zeeb 439bfcc09ddSBjoern A. Zeeb /** 440bfcc09ddSBjoern A. Zeeb * enum iwl_fw_ini_time_point 441bfcc09ddSBjoern A. Zeeb * 442bfcc09ddSBjoern A. Zeeb * Hard coded time points in which the driver can send hcmd or perform dump 443bfcc09ddSBjoern A. Zeeb * collection 444bfcc09ddSBjoern A. Zeeb * 445*a4128aadSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_INVALID: invalid timepoint 446bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_EARLY: pre loading the FW 447bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_AFTER_ALIVE: first cmd from host after alive notif 448bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_POST_INIT: last cmd in series of init sequence 449bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_FW_ASSERT: FW assert 450bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_FW_HW_ERROR: FW HW error 451bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_FW_TFD_Q_HANG: TFD queue hang 452bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_FW_DHC_NOTIFICATION: DHC cmd response and notif 453bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_FW_RSP_OR_NOTIF: FW response or notification. 454bfcc09ddSBjoern A. Zeeb * data field holds id and group 455bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_USER_TRIGGER: user trigger time point 456bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_PERIODIC: periodic timepoint that fires in constant 457bfcc09ddSBjoern A. Zeeb * intervals. data field holds the interval time in msec 458bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_RESERVED: reserved 459bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_HOST_ASSERT: Unused 460bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_HOST_ALIVE_TIMEOUT: alive timeout 461bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_HOST_DEVICE_ENABLE: device enable 462bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_HOST_DEVICE_DISABLE: device disable 463bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_HOST_D3_START: D3 start 464bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_HOST_D3_END: D3 end 465bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_MISSED_BEACONS: missed beacons 466bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_ASSOC_FAILED: association failure 467bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_TX_FAILED: Tx frame failed 468bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_TX_WFD_ACTION_FRAME_FAILED: wifi direct action 469bfcc09ddSBjoern A. Zeeb * frame failed 470bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_TX_LATENCY_THRESHOLD: Tx latency threshold 471bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_HANG_OCCURRED: hang occurred 472bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_EAPOL_FAILED: EAPOL failed 473bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_FAKE_TX: fake Tx 474bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_DEASSOC: de association 475*a4128aadSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_PRESET_OVERRIDE_EXT_REQ: request to override preset 476*a4128aadSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_PRESET_OVERRIDE_START: start handling override preset 477*a4128aadSBjoern A. Zeeb * request 478*a4128aadSBjoern A. Zeeb * @IWL_FW_INI_TIME_SCAN_FAILURE: failed scan channel list 479bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_TIME_POINT_NUM: number of time points 480bfcc09ddSBjoern A. Zeeb */ 481bfcc09ddSBjoern A. Zeeb enum iwl_fw_ini_time_point { 482bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_INVALID, 483bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_EARLY, 484bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_AFTER_ALIVE, 485bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_POST_INIT, 486bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_FW_ASSERT, 487bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_FW_HW_ERROR, 488bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_FW_TFD_Q_HANG, 489bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_FW_DHC_NOTIFICATION, 490bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_FW_RSP_OR_NOTIF, 491bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_USER_TRIGGER, 492bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_PERIODIC, 493bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_RESERVED, 494bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_HOST_ASSERT, 495bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_HOST_ALIVE_TIMEOUT, 496bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_HOST_DEVICE_ENABLE, 497bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_HOST_DEVICE_DISABLE, 498bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_HOST_D3_START, 499bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_HOST_D3_END, 500bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_MISSED_BEACONS, 501bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_ASSOC_FAILED, 502bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_TX_FAILED, 503bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_TX_WFD_ACTION_FRAME_FAILED, 504bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_TX_LATENCY_THRESHOLD, 505bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_HANG_OCCURRED, 506bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_EAPOL_FAILED, 507bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_FAKE_TX, 508bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_DEASSOC, 509*a4128aadSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_PRESET_OVERRIDE_EXT_REQ, 510*a4128aadSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_PRESET_OVERRIDE_START, 511*a4128aadSBjoern A. Zeeb IWL_FW_INI_TIME_SCAN_FAILURE, 512bfcc09ddSBjoern A. Zeeb IWL_FW_INI_TIME_POINT_NUM, 513bfcc09ddSBjoern A. Zeeb }; /* FW_TLV_DEBUG_TIME_POINT_API_E */ 514bfcc09ddSBjoern A. Zeeb 515bfcc09ddSBjoern A. Zeeb /** 516bfcc09ddSBjoern A. Zeeb * enum iwl_fw_ini_trigger_apply_policy - Determines how to apply triggers 517bfcc09ddSBjoern A. Zeeb * 518bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_APPLY_POLICY_MATCH_TIME_POINT: match by time point 519bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_APPLY_POLICY_MATCH_DATA: match by trigger data 520bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_APPLY_POLICY_OVERRIDE_REGIONS: override regions mask. 521bfcc09ddSBjoern A. Zeeb * Append otherwise 522bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_APPLY_POLICY_OVERRIDE_CFG: override trigger configuration 523bfcc09ddSBjoern A. Zeeb * @IWL_FW_INI_APPLY_POLICY_OVERRIDE_DATA: override trigger data. 524bfcc09ddSBjoern A. Zeeb * Append otherwise 525d9836fb4SBjoern A. Zeeb * @IWL_FW_INI_APPLY_POLICY_DUMP_COMPLETE_CMD: send cmd once dump collected 526bfcc09ddSBjoern A. Zeeb */ 527bfcc09ddSBjoern A. Zeeb enum iwl_fw_ini_trigger_apply_policy { 528bfcc09ddSBjoern A. Zeeb IWL_FW_INI_APPLY_POLICY_MATCH_TIME_POINT = BIT(0), 529bfcc09ddSBjoern A. Zeeb IWL_FW_INI_APPLY_POLICY_MATCH_DATA = BIT(1), 530bfcc09ddSBjoern A. Zeeb IWL_FW_INI_APPLY_POLICY_OVERRIDE_REGIONS = BIT(8), 531bfcc09ddSBjoern A. Zeeb IWL_FW_INI_APPLY_POLICY_OVERRIDE_CFG = BIT(9), 532bfcc09ddSBjoern A. Zeeb IWL_FW_INI_APPLY_POLICY_OVERRIDE_DATA = BIT(10), 533d9836fb4SBjoern A. Zeeb IWL_FW_INI_APPLY_POLICY_DUMP_COMPLETE_CMD = BIT(16), 534d9836fb4SBjoern A. Zeeb }; 535d9836fb4SBjoern A. Zeeb 536d9836fb4SBjoern A. Zeeb /** 537d9836fb4SBjoern A. Zeeb * enum iwl_fw_ini_trigger_reset_fw_policy - Determines how to handle reset 538d9836fb4SBjoern A. Zeeb * 539d9836fb4SBjoern A. Zeeb * @IWL_FW_INI_RESET_FW_MODE_NOTHING: do not stop FW and reload (default) 540d9836fb4SBjoern A. Zeeb * @IWL_FW_INI_RESET_FW_MODE_STOP_FW_ONLY: stop FW without reload FW 541d9836fb4SBjoern A. Zeeb * @IWL_FW_INI_RESET_FW_MODE_STOP_AND_RELOAD_FW: stop FW with reload FW 542d9836fb4SBjoern A. Zeeb */ 543d9836fb4SBjoern A. Zeeb enum iwl_fw_ini_trigger_reset_fw_policy { 544d9836fb4SBjoern A. Zeeb IWL_FW_INI_RESET_FW_MODE_NOTHING = 0, 545d9836fb4SBjoern A. Zeeb IWL_FW_INI_RESET_FW_MODE_STOP_FW_ONLY, 546d9836fb4SBjoern A. Zeeb IWL_FW_INI_RESET_FW_MODE_STOP_AND_RELOAD_FW 547d9836fb4SBjoern A. Zeeb }; 548d9836fb4SBjoern A. Zeeb 549d9836fb4SBjoern A. Zeeb /** 550d9836fb4SBjoern A. Zeeb * enum iwl_fw_ini_dump_policy - Determines how to handle dump based on enabled flags 551d9836fb4SBjoern A. Zeeb * 552d9836fb4SBjoern A. Zeeb * @IWL_FW_INI_DEBUG_DUMP_POLICY_NO_LIMIT: OS has no limit of dump size 553d9836fb4SBjoern A. Zeeb * @IWL_FW_INI_DEBUG_DUMP_POLICY_MAX_LIMIT_600KB: mini dump only 600KB region dump 554d9836fb4SBjoern A. Zeeb * @IWL_FW_IWL_DEBUG_DUMP_POLICY_MAX_LIMIT_5MB: mini dump 5MB size dump 555d9836fb4SBjoern A. Zeeb */ 556d9836fb4SBjoern A. Zeeb enum iwl_fw_ini_dump_policy { 557d9836fb4SBjoern A. Zeeb IWL_FW_INI_DEBUG_DUMP_POLICY_NO_LIMIT = BIT(0), 558d9836fb4SBjoern A. Zeeb IWL_FW_INI_DEBUG_DUMP_POLICY_MAX_LIMIT_600KB = BIT(1), 559d9836fb4SBjoern A. Zeeb IWL_FW_IWL_DEBUG_DUMP_POLICY_MAX_LIMIT_5MB = BIT(2), 560d9836fb4SBjoern A. Zeeb 561d9836fb4SBjoern A. Zeeb }; 562d9836fb4SBjoern A. Zeeb 563d9836fb4SBjoern A. Zeeb /** 564d9836fb4SBjoern A. Zeeb * enum iwl_fw_ini_dump_type - Determines dump type based on size defined by FW. 565d9836fb4SBjoern A. Zeeb * 566d9836fb4SBjoern A. Zeeb * @IWL_FW_INI_DUMP_BRIEF : only dump the most important regions 567*a4128aadSBjoern A. Zeeb * @IWL_FW_INI_DUMP_MEDIUM: dump more regions than "brief", but not all regions 568d9836fb4SBjoern A. Zeeb * @IWL_FW_INI_DUMP_VERBOSE : dump all regions 569d9836fb4SBjoern A. Zeeb */ 570d9836fb4SBjoern A. Zeeb enum iwl_fw_ini_dump_type { 571d9836fb4SBjoern A. Zeeb IWL_FW_INI_DUMP_BRIEF, 572d9836fb4SBjoern A. Zeeb IWL_FW_INI_DUMP_MEDIUM, 573d9836fb4SBjoern A. Zeeb IWL_FW_INI_DUMP_VERBOSE, 574bfcc09ddSBjoern A. Zeeb }; 575bfcc09ddSBjoern A. Zeeb #endif 576