Linux Audio

Check our new training course

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