• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /******************************************************************************
2  *
3  * This file is provided under a dual BSD/GPLv2 license.  When using or
4  * redistributing this file, you may do so under either license.
5  *
6  * GPL LICENSE SUMMARY
7  *
8  * Copyright (C) 2018 - 2020 Intel Corporation
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of version 2 of the GNU General Public License as
12  * published by the Free Software Foundation.
13  *
14  * This program is distributed in the hope that it will be useful, but
15  * WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17  * General Public License for more details.
18  *
19  * The full GNU General Public License is included in this distribution
20  * in the file called COPYING.
21  *
22  * Contact Information:
23  *  Intel Linux Wireless <linuxwifi@intel.com>
24  * Intel Corporation, 5200 N.E. Elam Young Parkway, Hillsboro, OR 97124-6497
25  *
26  * BSD LICENSE
27  *
28  * Copyright (C) 2018 - 2020 Intel Corporation
29  * All rights reserved.
30  *
31  * Redistribution and use in source and binary forms, with or without
32  * modification, are permitted provided that the following conditions
33  * are met:
34  *
35  *  * Redistributions of source code must retain the above copyright
36  *    notice, this list of conditions and the following disclaimer.
37  *  * Redistributions in binary form must reproduce the above copyright
38  *    notice, this list of conditions and the following disclaimer in
39  *    the documentation and/or other materials provided with the
40  *    distribution.
41  *  * Neither the name Intel Corporation nor the names of its
42  *    contributors may be used to endorse or promote products derived
43  *    from this software without specific prior written permission.
44  *
45  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
46  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
47  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
48  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
49  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
50  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
51  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
52  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
53  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
54  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
55  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
56  *
57  *****************************************************************************/
58 #ifndef __iwl_fw_dbg_tlv_h__
59 #define __iwl_fw_dbg_tlv_h__
60 
61 #include <linux/bitops.h>
62 
63 #define IWL_FW_INI_MAX_REGION_ID		64
64 #define IWL_FW_INI_MAX_NAME			32
65 #define IWL_FW_INI_MAX_CFG_NAME			64
66 #define IWL_FW_INI_DOMAIN_ALWAYS_ON		0
67 
68 /**
69  * struct iwl_fw_ini_hcmd
70  *
71  * @id: the debug configuration command type for instance: 0xf6 / 0xf5 / DHC
72  * @group: the desired cmd group
73  * @reserved: to align to FW struct
74  * @data: all of the relevant command data to be sent
75  */
76 struct iwl_fw_ini_hcmd {
77 	u8 id;
78 	u8 group;
79 	__le16 reserved;
80 	u8 data[0];
81 } __packed; /* FW_DEBUG_TLV_HCMD_DATA_API_S_VER_1 */
82 
83 /**
84  * struct iwl_fw_ini_header - Common Header for all ini debug TLV's structures
85  *
86  * @version: TLV version
87  * @domain: domain of the TLV. One of &enum iwl_fw_ini_dbg_domain
88  * @data: TLV data
89  */
90 struct iwl_fw_ini_header {
91 	__le32 version;
92 	__le32 domain;
93 	u8 data[];
94 } __packed; /* FW_TLV_DEBUG_HEADER_S_VER_1 */
95 
96 /**
97  * struct iwl_fw_ini_region_dev_addr - Configuration to read device addresses
98  *
99  * @size: size of each memory chunk
100  * @offset: offset to add to the base address of each chunk
101  */
102 struct iwl_fw_ini_region_dev_addr {
103 	__le32 size;
104 	__le32 offset;
105 } __packed; /* FW_TLV_DEBUG_DEVICE_ADDR_API_S_VER_1 */
106 
107 /**
108  * struct iwl_fw_ini_region_fifos - Configuration to read Tx/Rx fifos
109  *
110  * @fid: fifos ids array. Used to determine what fifos to collect
111  * @hdr_only: if non zero, collect only the registers
112  * @offset: offset to add to the registers addresses
113  */
114 struct iwl_fw_ini_region_fifos {
115 	__le32 fid[2];
116 	__le32 hdr_only;
117 	__le32 offset;
118 } __packed; /* FW_TLV_DEBUG_REGION_FIFOS_API_S_VER_1 */
119 
120 /**
121  * struct iwl_fw_ini_region_err_table - error table region data
122  *
123  * Configuration to read Umac/Lmac error table
124  *
125  * @version: version of the error table
126  * @base_addr: base address of the error table
127  * @size: size of the error table
128  * @offset: offset to add to &base_addr
129  */
130 struct iwl_fw_ini_region_err_table {
131 	__le32 version;
132 	__le32 base_addr;
133 	__le32 size;
134 	__le32 offset;
135 } __packed; /* FW_TLV_DEBUG_REGION_ERROR_TABLE_API_S_VER_1 */
136 
137 /**
138  * struct iwl_fw_ini_region_special_device_memory - special device memory
139  *
140  * Configuration to read a special memory
141  *
142  * @type: type of the special memory
143  * @version: version of the special memory
144  * @base_addr: base address of the error table
145  * @size: size of the error table
146  * @offset: offset to add to &base_addr
147  */
148 struct iwl_fw_ini_region_special_device_memory {
149 	__le16 type;
150 	__le16 version;
151 	__le32 base_addr;
152 	__le32 size;
153 	__le32 offset;
154 } __packed; /* FW_TLV_DEBUG_REGION_SPECIAL_DEVICE_ADDR_API_S_VER_1 */
155 
156 /**
157  * struct iwl_fw_ini_region_internal_buffer - internal buffer region data
158  *
159  * Configuration to read internal monitor buffer
160  *
161  * @alloc_id: allocation id one of &enum iwl_fw_ini_allocation_id
162  * @base_addr: internal buffer base address
163  * @size: size internal buffer size
164  */
165 struct iwl_fw_ini_region_internal_buffer {
166 	__le32 alloc_id;
167 	__le32 base_addr;
168 	__le32 size;
169 } __packed; /* FW_TLV_DEBUG_REGION_INTERNAL_BUFFER_API_S_VER_1 */
170 
171 /**
172  * struct iwl_fw_ini_region_tlv - region TLV
173  *
174  * Configures parameters for region data collection
175  *
176  * @hdr: debug header
177  * @id: region id. Max id is &IWL_FW_INI_MAX_REGION_ID
178  * @type: region type. One of &enum iwl_fw_ini_region_type
179  * @name: region name
180  * @dev_addr: device address configuration. Used by
181  *	&IWL_FW_INI_REGION_DEVICE_MEMORY, &IWL_FW_INI_REGION_PERIPHERY_MAC,
182  *	&IWL_FW_INI_REGION_PERIPHERY_PHY, &IWL_FW_INI_REGION_PERIPHERY_AUX,
183  *	&IWL_FW_INI_REGION_PAGING, &IWL_FW_INI_REGION_CSR,
184  *	&IWL_FW_INI_REGION_DRAM_IMR and &IWL_FW_INI_REGION_PCI_IOSF_CONFIG
185  * @fifos: fifos configuration. Used by &IWL_FW_INI_REGION_TXF and
186  *	&IWL_FW_INI_REGION_RXF
187  * @err_table: error table configuration. Used by
188  *	IWL_FW_INI_REGION_LMAC_ERROR_TABLE and
189  *	IWL_FW_INI_REGION_UMAC_ERROR_TABLE
190  * @internal_buffer: internal monitor buffer configuration. Used by
191  *	&IWL_FW_INI_REGION_INTERNAL_BUFFER
192  * @dram_alloc_id: dram allocation id. One of &enum iwl_fw_ini_allocation_id.
193  *	Used by &IWL_FW_INI_REGION_DRAM_BUFFER
194  * @tlv_mask: tlv collection mask. Used by &IWL_FW_INI_REGION_TLV
195  * @addrs: array of addresses attached to the end of the region tlv
196  */
197 struct iwl_fw_ini_region_tlv {
198 	struct iwl_fw_ini_header hdr;
199 	__le32 id;
200 	__le32 type;
201 	u8 name[IWL_FW_INI_MAX_NAME];
202 	union {
203 		struct iwl_fw_ini_region_dev_addr dev_addr;
204 		struct iwl_fw_ini_region_fifos fifos;
205 		struct iwl_fw_ini_region_err_table err_table;
206 		struct iwl_fw_ini_region_internal_buffer internal_buffer;
207 		struct iwl_fw_ini_region_special_device_memory special_mem;
208 		__le32 dram_alloc_id;
209 		__le32 tlv_mask;
210 	}; /* FW_TLV_DEBUG_REGION_CONF_PARAMS_API_U_VER_1 */
211 	__le32 addrs[];
212 } __packed; /* FW_TLV_DEBUG_REGION_API_S_VER_1 */
213 
214 /**
215  * struct iwl_fw_ini_debug_info_tlv
216  *
217  * debug configuration name for a specific image
218  *
219  * @hdr: debug header
220  * @image_type: image type
221  * @debug_cfg_name: debug configuration name
222  */
223 struct iwl_fw_ini_debug_info_tlv {
224 	struct iwl_fw_ini_header hdr;
225 	__le32 image_type;
226 	u8 debug_cfg_name[IWL_FW_INI_MAX_CFG_NAME];
227 } __packed; /* FW_TLV_DEBUG_INFO_API_S_VER_1 */
228 
229 /**
230  * struct iwl_fw_ini_allocation_tlv - Allocates DRAM buffers
231  *
232  * @hdr: debug header
233  * @alloc_id: allocation id. One of &enum iwl_fw_ini_allocation_id
234  * @buf_location: buffer location. One of &enum iwl_fw_ini_buffer_location
235  * @req_size: requested buffer size
236  * @max_frags_num: maximum number of fragments
237  * @min_size: minimum buffer size
238  */
239 struct iwl_fw_ini_allocation_tlv {
240 	struct iwl_fw_ini_header hdr;
241 	__le32 alloc_id;
242 	__le32 buf_location;
243 	__le32 req_size;
244 	__le32 max_frags_num;
245 	__le32 min_size;
246 } __packed; /* FW_TLV_DEBUG_BUFFER_ALLOCATION_API_S_VER_1 */
247 
248 /**
249  * struct iwl_fw_ini_trigger_tlv - trigger TLV
250  *
251  * Trigger that upon firing, determines what regions to collect
252  *
253  * @hdr: debug header
254  * @time_point: time point. One of &enum iwl_fw_ini_time_point
255  * @trigger_reason: trigger reason
256  * @apply_policy: uses &enum iwl_fw_ini_trigger_apply_policy
257  * @dump_delay: delay from trigger fire to dump, in usec
258  * @occurrences: max trigger fire occurrences allowed
259  * @reserved: unused
260  * @ignore_consec: ignore consecutive triggers, in usec
261  * @reset_fw: if non zero, will reset and reload the FW
262  * @multi_dut: initiate debug dump data on several DUTs
263  * @regions_mask: mask of regions to collect
264  * @data: trigger data
265  */
266 struct iwl_fw_ini_trigger_tlv {
267 	struct iwl_fw_ini_header hdr;
268 	__le32 time_point;
269 	__le32 trigger_reason;
270 	__le32 apply_policy;
271 	__le32 dump_delay;
272 	__le32 occurrences;
273 	__le32 reserved;
274 	__le32 ignore_consec;
275 	__le32 reset_fw;
276 	__le32 multi_dut;
277 	__le64 regions_mask;
278 	__le32 data[];
279 } __packed; /* FW_TLV_DEBUG_TRIGGER_API_S_VER_1 */
280 
281 /**
282  * struct iwl_fw_ini_hcmd_tlv - Generic Host command pass through TLV
283  *
284  * @hdr: debug header
285  * @time_point: time point. One of &enum iwl_fw_ini_time_point
286  * @period_msec: interval at which the hcmd will be sent to the FW.
287  *	Measured in msec (0 = one time command)
288  * @hcmd: a variable length host-command to be sent to apply the configuration
289  */
290 struct iwl_fw_ini_hcmd_tlv {
291 	struct iwl_fw_ini_header hdr;
292 	__le32 time_point;
293 	__le32 period_msec;
294 	struct iwl_fw_ini_hcmd hcmd;
295 } __packed; /* FW_TLV_DEBUG_HCMD_API_S_VER_1 */
296 
297 /**
298  * enum iwl_fw_ini_allocation_id
299  *
300  * @IWL_FW_INI_ALLOCATION_INVALID: invalid
301  * @IWL_FW_INI_ALLOCATION_ID_DBGC1: allocation meant for DBGC1 configuration
302  * @IWL_FW_INI_ALLOCATION_ID_DBGC2: allocation meant for DBGC2 configuration
303  * @IWL_FW_INI_ALLOCATION_ID_DBGC3: allocation meant for DBGC3 configuration
304  * @IWL_FW_INI_ALLOCATION_ID_INTERNAL: allocation meant for Intreanl SMEM in D3
305  * @IWL_FW_INI_ALLOCATION_NUM: number of allocation ids
306 */
307 enum iwl_fw_ini_allocation_id {
308 	IWL_FW_INI_ALLOCATION_INVALID,
309 	IWL_FW_INI_ALLOCATION_ID_DBGC1,
310 	IWL_FW_INI_ALLOCATION_ID_DBGC2,
311 	IWL_FW_INI_ALLOCATION_ID_DBGC3,
312 	IWL_FW_INI_ALLOCATION_ID_INTERNAL,
313 	IWL_FW_INI_ALLOCATION_NUM,
314 }; /* FW_DEBUG_TLV_ALLOCATION_ID_E_VER_1 */
315 
316 /**
317  * enum iwl_fw_ini_buffer_location
318  *
319  * @IWL_FW_INI_LOCATION_INVALID: invalid
320  * @IWL_FW_INI_LOCATION_SRAM_PATH: SRAM location
321  * @IWL_FW_INI_LOCATION_DRAM_PATH: DRAM location
322  * @IWL_FW_INI_LOCATION_NPK_PATH: NPK location
323  */
324 enum iwl_fw_ini_buffer_location {
325 	IWL_FW_INI_LOCATION_INVALID,
326 	IWL_FW_INI_LOCATION_SRAM_PATH,
327 	IWL_FW_INI_LOCATION_DRAM_PATH,
328 	IWL_FW_INI_LOCATION_NPK_PATH,
329 	IWL_FW_INI_LOCATION_NUM,
330 }; /* FW_DEBUG_TLV_BUFFER_LOCATION_E_VER_1 */
331 
332 /**
333  * enum iwl_fw_ini_region_type
334  *
335  * @IWL_FW_INI_REGION_INVALID: invalid
336  * @IWL_FW_INI_REGION_TLV: uCode and debug TLVs
337  * @IWL_FW_INI_REGION_INTERNAL_BUFFER: monitor SMEM buffer
338  * @IWL_FW_INI_REGION_DRAM_BUFFER: monitor DRAM buffer
339  * @IWL_FW_INI_REGION_TXF: TX fifos
340  * @IWL_FW_INI_REGION_RXF: RX fifo
341  * @IWL_FW_INI_REGION_LMAC_ERROR_TABLE: lmac error table
342  * @IWL_FW_INI_REGION_UMAC_ERROR_TABLE: umac error table
343  * @IWL_FW_INI_REGION_RSP_OR_NOTIF: FW response or notification data
344  * @IWL_FW_INI_REGION_DEVICE_MEMORY: device internal memory
345  * @IWL_FW_INI_REGION_PERIPHERY_MAC: periphery registers of MAC
346  * @IWL_FW_INI_REGION_PERIPHERY_PHY: periphery registers of PHY
347  * @IWL_FW_INI_REGION_PERIPHERY_AUX: periphery registers of AUX
348  * @IWL_FW_INI_REGION_PAGING: paging memory
349  * @IWL_FW_INI_REGION_CSR: CSR registers
350  * @IWL_FW_INI_REGION_DRAM_IMR: IMR memory
351  * @IWL_FW_INI_REGION_PCI_IOSF_CONFIG: PCI/IOSF config
352  * @IWL_FW_INI_REGION_SPECIAL_DEVICE_MEMORY: special device memory
353  * @IWL_FW_INI_REGION_NUM: number of region types
354  */
355 enum iwl_fw_ini_region_type {
356 	IWL_FW_INI_REGION_INVALID,
357 	IWL_FW_INI_REGION_TLV,
358 	IWL_FW_INI_REGION_INTERNAL_BUFFER,
359 	IWL_FW_INI_REGION_DRAM_BUFFER,
360 	IWL_FW_INI_REGION_TXF,
361 	IWL_FW_INI_REGION_RXF,
362 	IWL_FW_INI_REGION_LMAC_ERROR_TABLE,
363 	IWL_FW_INI_REGION_UMAC_ERROR_TABLE,
364 	IWL_FW_INI_REGION_RSP_OR_NOTIF,
365 	IWL_FW_INI_REGION_DEVICE_MEMORY,
366 	IWL_FW_INI_REGION_PERIPHERY_MAC,
367 	IWL_FW_INI_REGION_PERIPHERY_PHY,
368 	IWL_FW_INI_REGION_PERIPHERY_AUX,
369 	IWL_FW_INI_REGION_PAGING,
370 	IWL_FW_INI_REGION_CSR,
371 	IWL_FW_INI_REGION_DRAM_IMR,
372 	IWL_FW_INI_REGION_PCI_IOSF_CONFIG,
373 	IWL_FW_INI_REGION_SPECIAL_DEVICE_MEMORY,
374 	IWL_FW_INI_REGION_NUM
375 }; /* FW_TLV_DEBUG_REGION_TYPE_API_E */
376 
377 /**
378  * enum iwl_fw_ini_time_point
379  *
380  * Hard coded time points in which the driver can send hcmd or perform dump
381  * collection
382  *
383  * @IWL_FW_INI_TIME_POINT_EARLY: pre loading the FW
384  * @IWL_FW_INI_TIME_POINT_AFTER_ALIVE: first cmd from host after alive notif
385  * @IWL_FW_INI_TIME_POINT_POST_INIT: last cmd in series of init sequence
386  * @IWL_FW_INI_TIME_POINT_FW_ASSERT: FW assert
387  * @IWL_FW_INI_TIME_POINT_FW_HW_ERROR: FW HW error
388  * @IWL_FW_INI_TIME_POINT_FW_TFD_Q_HANG: TFD queue hang
389  * @IWL_FW_INI_TIME_POINT_FW_DHC_NOTIFICATION: DHC cmd response and notif
390  * @IWL_FW_INI_TIME_POINT_FW_RSP_OR_NOTIF: FW response or notification.
391  *	data field holds id and group
392  * @IWL_FW_INI_TIME_POINT_USER_TRIGGER: user trigger time point
393  * @IWL_FW_INI_TIME_POINT_PERIODIC: periodic timepoint that fires in constant
394  *	intervals. data field holds the interval time in msec
395  * @IWL_FW_INI_TIME_POINT_RESERVED: reserved
396  * @IWL_FW_INI_TIME_POINT_HOST_ASSERT: Unused
397  * @IWL_FW_INI_TIME_POINT_HOST_ALIVE_TIMEOUT: alive timeout
398  * @IWL_FW_INI_TIME_POINT_HOST_DEVICE_ENABLE: device enable
399  * @IWL_FW_INI_TIME_POINT_HOST_DEVICE_DISABLE: device disable
400  * @IWL_FW_INI_TIME_POINT_HOST_D3_START: D3 start
401  * @IWL_FW_INI_TIME_POINT_HOST_D3_END: D3 end
402  * @IWL_FW_INI_TIME_POINT_MISSED_BEACONS: missed beacons
403  * @IWL_FW_INI_TIME_POINT_ASSOC_FAILED: association failure
404  * @IWL_FW_INI_TIME_POINT_TX_FAILED: Tx frame failed
405  * @IWL_FW_INI_TIME_POINT_TX_WFD_ACTION_FRAME_FAILED: wifi direct action
406  *	frame failed
407  * @IWL_FW_INI_TIME_POINT_TX_LATENCY_THRESHOLD: Tx latency threshold
408  * @IWL_FW_INI_TIME_POINT_HANG_OCCURRED: hang occurred
409  * @IWL_FW_INI_TIME_POINT_EAPOL_FAILED: EAPOL failed
410  * @IWL_FW_INI_TIME_POINT_FAKE_TX: fake Tx
411  * @IWL_FW_INI_TIME_POINT_DEASSOC: de association
412  * @IWL_FW_INI_TIME_POINT_NUM: number of time points
413  */
414 enum iwl_fw_ini_time_point {
415 	IWL_FW_INI_TIME_POINT_INVALID,
416 	IWL_FW_INI_TIME_POINT_EARLY,
417 	IWL_FW_INI_TIME_POINT_AFTER_ALIVE,
418 	IWL_FW_INI_TIME_POINT_POST_INIT,
419 	IWL_FW_INI_TIME_POINT_FW_ASSERT,
420 	IWL_FW_INI_TIME_POINT_FW_HW_ERROR,
421 	IWL_FW_INI_TIME_POINT_FW_TFD_Q_HANG,
422 	IWL_FW_INI_TIME_POINT_FW_DHC_NOTIFICATION,
423 	IWL_FW_INI_TIME_POINT_FW_RSP_OR_NOTIF,
424 	IWL_FW_INI_TIME_POINT_USER_TRIGGER,
425 	IWL_FW_INI_TIME_POINT_PERIODIC,
426 	IWL_FW_INI_TIME_POINT_RESERVED,
427 	IWL_FW_INI_TIME_POINT_HOST_ASSERT,
428 	IWL_FW_INI_TIME_POINT_HOST_ALIVE_TIMEOUT,
429 	IWL_FW_INI_TIME_POINT_HOST_DEVICE_ENABLE,
430 	IWL_FW_INI_TIME_POINT_HOST_DEVICE_DISABLE,
431 	IWL_FW_INI_TIME_POINT_HOST_D3_START,
432 	IWL_FW_INI_TIME_POINT_HOST_D3_END,
433 	IWL_FW_INI_TIME_POINT_MISSED_BEACONS,
434 	IWL_FW_INI_TIME_POINT_ASSOC_FAILED,
435 	IWL_FW_INI_TIME_POINT_TX_FAILED,
436 	IWL_FW_INI_TIME_POINT_TX_WFD_ACTION_FRAME_FAILED,
437 	IWL_FW_INI_TIME_POINT_TX_LATENCY_THRESHOLD,
438 	IWL_FW_INI_TIME_POINT_HANG_OCCURRED,
439 	IWL_FW_INI_TIME_POINT_EAPOL_FAILED,
440 	IWL_FW_INI_TIME_POINT_FAKE_TX,
441 	IWL_FW_INI_TIME_POINT_DEASSOC,
442 	IWL_FW_INI_TIME_POINT_NUM,
443 }; /* FW_TLV_DEBUG_TIME_POINT_API_E */
444 
445 /**
446  * enum iwl_fw_ini_trigger_apply_policy - Determines how to apply triggers
447  *
448  * @IWL_FW_INI_APPLY_POLICY_MATCH_TIME_POINT: match by time point
449  * @IWL_FW_INI_APPLY_POLICY_MATCH_DATA: match by trigger data
450  * @IWL_FW_INI_APPLY_POLICY_OVERRIDE_REGIONS: override regions mask.
451  *	Append otherwise
452  * @IWL_FW_INI_APPLY_POLICY_OVERRIDE_CFG: override trigger configuration
453  * @IWL_FW_INI_APPLY_POLICY_OVERRIDE_DATA: override trigger data.
454  *	Append otherwise
455  */
456 enum iwl_fw_ini_trigger_apply_policy {
457 	IWL_FW_INI_APPLY_POLICY_MATCH_TIME_POINT	= BIT(0),
458 	IWL_FW_INI_APPLY_POLICY_MATCH_DATA		= BIT(1),
459 	IWL_FW_INI_APPLY_POLICY_OVERRIDE_REGIONS	= BIT(8),
460 	IWL_FW_INI_APPLY_POLICY_OVERRIDE_CFG		= BIT(9),
461 	IWL_FW_INI_APPLY_POLICY_OVERRIDE_DATA		= BIT(10),
462 };
463 #endif
464