Loading...
Note: File does not exist in v4.6.
1/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
2/*
3 * Copyright (C) 2018-2024 Intel Corporation
4 */
5#ifndef __iwl_fw_dbg_tlv_h__
6#define __iwl_fw_dbg_tlv_h__
7
8#include <linux/bitops.h>
9
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
17
18/**
19 * struct iwl_fw_ini_hcmd
20 *
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
25 */
26struct iwl_fw_ini_hcmd {
27 u8 id;
28 u8 group;
29 __le16 reserved;
30 u8 data[];
31} __packed; /* FW_DEBUG_TLV_HCMD_DATA_API_S_VER_1 */
32
33/**
34 * struct iwl_fw_ini_header - Common Header for all ini debug TLV's structures
35 *
36 * @version: TLV version
37 * @domain: domain of the TLV. One of &enum iwl_fw_ini_dbg_domain
38 */
39struct iwl_fw_ini_header {
40 __le32 version;
41 __le32 domain;
42 /* followed by the data */
43} __packed; /* FW_TLV_DEBUG_HEADER_S_VER_1 */
44
45/**
46 * struct iwl_fw_ini_addr_size - Base address and size that defines
47 * a chunk of memory
48 *
49 * @addr: the base address (fixed size - 4 bytes)
50 * @size: the size to read
51 */
52struct iwl_fw_ini_addr_size {
53 __le32 addr;
54 __le32 size;
55} __packed; /* FW_TLV_DEBUG_ADDR_SIZE_VER_1 */
56
57/**
58 * struct iwl_fw_ini_region_dev_addr_range - Configuration to read
59 * device address range
60 *
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.
64 */
65struct iwl_fw_ini_region_dev_addr_range {
66 __le32 offset;
67} __packed; /* FW_TLV_DEBUG_DEVICE_ADDR_RANGE_API_S_VER_1 */
68
69/**
70 * struct iwl_fw_ini_region_dev_addr - Configuration to read device addresses
71 *
72 * @size: size of each memory chunk
73 * @offset: offset to add to the base address of each chunk
74 */
75struct iwl_fw_ini_region_dev_addr {
76 __le32 size;
77 __le32 offset;
78} __packed; /* FW_TLV_DEBUG_DEVICE_ADDR_API_S_VER_1 */
79
80/**
81 * struct iwl_fw_ini_region_fifos - Configuration to read Tx/Rx fifos
82 *
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
86 */
87struct iwl_fw_ini_region_fifos {
88 __le32 fid[2];
89 __le32 hdr_only;
90 __le32 offset;
91} __packed; /* FW_TLV_DEBUG_REGION_FIFOS_API_S_VER_1 */
92
93/**
94 * struct iwl_fw_ini_region_err_table - error table region data
95 *
96 * Configuration to read Umac/Lmac error table
97 *
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
102 */
103struct iwl_fw_ini_region_err_table {
104 __le32 version;
105 __le32 base_addr;
106 __le32 size;
107 __le32 offset;
108} __packed; /* FW_TLV_DEBUG_REGION_ERROR_TABLE_API_S_VER_1 */
109
110/**
111 * struct iwl_fw_ini_region_special_device_memory - special device memory
112 *
113 * Configuration to read a special memory
114 *
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
120 */
121struct iwl_fw_ini_region_special_device_memory {
122 __le16 type;
123 __le16 version;
124 __le32 base_addr;
125 __le32 size;
126 __le32 offset;
127} __packed; /* FW_TLV_DEBUG_REGION_SPECIAL_DEVICE_ADDR_API_S_VER_1 */
128
129/**
130 * struct iwl_fw_ini_region_internal_buffer - internal buffer region data
131 *
132 * Configuration to read internal monitor buffer
133 *
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
137 */
138struct iwl_fw_ini_region_internal_buffer {
139 __le32 alloc_id;
140 __le32 base_addr;
141 __le32 size;
142} __packed; /* FW_TLV_DEBUG_REGION_INTERNAL_BUFFER_API_S_VER_1 */
143
144/**
145 * struct iwl_fw_ini_region_tlv - region TLV
146 *
147 * Configures parameters for region data collection
148 *
149 * @hdr: debug header
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
155 * @name: region name
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
179 */
180struct iwl_fw_ini_region_tlv {
181 struct iwl_fw_ini_header hdr;
182 __le32 id;
183 u8 type;
184 u8 sub_type;
185 u8 sub_type_ver;
186 u8 reserved;
187 u8 name[IWL_FW_INI_MAX_NAME];
188 union {
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;
196 __le32 tlv_mask;
197 }; /* FW_TLV_DEBUG_REGION_CONF_PARAMS_API_U_VER_1 */
198 __le32 addrs[];
199} __packed; /* FW_TLV_DEBUG_REGION_API_S_VER_1 */
200
201/**
202 * struct iwl_fw_ini_debug_info_tlv
203 *
204 * debug configuration name for a specific image
205 *
206 * @hdr: debug header
207 * @image_type: image type
208 * @debug_cfg_name: debug configuration name
209 */
210struct iwl_fw_ini_debug_info_tlv {
211 struct iwl_fw_ini_header hdr;
212 __le32 image_type;
213 u8 debug_cfg_name[IWL_FW_INI_MAX_CFG_NAME];
214} __packed; /* FW_TLV_DEBUG_INFO_API_S_VER_1 */
215
216/**
217 * struct iwl_fw_ini_allocation_tlv - Allocates DRAM buffers
218 *
219 * @hdr: debug header
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
225 */
226struct iwl_fw_ini_allocation_tlv {
227 struct iwl_fw_ini_header hdr;
228 __le32 alloc_id;
229 __le32 buf_location;
230 __le32 req_size;
231 __le32 max_frags_num;
232 __le32 min_size;
233} __packed; /* FW_TLV_DEBUG_BUFFER_ALLOCATION_API_S_VER_1 */
234
235/**
236 * struct iwl_fw_ini_trigger_tlv - trigger TLV
237 *
238 * Trigger that upon firing, determines what regions to collect
239 *
240 * @hdr: debug header
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
246 * @reserved: unused
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
252 */
253struct iwl_fw_ini_trigger_tlv {
254 struct iwl_fw_ini_header hdr;
255 __le32 time_point;
256 __le32 trigger_reason;
257 __le32 apply_policy;
258 __le32 dump_delay;
259 __le32 occurrences;
260 __le32 reserved;
261 __le32 ignore_consec;
262 __le32 reset_fw;
263 __le32 multi_dut;
264 __le64 regions_mask;
265 __le32 data[];
266} __packed; /* FW_TLV_DEBUG_TRIGGER_API_S_VER_1 */
267
268/**
269 * struct iwl_fw_ini_hcmd_tlv - Generic Host command pass through TLV
270 *
271 * @hdr: debug header
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
276 */
277struct iwl_fw_ini_hcmd_tlv {
278 struct iwl_fw_ini_header hdr;
279 __le32 time_point;
280 __le32 period_msec;
281 struct iwl_fw_ini_hcmd hcmd;
282} __packed; /* FW_TLV_DEBUG_HCMD_API_S_VER_1 */
283
284/**
285* struct iwl_fw_ini_addr_val - Address and value to set it to
286*
287* @address: the base address
288* @value: value to set at address
289*/
290struct iwl_fw_ini_addr_val {
291 __le32 address;
292 __le32 value;
293} __packed; /* FW_TLV_DEBUG_ADDR_VALUE_VER_1 */
294
295/**
296 * struct iwl_fw_ini_conf_set_tlv - configuration TLV to set register/memory.
297 *
298 * @hdr: debug header
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
304 */
305struct iwl_fw_ini_conf_set_tlv {
306 struct iwl_fw_ini_header hdr;
307 __le32 time_point;
308 __le32 set_type;
309 __le32 addr_offset;
310 struct iwl_fw_ini_addr_val addr_val[];
311} __packed; /* FW_TLV_DEBUG_CONFIG_SET_API_S_VER_1 */
312
313/**
314 * enum iwl_fw_ini_config_set_type
315 *
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
325*/
326
327enum 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,
337} __packed;
338
339/**
340 * enum iwl_fw_ini_allocation_id
341 *
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
348*/
349enum 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 */
357
358/**
359 * enum iwl_fw_ini_buffer_location
360 *
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
366 */
367enum 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 */
374
375/**
376 * enum iwl_fw_ini_region_type
377 *
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
401 */
402enum 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 */
427
428enum 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 */
438
439/**
440 * enum iwl_fw_ini_time_point
441 *
442 * Hard coded time points in which the driver can send hcmd or perform dump
443 * collection
444 *
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
469 * frame failed
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
477 * request
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
482 */
483enum 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 */
518
519/**
520 * enum iwl_fw_ini_trigger_apply_policy - Determines how to apply triggers
521 *
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.
525 * Append otherwise
526 * @IWL_FW_INI_APPLY_POLICY_OVERRIDE_CFG: override trigger configuration
527 * @IWL_FW_INI_APPLY_POLICY_OVERRIDE_DATA: override trigger data.
528 * Append otherwise
529 * @IWL_FW_INI_APPLY_POLICY_DUMP_COMPLETE_CMD: send cmd once dump collected
530 */
531enum 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),
538};
539
540/**
541 * enum iwl_fw_ini_trigger_reset_fw_policy - Determines how to handle reset
542 *
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
546 */
547enum 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
551};
552
553/**
554 * enum iwl_fw_ini_dump_policy - Determines how to handle dump based on enabled flags
555 *
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
559 */
560enum 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),
564
565};
566
567/**
568 * enum iwl_fw_ini_dump_type - Determines dump type based on size defined by FW.
569 *
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
573 */
574enum iwl_fw_ini_dump_type {
575 IWL_FW_INI_DUMP_BRIEF,
576 IWL_FW_INI_DUMP_MEDIUM,
577 IWL_FW_INI_DUMP_VERBOSE,
578};
579#endif