cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

dbg-tlv.h (18540B)


      1/* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */
      2/*
      3 * Copyright (C) 2018-2022 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
     17/**
     18 * struct iwl_fw_ini_hcmd
     19 *
     20 * @id: the debug configuration command type for instance: 0xf6 / 0xf5 / DHC
     21 * @group: the desired cmd group
     22 * @reserved: to align to FW struct
     23 * @data: all of the relevant command data to be sent
     24 */
     25struct iwl_fw_ini_hcmd {
     26	u8 id;
     27	u8 group;
     28	__le16 reserved;
     29	u8 data[];
     30} __packed; /* FW_DEBUG_TLV_HCMD_DATA_API_S_VER_1 */
     31
     32/**
     33 * struct iwl_fw_ini_header - Common Header for all ini debug TLV's structures
     34 *
     35 * @version: TLV version
     36 * @domain: domain of the TLV. One of &enum iwl_fw_ini_dbg_domain
     37 */
     38struct iwl_fw_ini_header {
     39	__le32 version;
     40	__le32 domain;
     41	/* followed by the data */
     42} __packed; /* FW_TLV_DEBUG_HEADER_S_VER_1 */
     43
     44/**
     45 * struct iwl_fw_ini_region_dev_addr - Configuration to read device addresses
     46 *
     47 * @size: size of each memory chunk
     48 * @offset: offset to add to the base address of each chunk
     49 */
     50struct iwl_fw_ini_region_dev_addr {
     51	__le32 size;
     52	__le32 offset;
     53} __packed; /* FW_TLV_DEBUG_DEVICE_ADDR_API_S_VER_1 */
     54
     55/**
     56 * struct iwl_fw_ini_region_fifos - Configuration to read Tx/Rx fifos
     57 *
     58 * @fid: fifos ids array. Used to determine what fifos to collect
     59 * @hdr_only: if non zero, collect only the registers
     60 * @offset: offset to add to the registers addresses
     61 */
     62struct iwl_fw_ini_region_fifos {
     63	__le32 fid[2];
     64	__le32 hdr_only;
     65	__le32 offset;
     66} __packed; /* FW_TLV_DEBUG_REGION_FIFOS_API_S_VER_1 */
     67
     68/**
     69 * struct iwl_fw_ini_region_err_table - error table region data
     70 *
     71 * Configuration to read Umac/Lmac error table
     72 *
     73 * @version: version of the error table
     74 * @base_addr: base address of the error table
     75 * @size: size of the error table
     76 * @offset: offset to add to &base_addr
     77 */
     78struct iwl_fw_ini_region_err_table {
     79	__le32 version;
     80	__le32 base_addr;
     81	__le32 size;
     82	__le32 offset;
     83} __packed; /* FW_TLV_DEBUG_REGION_ERROR_TABLE_API_S_VER_1 */
     84
     85/**
     86 * struct iwl_fw_ini_region_special_device_memory - special device memory
     87 *
     88 * Configuration to read a special memory
     89 *
     90 * @type: type of the special memory
     91 * @version: version of the special memory
     92 * @base_addr: base address of the error table
     93 * @size: size of the error table
     94 * @offset: offset to add to &base_addr
     95 */
     96struct iwl_fw_ini_region_special_device_memory {
     97	__le16 type;
     98	__le16 version;
     99	__le32 base_addr;
    100	__le32 size;
    101	__le32 offset;
    102} __packed; /* FW_TLV_DEBUG_REGION_SPECIAL_DEVICE_ADDR_API_S_VER_1 */
    103
    104/**
    105 * struct iwl_fw_ini_region_internal_buffer - internal buffer region data
    106 *
    107 * Configuration to read internal monitor buffer
    108 *
    109 * @alloc_id: allocation id one of &enum iwl_fw_ini_allocation_id
    110 * @base_addr: internal buffer base address
    111 * @size: size internal buffer size
    112 */
    113struct iwl_fw_ini_region_internal_buffer {
    114	__le32 alloc_id;
    115	__le32 base_addr;
    116	__le32 size;
    117} __packed; /* FW_TLV_DEBUG_REGION_INTERNAL_BUFFER_API_S_VER_1 */
    118
    119/**
    120 * struct iwl_fw_ini_region_tlv - region TLV
    121 *
    122 * Configures parameters for region data collection
    123 *
    124 * @hdr: debug header
    125 * @id: region id. Max id is &IWL_FW_INI_MAX_REGION_ID
    126 * @type: region type. One of &enum iwl_fw_ini_region_type
    127 * @sub_type: region sub type
    128 * @sub_type_ver: region sub type version
    129 * @reserved: not in use
    130 * @name: region name
    131 * @dev_addr: device address configuration. Used by
    132 *	&IWL_FW_INI_REGION_DEVICE_MEMORY, &IWL_FW_INI_REGION_PERIPHERY_MAC,
    133 *	&IWL_FW_INI_REGION_PERIPHERY_PHY, &IWL_FW_INI_REGION_PERIPHERY_AUX,
    134 *	&IWL_FW_INI_REGION_PAGING, &IWL_FW_INI_REGION_CSR,
    135 *	&IWL_FW_INI_REGION_DRAM_IMR and &IWL_FW_INI_REGION_PCI_IOSF_CONFIG
    136 *	&IWL_FW_INI_REGION_DBGI_SRAM, &FW_TLV_DEBUG_REGION_TYPE_DBGI_SRAM,
    137 * @fifos: fifos configuration. Used by &IWL_FW_INI_REGION_TXF and
    138 *	&IWL_FW_INI_REGION_RXF
    139 * @err_table: error table configuration. Used by
    140 *	IWL_FW_INI_REGION_LMAC_ERROR_TABLE and
    141 *	IWL_FW_INI_REGION_UMAC_ERROR_TABLE
    142 * @internal_buffer: internal monitor buffer configuration. Used by
    143 *	&IWL_FW_INI_REGION_INTERNAL_BUFFER
    144 * @dram_alloc_id: dram allocation id. One of &enum iwl_fw_ini_allocation_id.
    145 *	Used by &IWL_FW_INI_REGION_DRAM_BUFFER
    146 * @tlv_mask: tlv collection mask. Used by &IWL_FW_INI_REGION_TLV
    147 * @addrs: array of addresses attached to the end of the region tlv
    148 */
    149struct iwl_fw_ini_region_tlv {
    150	struct iwl_fw_ini_header hdr;
    151	__le32 id;
    152	u8 type;
    153	u8 sub_type;
    154	u8 sub_type_ver;
    155	u8 reserved;
    156	u8 name[IWL_FW_INI_MAX_NAME];
    157	union {
    158		struct iwl_fw_ini_region_dev_addr dev_addr;
    159		struct iwl_fw_ini_region_fifos fifos;
    160		struct iwl_fw_ini_region_err_table err_table;
    161		struct iwl_fw_ini_region_internal_buffer internal_buffer;
    162		struct iwl_fw_ini_region_special_device_memory special_mem;
    163		__le32 dram_alloc_id;
    164		__le32 tlv_mask;
    165	}; /* FW_TLV_DEBUG_REGION_CONF_PARAMS_API_U_VER_1 */
    166	__le32 addrs[];
    167} __packed; /* FW_TLV_DEBUG_REGION_API_S_VER_1 */
    168
    169/**
    170 * struct iwl_fw_ini_debug_info_tlv
    171 *
    172 * debug configuration name for a specific image
    173 *
    174 * @hdr: debug header
    175 * @image_type: image type
    176 * @debug_cfg_name: debug configuration name
    177 */
    178struct iwl_fw_ini_debug_info_tlv {
    179	struct iwl_fw_ini_header hdr;
    180	__le32 image_type;
    181	u8 debug_cfg_name[IWL_FW_INI_MAX_CFG_NAME];
    182} __packed; /* FW_TLV_DEBUG_INFO_API_S_VER_1 */
    183
    184/**
    185 * struct iwl_fw_ini_allocation_tlv - Allocates DRAM buffers
    186 *
    187 * @hdr: debug header
    188 * @alloc_id: allocation id. One of &enum iwl_fw_ini_allocation_id
    189 * @buf_location: buffer location. One of &enum iwl_fw_ini_buffer_location
    190 * @req_size: requested buffer size
    191 * @max_frags_num: maximum number of fragments
    192 * @min_size: minimum buffer size
    193 */
    194struct iwl_fw_ini_allocation_tlv {
    195	struct iwl_fw_ini_header hdr;
    196	__le32 alloc_id;
    197	__le32 buf_location;
    198	__le32 req_size;
    199	__le32 max_frags_num;
    200	__le32 min_size;
    201} __packed; /* FW_TLV_DEBUG_BUFFER_ALLOCATION_API_S_VER_1 */
    202
    203/**
    204 * struct iwl_fw_ini_trigger_tlv - trigger TLV
    205 *
    206 * Trigger that upon firing, determines what regions to collect
    207 *
    208 * @hdr: debug header
    209 * @time_point: time point. One of &enum iwl_fw_ini_time_point
    210 * @trigger_reason: trigger reason
    211 * @apply_policy: uses &enum iwl_fw_ini_trigger_apply_policy
    212 * @dump_delay: delay from trigger fire to dump, in usec
    213 * @occurrences: max trigger fire occurrences allowed
    214 * @reserved: unused
    215 * @ignore_consec: ignore consecutive triggers, in usec
    216 * @reset_fw: if non zero, will reset and reload the FW
    217 * @multi_dut: initiate debug dump data on several DUTs
    218 * @regions_mask: mask of regions to collect
    219 * @data: trigger data
    220 */
    221struct iwl_fw_ini_trigger_tlv {
    222	struct iwl_fw_ini_header hdr;
    223	__le32 time_point;
    224	__le32 trigger_reason;
    225	__le32 apply_policy;
    226	__le32 dump_delay;
    227	__le32 occurrences;
    228	__le32 reserved;
    229	__le32 ignore_consec;
    230	__le32 reset_fw;
    231	__le32 multi_dut;
    232	__le64 regions_mask;
    233	__le32 data[];
    234} __packed; /* FW_TLV_DEBUG_TRIGGER_API_S_VER_1 */
    235
    236/**
    237 * struct iwl_fw_ini_hcmd_tlv - Generic Host command pass through TLV
    238 *
    239 * @hdr: debug header
    240 * @time_point: time point. One of &enum iwl_fw_ini_time_point
    241 * @period_msec: interval at which the hcmd will be sent to the FW.
    242 *	Measured in msec (0 = one time command)
    243 * @hcmd: a variable length host-command to be sent to apply the configuration
    244 */
    245struct iwl_fw_ini_hcmd_tlv {
    246	struct iwl_fw_ini_header hdr;
    247	__le32 time_point;
    248	__le32 period_msec;
    249	struct iwl_fw_ini_hcmd hcmd;
    250} __packed; /* FW_TLV_DEBUG_HCMD_API_S_VER_1 */
    251
    252/**
    253* struct iwl_fw_ini_addr_val - Address and value to set it to
    254*
    255* @address: the base address
    256* @value: value to set at address
    257*/
    258struct iwl_fw_ini_addr_val {
    259	__le32 address;
    260	__le32 value;
    261} __packed; /* FW_TLV_DEBUG_ADDR_VALUE_VER_1 */
    262
    263/**
    264 * struct iwl_fw_ini_conf_tlv - configuration TLV to set register/memory.
    265 *
    266 * @hdr: debug header
    267 * @time_point: time point to apply config. One of &enum iwl_fw_ini_time_point
    268 * @set_type: write access type preset token for time point.
    269 *  one of &enum iwl_fw_ini_config_set_type
    270 * @addr_offset: the offset to add to any item in address[0] field
    271 * @addr_val: address value pair
    272 */
    273struct iwl_fw_ini_conf_set_tlv {
    274	struct iwl_fw_ini_header hdr;
    275	__le32 time_point;
    276	__le32 set_type;
    277	__le32 addr_offset;
    278	struct iwl_fw_ini_addr_val addr_val[];
    279} __packed; /* FW_TLV_DEBUG_CONFIG_SET_API_S_VER_1 */
    280
    281/**
    282 * enum iwl_fw_ini_config_set_type
    283 *
    284 * @IWL_FW_INI_CONFIG_SET_TYPE_INVALID: invalid config set
    285 * @IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_PERIPHERY_MAC: for PERIPHERY MAC configuration
    286 * @IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_PERIPHERY_PHY: for PERIPHERY PHY configuration
    287 * @IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_PERIPHERY_AUX: for PERIPHERY AUX configuration
    288 * @IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_MEMORY: for DEVICE MEMORY configuration
    289 * @IWL_FW_INI_CONFIG_SET_TYPE_CSR: for CSR configuration
    290 * @IWL_FW_INI_CONFIG_SET_TYPE_DBGC_DRAM_ADDR: for DBGC_DRAM_ADDR configuration
    291 * @IWL_FW_INI_CONFIG_SET_TYPE_PERIPH_SCRATCH_HWM: for PERIPH SCRATCH HWM configuration
    292 * @IWL_FW_INI_ALLOCATION_NUM: max number of configuration supported
    293*/
    294
    295enum iwl_fw_ini_config_set_type {
    296	IWL_FW_INI_CONFIG_SET_TYPE_INVALID = 0,
    297	IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_PERIPHERY_MAC,
    298	IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_PERIPHERY_PHY,
    299	IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_PERIPHERY_AUX,
    300	IWL_FW_INI_CONFIG_SET_TYPE_DEVICE_MEMORY,
    301	IWL_FW_INI_CONFIG_SET_TYPE_CSR,
    302	IWL_FW_INI_CONFIG_SET_TYPE_DBGC_DRAM_ADDR,
    303	IWL_FW_INI_CONFIG_SET_TYPE_PERIPH_SCRATCH_HWM,
    304	IWL_FW_INI_CONFIG_SET_TYPE_MAX_NUM,
    305} __packed;
    306
    307/**
    308 * enum iwl_fw_ini_allocation_id
    309 *
    310 * @IWL_FW_INI_ALLOCATION_INVALID: invalid
    311 * @IWL_FW_INI_ALLOCATION_ID_DBGC1: allocation meant for DBGC1 configuration
    312 * @IWL_FW_INI_ALLOCATION_ID_DBGC2: allocation meant for DBGC2 configuration
    313 * @IWL_FW_INI_ALLOCATION_ID_DBGC3: allocation meant for DBGC3 configuration
    314 * @IWL_FW_INI_ALLOCATION_ID_DBGC4: allocation meant for DBGC4 configuration
    315 * @IWL_FW_INI_ALLOCATION_NUM: number of allocation ids
    316*/
    317enum iwl_fw_ini_allocation_id {
    318	IWL_FW_INI_ALLOCATION_INVALID,
    319	IWL_FW_INI_ALLOCATION_ID_DBGC1,
    320	IWL_FW_INI_ALLOCATION_ID_DBGC2,
    321	IWL_FW_INI_ALLOCATION_ID_DBGC3,
    322	IWL_FW_INI_ALLOCATION_ID_DBGC4,
    323	IWL_FW_INI_ALLOCATION_NUM,
    324}; /* FW_DEBUG_TLV_ALLOCATION_ID_E_VER_1 */
    325
    326/**
    327 * enum iwl_fw_ini_buffer_location
    328 *
    329 * @IWL_FW_INI_LOCATION_INVALID: invalid
    330 * @IWL_FW_INI_LOCATION_SRAM_PATH: SRAM location
    331 * @IWL_FW_INI_LOCATION_DRAM_PATH: DRAM location
    332 * @IWL_FW_INI_LOCATION_NPK_PATH: NPK location
    333 */
    334enum iwl_fw_ini_buffer_location {
    335	IWL_FW_INI_LOCATION_INVALID,
    336	IWL_FW_INI_LOCATION_SRAM_PATH,
    337	IWL_FW_INI_LOCATION_DRAM_PATH,
    338	IWL_FW_INI_LOCATION_NPK_PATH,
    339	IWL_FW_INI_LOCATION_NUM,
    340}; /* FW_DEBUG_TLV_BUFFER_LOCATION_E_VER_1 */
    341
    342/**
    343 * enum iwl_fw_ini_region_type
    344 *
    345 * @IWL_FW_INI_REGION_INVALID: invalid
    346 * @IWL_FW_INI_REGION_TLV: uCode and debug TLVs
    347 * @IWL_FW_INI_REGION_INTERNAL_BUFFER: monitor SMEM buffer
    348 * @IWL_FW_INI_REGION_DRAM_BUFFER: monitor DRAM buffer
    349 * @IWL_FW_INI_REGION_TXF: TX fifos
    350 * @IWL_FW_INI_REGION_RXF: RX fifo
    351 * @IWL_FW_INI_REGION_LMAC_ERROR_TABLE: lmac error table
    352 * @IWL_FW_INI_REGION_UMAC_ERROR_TABLE: umac error table
    353 * @IWL_FW_INI_REGION_RSP_OR_NOTIF: FW response or notification data
    354 * @IWL_FW_INI_REGION_DEVICE_MEMORY: device internal memory
    355 * @IWL_FW_INI_REGION_PERIPHERY_MAC: periphery registers of MAC
    356 * @IWL_FW_INI_REGION_PERIPHERY_PHY: periphery registers of PHY
    357 * @IWL_FW_INI_REGION_PERIPHERY_AUX: periphery registers of AUX
    358 * @IWL_FW_INI_REGION_PAGING: paging memory
    359 * @IWL_FW_INI_REGION_CSR: CSR registers
    360 * @IWL_FW_INI_REGION_DRAM_IMR: IMR memory
    361 * @IWL_FW_INI_REGION_PCI_IOSF_CONFIG: PCI/IOSF config
    362 * @IWL_FW_INI_REGION_SPECIAL_DEVICE_MEMORY: special device memory
    363 * @IWL_FW_INI_REGION_DBGI_SRAM: periphery registers of DBGI SRAM
    364 * @IWL_FW_INI_REGION_NUM: number of region types
    365 */
    366enum iwl_fw_ini_region_type {
    367	IWL_FW_INI_REGION_INVALID,
    368	IWL_FW_INI_REGION_TLV,
    369	IWL_FW_INI_REGION_INTERNAL_BUFFER,
    370	IWL_FW_INI_REGION_DRAM_BUFFER,
    371	IWL_FW_INI_REGION_TXF,
    372	IWL_FW_INI_REGION_RXF,
    373	IWL_FW_INI_REGION_LMAC_ERROR_TABLE,
    374	IWL_FW_INI_REGION_UMAC_ERROR_TABLE,
    375	IWL_FW_INI_REGION_RSP_OR_NOTIF,
    376	IWL_FW_INI_REGION_DEVICE_MEMORY,
    377	IWL_FW_INI_REGION_PERIPHERY_MAC,
    378	IWL_FW_INI_REGION_PERIPHERY_PHY,
    379	IWL_FW_INI_REGION_PERIPHERY_AUX,
    380	IWL_FW_INI_REGION_PAGING,
    381	IWL_FW_INI_REGION_CSR,
    382	IWL_FW_INI_REGION_DRAM_IMR,
    383	IWL_FW_INI_REGION_PCI_IOSF_CONFIG,
    384	IWL_FW_INI_REGION_SPECIAL_DEVICE_MEMORY,
    385	IWL_FW_INI_REGION_DBGI_SRAM,
    386	IWL_FW_INI_REGION_NUM
    387}; /* FW_TLV_DEBUG_REGION_TYPE_API_E */
    388
    389enum iwl_fw_ini_region_device_memory_subtype {
    390	IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_HW_SMEM = 1,
    391	IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_UMAC_ERROR_TABLE = 5,
    392	IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_LMAC_1_ERROR_TABLE = 7,
    393	IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_LMAC_2_ERROR_TABLE = 10,
    394	IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_TCM_1_ERROR_TABLE = 14,
    395	IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_TCM_2_ERROR_TABLE = 16,
    396	IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_RCM_1_ERROR_TABLE = 18,
    397	IWL_FW_INI_REGION_DEVICE_MEMORY_SUBTYPE_RCM_2_ERROR_TABLE = 20,
    398}; /* FW_TLV_DEBUG_REGION_DEVICE_MEMORY_SUBTYPE_API_E */
    399
    400/**
    401 * enum iwl_fw_ini_time_point
    402 *
    403 * Hard coded time points in which the driver can send hcmd or perform dump
    404 * collection
    405 *
    406 * @IWL_FW_INI_TIME_POINT_EARLY: pre loading the FW
    407 * @IWL_FW_INI_TIME_POINT_AFTER_ALIVE: first cmd from host after alive notif
    408 * @IWL_FW_INI_TIME_POINT_POST_INIT: last cmd in series of init sequence
    409 * @IWL_FW_INI_TIME_POINT_FW_ASSERT: FW assert
    410 * @IWL_FW_INI_TIME_POINT_FW_HW_ERROR: FW HW error
    411 * @IWL_FW_INI_TIME_POINT_FW_TFD_Q_HANG: TFD queue hang
    412 * @IWL_FW_INI_TIME_POINT_FW_DHC_NOTIFICATION: DHC cmd response and notif
    413 * @IWL_FW_INI_TIME_POINT_FW_RSP_OR_NOTIF: FW response or notification.
    414 *	data field holds id and group
    415 * @IWL_FW_INI_TIME_POINT_USER_TRIGGER: user trigger time point
    416 * @IWL_FW_INI_TIME_POINT_PERIODIC: periodic timepoint that fires in constant
    417 *	intervals. data field holds the interval time in msec
    418 * @IWL_FW_INI_TIME_POINT_RESERVED: reserved
    419 * @IWL_FW_INI_TIME_POINT_HOST_ASSERT: Unused
    420 * @IWL_FW_INI_TIME_POINT_HOST_ALIVE_TIMEOUT: alive timeout
    421 * @IWL_FW_INI_TIME_POINT_HOST_DEVICE_ENABLE: device enable
    422 * @IWL_FW_INI_TIME_POINT_HOST_DEVICE_DISABLE: device disable
    423 * @IWL_FW_INI_TIME_POINT_HOST_D3_START: D3 start
    424 * @IWL_FW_INI_TIME_POINT_HOST_D3_END: D3 end
    425 * @IWL_FW_INI_TIME_POINT_MISSED_BEACONS: missed beacons
    426 * @IWL_FW_INI_TIME_POINT_ASSOC_FAILED: association failure
    427 * @IWL_FW_INI_TIME_POINT_TX_FAILED: Tx frame failed
    428 * @IWL_FW_INI_TIME_POINT_TX_WFD_ACTION_FRAME_FAILED: wifi direct action
    429 *	frame failed
    430 * @IWL_FW_INI_TIME_POINT_TX_LATENCY_THRESHOLD: Tx latency threshold
    431 * @IWL_FW_INI_TIME_POINT_HANG_OCCURRED: hang occurred
    432 * @IWL_FW_INI_TIME_POINT_EAPOL_FAILED: EAPOL failed
    433 * @IWL_FW_INI_TIME_POINT_FAKE_TX: fake Tx
    434 * @IWL_FW_INI_TIME_POINT_DEASSOC: de association
    435 * @IWL_FW_INI_TIME_POINT_NUM: number of time points
    436 */
    437enum iwl_fw_ini_time_point {
    438	IWL_FW_INI_TIME_POINT_INVALID,
    439	IWL_FW_INI_TIME_POINT_EARLY,
    440	IWL_FW_INI_TIME_POINT_AFTER_ALIVE,
    441	IWL_FW_INI_TIME_POINT_POST_INIT,
    442	IWL_FW_INI_TIME_POINT_FW_ASSERT,
    443	IWL_FW_INI_TIME_POINT_FW_HW_ERROR,
    444	IWL_FW_INI_TIME_POINT_FW_TFD_Q_HANG,
    445	IWL_FW_INI_TIME_POINT_FW_DHC_NOTIFICATION,
    446	IWL_FW_INI_TIME_POINT_FW_RSP_OR_NOTIF,
    447	IWL_FW_INI_TIME_POINT_USER_TRIGGER,
    448	IWL_FW_INI_TIME_POINT_PERIODIC,
    449	IWL_FW_INI_TIME_POINT_RESERVED,
    450	IWL_FW_INI_TIME_POINT_HOST_ASSERT,
    451	IWL_FW_INI_TIME_POINT_HOST_ALIVE_TIMEOUT,
    452	IWL_FW_INI_TIME_POINT_HOST_DEVICE_ENABLE,
    453	IWL_FW_INI_TIME_POINT_HOST_DEVICE_DISABLE,
    454	IWL_FW_INI_TIME_POINT_HOST_D3_START,
    455	IWL_FW_INI_TIME_POINT_HOST_D3_END,
    456	IWL_FW_INI_TIME_POINT_MISSED_BEACONS,
    457	IWL_FW_INI_TIME_POINT_ASSOC_FAILED,
    458	IWL_FW_INI_TIME_POINT_TX_FAILED,
    459	IWL_FW_INI_TIME_POINT_TX_WFD_ACTION_FRAME_FAILED,
    460	IWL_FW_INI_TIME_POINT_TX_LATENCY_THRESHOLD,
    461	IWL_FW_INI_TIME_POINT_HANG_OCCURRED,
    462	IWL_FW_INI_TIME_POINT_EAPOL_FAILED,
    463	IWL_FW_INI_TIME_POINT_FAKE_TX,
    464	IWL_FW_INI_TIME_POINT_DEASSOC,
    465	IWL_FW_INI_TIME_POINT_NUM,
    466}; /* FW_TLV_DEBUG_TIME_POINT_API_E */
    467
    468/**
    469 * enum iwl_fw_ini_trigger_apply_policy - Determines how to apply triggers
    470 *
    471 * @IWL_FW_INI_APPLY_POLICY_MATCH_TIME_POINT: match by time point
    472 * @IWL_FW_INI_APPLY_POLICY_MATCH_DATA: match by trigger data
    473 * @IWL_FW_INI_APPLY_POLICY_OVERRIDE_REGIONS: override regions mask.
    474 *	Append otherwise
    475 * @IWL_FW_INI_APPLY_POLICY_OVERRIDE_CFG: override trigger configuration
    476 * @IWL_FW_INI_APPLY_POLICY_OVERRIDE_DATA: override trigger data.
    477 *	Append otherwise
    478 * @IWL_FW_INI_APPLY_POLICY_DUMP_COMPLETE_CMD: send cmd once dump collected
    479 */
    480enum iwl_fw_ini_trigger_apply_policy {
    481	IWL_FW_INI_APPLY_POLICY_MATCH_TIME_POINT	= BIT(0),
    482	IWL_FW_INI_APPLY_POLICY_MATCH_DATA		= BIT(1),
    483	IWL_FW_INI_APPLY_POLICY_OVERRIDE_REGIONS	= BIT(8),
    484	IWL_FW_INI_APPLY_POLICY_OVERRIDE_CFG		= BIT(9),
    485	IWL_FW_INI_APPLY_POLICY_OVERRIDE_DATA		= BIT(10),
    486	IWL_FW_INI_APPLY_POLICY_DUMP_COMPLETE_CMD	= BIT(16),
    487};
    488
    489/**
    490 * enum iwl_fw_ini_trigger_reset_fw_policy - Determines how to handle reset
    491 *
    492 * @IWL_FW_INI_RESET_FW_MODE_NOTHING: do not stop FW and reload (default)
    493 * @IWL_FW_INI_RESET_FW_MODE_STOP_FW_ONLY: stop FW without reload FW
    494 * @IWL_FW_INI_RESET_FW_MODE_STOP_AND_RELOAD_FW: stop FW with reload FW
    495 */
    496enum iwl_fw_ini_trigger_reset_fw_policy {
    497	IWL_FW_INI_RESET_FW_MODE_NOTHING = 0,
    498	IWL_FW_INI_RESET_FW_MODE_STOP_FW_ONLY,
    499	IWL_FW_INI_RESET_FW_MODE_STOP_AND_RELOAD_FW
    500};
    501
    502/**
    503 * enum iwl_fw_ini_dump_policy - Determines how to handle dump based on enabled flags
    504 *
    505 * @IWL_FW_INI_DEBUG_DUMP_POLICY_NO_LIMIT: OS has no limit of dump size
    506 * @IWL_FW_INI_DEBUG_DUMP_POLICY_MAX_LIMIT_600KB: mini dump only 600KB region dump
    507 * @IWL_FW_IWL_DEBUG_DUMP_POLICY_MAX_LIMIT_5MB: mini dump 5MB size dump
    508 */
    509enum iwl_fw_ini_dump_policy {
    510	IWL_FW_INI_DEBUG_DUMP_POLICY_NO_LIMIT           = BIT(0),
    511	IWL_FW_INI_DEBUG_DUMP_POLICY_MAX_LIMIT_600KB    = BIT(1),
    512	IWL_FW_IWL_DEBUG_DUMP_POLICY_MAX_LIMIT_5MB      = BIT(2),
    513
    514};
    515
    516/**
    517 * enum iwl_fw_ini_dump_type - Determines dump type based on size defined by FW.
    518 *
    519 * @IWL_FW_INI_DUMP_BRIEF : only dump the most important regions
    520 * @IWL_FW_INI_DEBUG_MEDIUM: dump more regions than "brief", but not all regions
    521 * @IWL_FW_INI_DUMP_VERBOSE : dump all regions
    522 */
    523enum iwl_fw_ini_dump_type {
    524	IWL_FW_INI_DUMP_BRIEF,
    525	IWL_FW_INI_DUMP_MEDIUM,
    526	IWL_FW_INI_DUMP_VERBOSE,
    527};
    528#endif