xref: /freebsd/sys/contrib/dev/iwlwifi/fw/api/dbg-tlv.h (revision a4128aad8503277614f2d214011ef60a19447b83)
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