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