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 - 2019 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 - 2019 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 /** 64 * struct iwl_fw_ini_header: Common Header for all debug group TLV's structures 65 * 66 * @tlv_version: version info 67 * @apply_point: &enum iwl_fw_ini_apply_point 68 * @data: TLV data followed 69 */ 70 struct iwl_fw_ini_header { 71 __le32 tlv_version; 72 __le32 apply_point; 73 u8 data[]; 74 } __packed; /* FW_DEBUG_TLV_HEADER_S */ 75 76 /** 77 * struct iwl_fw_ini_allocation_tlv - (IWL_UCODE_TLV_TYPE_BUFFER_ALLOCATION) 78 * buffer allocation TLV - for debug 79 * 80 * @iwl_fw_ini_header: header 81 * @allocation_id: &enum iwl_fw_ini_allocation_id - to bind allocation and hcmd 82 * if needed (DBGC1/DBGC2/SDFX/...) 83 * @buffer_location: type of iwl_fw_ini_buffer_location 84 * @size: size in bytes 85 * @max_fragments: the maximum allowed fragmentation in the desired memory 86 * allocation above 87 * @min_frag_size: the minimum allowed fragmentation size in bytes 88 */ 89 struct iwl_fw_ini_allocation_tlv { 90 struct iwl_fw_ini_header header; 91 __le32 allocation_id; 92 __le32 buffer_location; 93 __le32 size; 94 __le32 max_fragments; 95 __le32 min_frag_size; 96 } __packed; /* FW_DEBUG_TLV_BUFFER_ALLOCATION_TLV_S_VER_1 */ 97 98 /** 99 * enum iwl_fw_ini_dbg_domain - debug domains 100 * allows to send host cmd or collect memory region if a given domain is enabled 101 * 102 * @IWL_FW_INI_DBG_DOMAIN_ALWAYS_ON: the default domain, always on 103 * @IWL_FW_INI_DBG_DOMAIN_REPORT_PS: power save domain 104 */ 105 enum iwl_fw_ini_dbg_domain { 106 IWL_FW_INI_DBG_DOMAIN_ALWAYS_ON = 0, 107 IWL_FW_INI_DBG_DOMAIN_REPORT_PS, 108 }; /* FW_DEBUG_TLV_DOMAIN_API_E_VER_1 */ 109 110 /** 111 * struct iwl_fw_ini_hcmd 112 * 113 * @id: the debug configuration command type for instance: 0xf6 / 0xf5 / DHC 114 * @group: the desired cmd group 115 * @reserved: to align to FW struct 116 * @data: all of the relevant command data to be sent 117 */ 118 struct iwl_fw_ini_hcmd { 119 u8 id; 120 u8 group; 121 __le16 reserved; 122 u8 data[0]; 123 } __packed; /* FW_DEBUG_TLV_HCMD_DATA_API_S_VER_1 */ 124 125 /** 126 * struct iwl_fw_ini_hcmd_tlv - (IWL_UCODE_TLV_TYPE_HCMD) 127 * Generic Host command pass through TLV 128 * 129 * @header: header 130 * @domain: send command only if the specific domain is enabled 131 * &enum iwl_fw_ini_dbg_domain 132 * @period_msec: period in which the hcmd will be sent to FW. Measured in msec 133 * (0 = one time command). 134 * @hcmd: a variable length host-command to be sent to apply the configuration. 135 */ 136 struct iwl_fw_ini_hcmd_tlv { 137 struct iwl_fw_ini_header header; 138 __le32 domain; 139 __le32 period_msec; 140 struct iwl_fw_ini_hcmd hcmd; 141 } __packed; /* FW_DEBUG_TLV_HCMD_API_S_VER_1 */ 142 143 /** 144 * struct iwl_fw_ini_debug_flow_tlv - (IWL_UCODE_TLV_TYPE_DEBUG_FLOW) 145 * 146 * @header: header 147 * @debug_flow_cfg: &enum iwl_fw_ini_debug_flow 148 */ 149 struct iwl_fw_ini_debug_flow_tlv { 150 struct iwl_fw_ini_header header; 151 __le32 debug_flow_cfg; 152 } __packed; /* FW_DEBUG_TLV_FLOW_TLV_S_VER_1 */ 153 154 #define IWL_FW_INI_MAX_REGION_ID 64 155 #define IWL_FW_INI_MAX_NAME 32 156 157 /** 158 * struct iwl_fw_ini_region_cfg_dhc - defines dhc response to dump. 159 * 160 * @id_and_grp: id and group of dhc response. 161 * @desc: dhc response descriptor. 162 */ 163 struct iwl_fw_ini_region_cfg_dhc { 164 __le32 id_and_grp; 165 __le32 desc; 166 } __packed; /* FW_DEBUG_TLV_REGION_DHC_API_S_VER_1 */ 167 168 /** 169 * struct iwl_fw_ini_region_cfg_internal - meta data of internal memory region 170 * 171 * @num_of_range: the amount of ranges in the region 172 * @range_data_size: size of the data to read per range, in bytes. 173 */ 174 struct iwl_fw_ini_region_cfg_internal { 175 __le32 num_of_ranges; 176 __le32 range_data_size; 177 } __packed; /* FW_DEBUG_TLV_REGION_NIC_INTERNAL_RANGES_S */ 178 179 /** 180 * struct iwl_fw_ini_region_cfg_fifos - meta data of fifos region 181 * 182 * @fid1: fifo id 1 - bitmap of lmac tx/rx fifos to include in the region 183 * @fid2: fifo id 2 - bitmap of umac rx fifos to include in the region. 184 * It is unused for tx. 185 * @num_of_registers: number of prph registers in the region, each register is 186 * 4 bytes size. 187 * @header_only: none zero value indicates that this region does not include 188 * fifo data and includes only the given registers. 189 */ 190 struct iwl_fw_ini_region_cfg_fifos { 191 __le32 fid1; 192 __le32 fid2; 193 __le32 num_of_registers; 194 __le32 header_only; 195 } __packed; /* FW_DEBUG_TLV_REGION_FIFOS_S */ 196 197 /** 198 * struct iwl_fw_ini_region_cfg 199 * 200 * @region_id: ID of this dump configuration 201 * @region_type: &enum iwl_fw_ini_region_type 202 * @domain: dump this region only if the specific domain is enabled 203 * &enum iwl_fw_ini_dbg_domain 204 * @name_len: name length 205 * @name: file name to use for this region 206 * @internal: used in case the region uses internal memory. 207 * @allocation_id: For DRAM type field substitutes for allocation_id 208 * @fifos: used in case of fifos region. 209 * @dhc_desc: dhc response descriptor. 210 * @notif_id_and_grp: dump this region only if the specific notification 211 * occurred. 212 * @offset: offset to use for each memory base address 213 * @start_addr: array of addresses. 214 */ 215 struct iwl_fw_ini_region_cfg { 216 __le32 region_id; 217 __le32 region_type; 218 __le32 domain; 219 __le32 name_len; 220 u8 name[IWL_FW_INI_MAX_NAME]; 221 union { 222 struct iwl_fw_ini_region_cfg_internal internal; 223 __le32 allocation_id; 224 struct iwl_fw_ini_region_cfg_fifos fifos; 225 struct iwl_fw_ini_region_cfg_dhc dhc_desc; 226 __le32 notif_id_and_grp; 227 }; /* FW_DEBUG_TLV_REGION_EXT_INT_PARAMS_API_U_VER_1 */ 228 __le32 offset; 229 __le32 start_addr[]; 230 } __packed; /* FW_DEBUG_TLV_REGION_CONFIG_API_S_VER_1 */ 231 232 /** 233 * struct iwl_fw_ini_region_tlv - (IWL_UCODE_TLV_TYPE_REGIONS) 234 * defines memory regions to dump 235 * 236 * @header: header 237 * @num_regions: how many different region section and IDs are coming next 238 * @region_config: list of dump configurations 239 */ 240 struct iwl_fw_ini_region_tlv { 241 struct iwl_fw_ini_header header; 242 __le32 num_regions; 243 struct iwl_fw_ini_region_cfg region_config[]; 244 } __packed; /* FW_DEBUG_TLV_REGIONS_API_S_VER_1 */ 245 246 /** 247 * struct iwl_fw_ini_trigger 248 * 249 * @trigger_id: &enum iwl_fw_ini_trigger_id 250 * @override_trig: determines how apply trigger in case a trigger with the 251 * same id is already in use. Using the first 2 bytes: 252 * Byte 0: if 0, override trigger configuration, otherwise use the 253 * existing configuration. 254 * Byte 1: if 0, override trigger regions, otherwise append regions to 255 * existing trigger. 256 * @dump_delay: delay from trigger fire to dump, in usec 257 * @occurrences: max amount of times to be fired 258 * @reserved: to align to FW struct 259 * @ignore_consec: ignore consecutive triggers, in usec 260 * @force_restart: force FW restart 261 * @multi_dut: initiate debug dump data on several DUTs 262 * @trigger_data: generic data to be utilized per trigger 263 * @num_regions: number of dump regions defined for this trigger 264 * @data: region IDs 265 */ 266 struct iwl_fw_ini_trigger { 267 __le32 trigger_id; 268 __le32 override_trig; 269 __le32 dump_delay; 270 __le32 occurrences; 271 __le32 reserved; 272 __le32 ignore_consec; 273 __le32 force_restart; 274 __le32 multi_dut; 275 __le32 trigger_data; 276 __le32 num_regions; 277 __le32 data[]; 278 } __packed; /* FW_TLV_DEBUG_TRIGGER_CONFIG_API_S_VER_1 */ 279 280 /** 281 * struct iwl_fw_ini_trigger_tlv - (IWL_UCODE_TLV_TYPE_TRIGGERS) 282 * Triggers that hold memory regions to dump in case a trigger fires 283 * 284 * @header: header 285 * @num_triggers: how many different triggers section and IDs are coming next 286 * @trigger_config: list of trigger configurations 287 */ 288 struct iwl_fw_ini_trigger_tlv { 289 struct iwl_fw_ini_header header; 290 __le32 num_triggers; 291 struct iwl_fw_ini_trigger trigger_config[]; 292 } __packed; /* FW_TLV_DEBUG_TRIGGERS_API_S_VER_1 */ 293 294 #define IWL_FW_INI_MAX_IMG_NAME_LEN 32 295 #define IWL_FW_INI_MAX_DBG_CFG_NAME_LEN 64 296 297 /** 298 * struct iwl_fw_ini_debug_info_tlv - (IWL_UCODE_TLV_TYPE_DEBUG_INFO) 299 * 300 * holds image name and debug configuration name 301 * 302 * @header: header 303 * @img_name_len: length of the image name string 304 * @img_name: image name string 305 * @dbg_cfg_name_len : length of the debug configuration name string 306 * @dbg_cfg_name: debug configuration name string 307 */ 308 struct iwl_fw_ini_debug_info_tlv { 309 struct iwl_fw_ini_header header; 310 __le32 img_name_len; 311 u8 img_name[IWL_FW_INI_MAX_IMG_NAME_LEN]; 312 __le32 dbg_cfg_name_len; 313 u8 dbg_cfg_name[IWL_FW_INI_MAX_DBG_CFG_NAME_LEN]; 314 } __packed; /* FW_DEBUG_TLV_INFO_API_S_VER_1 */ 315 316 /** 317 * enum iwl_fw_ini_trigger_id 318 * 319 * @IWL_FW_TRIGGER_ID_FW_ASSERT: FW assert 320 * @IWL_FW_TRIGGER_ID_FW_HW_ERROR: HW assert 321 * @IWL_FW_TRIGGER_ID_FW_TFD_Q_HANG: TFD queue hang 322 * @IWL_FW_TRIGGER_ID_FW_DEBUG_HOST_TRIGGER: FW debug notification 323 * @IWL_FW_TRIGGER_ID_FW_GENERIC_NOTIFICATION: FW generic notification 324 * @IWL_FW_TRIGGER_ID_USER_TRIGGER: User trigger 325 * @IWL_FW_TRIGGER_ID_PERIODIC_TRIGGER: triggers periodically 326 * @IWL_FW_TRIGGER_ID_HOST_PEER_CLIENT_INACTIVITY: peer inactivity 327 * @IWL_FW_TRIGGER_ID_HOST_TX_LATENCY_THRESHOLD_CROSSED: TX latency 328 * threshold was crossed 329 * @IWL_FW_TRIGGER_ID_HOST_TX_RESPONSE_STATUS_FAILED: TX failed 330 * @IWL_FW_TRIGGER_ID_HOST_OS_REQ_DEAUTH_PEER: Deauth initiated by host 331 * @IWL_FW_TRIGGER_ID_HOST_STOP_GO_REQUEST: stop GO request 332 * @IWL_FW_TRIGGER_ID_HOST_START_GO_REQUEST: start GO request 333 * @IWL_FW_TRIGGER_ID_HOST_JOIN_GROUP_REQUEST: join P2P group request 334 * @IWL_FW_TRIGGER_ID_HOST_SCAN_START: scan started event 335 * @IWL_FW_TRIGGER_ID_HOST_SCAN_SUBMITTED: undefined 336 * @IWL_FW_TRIGGER_ID_HOST_SCAN_PARAMS: undefined 337 * @IWL_FW_TRIGGER_ID_HOST_CHECK_FOR_HANG: undefined 338 * @IWL_FW_TRIGGER_ID_HOST_BAR_RECEIVED: BAR frame was received 339 * @IWL_FW_TRIGGER_ID_HOST_AGG_TX_RESPONSE_STATUS_FAILED: agg TX failed 340 * @IWL_FW_TRIGGER_ID_HOST_EAPOL_TX_RESPONSE_FAILED: EAPOL TX failed 341 * @IWL_FW_TRIGGER_ID_HOST_FAKE_TX_RESPONSE_SUSPECTED: suspicious TX response 342 * @IWL_FW_TRIGGER_ID_HOST_AUTH_REQ_FROM_ASSOC_CLIENT: received suspicious auth 343 * @IWL_FW_TRIGGER_ID_HOST_ROAM_COMPLETE: roaming was completed 344 * @IWL_FW_TRIGGER_ID_HOST_AUTH_ASSOC_FAST_FAILED: fast assoc failed 345 * @IWL_FW_TRIGGER_ID_HOST_D3_START: D3 start 346 * @IWL_FW_TRIGGER_ID_HOST_D3_END: D3 end 347 * @IWL_FW_TRIGGER_ID_HOST_BSS_MISSED_BEACONS: missed beacon events 348 * @IWL_FW_TRIGGER_ID_HOST_P2P_CLIENT_MISSED_BEACONS: P2P missed beacon events 349 * @IWL_FW_TRIGGER_ID_HOST_PEER_CLIENT_TX_FAILURES: undefined 350 * @IWL_FW_TRIGGER_ID_HOST_TX_WFD_ACTION_FRAME_FAILED: undefined 351 * @IWL_FW_TRIGGER_ID_HOST_AUTH_ASSOC_FAILED: authentication / association 352 * failed 353 * @IWL_FW_TRIGGER_ID_HOST_SCAN_COMPLETE: scan complete event 354 * @IWL_FW_TRIGGER_ID_HOST_SCAN_ABORT: scan abort complete 355 * @IWL_FW_TRIGGER_ID_HOST_NIC_ALIVE: nic alive message was received 356 * @IWL_FW_TRIGGER_ID_HOST_CHANNEL_SWITCH_COMPLETE: CSA was completed 357 * @IWL_FW_TRIGGER_ID_NUM: number of trigger IDs 358 */ 359 enum iwl_fw_ini_trigger_id { 360 IWL_FW_TRIGGER_ID_INVALID = 0, 361 362 /* Errors triggers */ 363 IWL_FW_TRIGGER_ID_FW_ASSERT = 1, 364 IWL_FW_TRIGGER_ID_FW_HW_ERROR = 2, 365 IWL_FW_TRIGGER_ID_FW_TFD_Q_HANG = 3, 366 367 /* FW triggers */ 368 IWL_FW_TRIGGER_ID_FW_DEBUG_HOST_TRIGGER = 4, 369 IWL_FW_TRIGGER_ID_FW_GENERIC_NOTIFICATION = 5, 370 371 /* User trigger */ 372 IWL_FW_TRIGGER_ID_USER_TRIGGER = 6, 373 374 /* periodic uses the data field for the interval time */ 375 IWL_FW_TRIGGER_ID_PERIODIC_TRIGGER = 7, 376 377 /* Host triggers */ 378 IWL_FW_TRIGGER_ID_HOST_PEER_CLIENT_INACTIVITY = 8, 379 IWL_FW_TRIGGER_ID_HOST_TX_LATENCY_THRESHOLD_CROSSED = 9, 380 IWL_FW_TRIGGER_ID_HOST_TX_RESPONSE_STATUS_FAILED = 10, 381 IWL_FW_TRIGGER_ID_HOST_OS_REQ_DEAUTH_PEER = 11, 382 IWL_FW_TRIGGER_ID_HOST_STOP_GO_REQUEST = 12, 383 IWL_FW_TRIGGER_ID_HOST_START_GO_REQUEST = 13, 384 IWL_FW_TRIGGER_ID_HOST_JOIN_GROUP_REQUEST = 14, 385 IWL_FW_TRIGGER_ID_HOST_SCAN_START = 15, 386 IWL_FW_TRIGGER_ID_HOST_SCAN_SUBMITTED = 16, 387 IWL_FW_TRIGGER_ID_HOST_SCAN_PARAMS = 17, 388 IWL_FW_TRIGGER_ID_HOST_CHECK_FOR_HANG = 18, 389 IWL_FW_TRIGGER_ID_HOST_BAR_RECEIVED = 19, 390 IWL_FW_TRIGGER_ID_HOST_AGG_TX_RESPONSE_STATUS_FAILED = 20, 391 IWL_FW_TRIGGER_ID_HOST_EAPOL_TX_RESPONSE_FAILED = 21, 392 IWL_FW_TRIGGER_ID_HOST_FAKE_TX_RESPONSE_SUSPECTED = 22, 393 IWL_FW_TRIGGER_ID_HOST_AUTH_REQ_FROM_ASSOC_CLIENT = 23, 394 IWL_FW_TRIGGER_ID_HOST_ROAM_COMPLETE = 24, 395 IWL_FW_TRIGGER_ID_HOST_AUTH_ASSOC_FAST_FAILED = 25, 396 IWL_FW_TRIGGER_ID_HOST_D3_START = 26, 397 IWL_FW_TRIGGER_ID_HOST_D3_END = 27, 398 IWL_FW_TRIGGER_ID_HOST_BSS_MISSED_BEACONS = 28, 399 IWL_FW_TRIGGER_ID_HOST_P2P_CLIENT_MISSED_BEACONS = 29, 400 IWL_FW_TRIGGER_ID_HOST_PEER_CLIENT_TX_FAILURES = 30, 401 IWL_FW_TRIGGER_ID_HOST_TX_WFD_ACTION_FRAME_FAILED = 31, 402 IWL_FW_TRIGGER_ID_HOST_AUTH_ASSOC_FAILED = 32, 403 IWL_FW_TRIGGER_ID_HOST_SCAN_COMPLETE = 33, 404 IWL_FW_TRIGGER_ID_HOST_SCAN_ABORT = 34, 405 IWL_FW_TRIGGER_ID_HOST_NIC_ALIVE = 35, 406 IWL_FW_TRIGGER_ID_HOST_CHANNEL_SWITCH_COMPLETE = 36, 407 408 IWL_FW_TRIGGER_ID_NUM, 409 }; /* FW_DEBUG_TLV_TRIGGER_ID_E_VER_1 */ 410 411 /** 412 * enum iwl_fw_ini_apply_point 413 * 414 * @IWL_FW_INI_APPLY_INVALID: invalid 415 * @IWL_FW_INI_APPLY_EARLY: pre loading FW 416 * @IWL_FW_INI_APPLY_AFTER_ALIVE: first cmd from host after alive 417 * @IWL_FW_INI_APPLY_POST_INIT: last cmd in initialization sequence 418 * @IWL_FW_INI_APPLY_MISSED_BEACONS: missed beacons notification 419 * @IWL_FW_INI_APPLY_SCAN_COMPLETE: scan completed 420 * @IWL_FW_INI_APPLY_NUM: number of apply points 421 */ 422 enum iwl_fw_ini_apply_point { 423 IWL_FW_INI_APPLY_INVALID, 424 IWL_FW_INI_APPLY_EARLY, 425 IWL_FW_INI_APPLY_AFTER_ALIVE, 426 IWL_FW_INI_APPLY_POST_INIT, 427 IWL_FW_INI_APPLY_MISSED_BEACONS, 428 IWL_FW_INI_APPLY_SCAN_COMPLETE, 429 IWL_FW_INI_APPLY_NUM, 430 }; /* FW_DEBUG_TLV_APPLY_POINT_E_VER_1 */ 431 432 /** 433 * enum iwl_fw_ini_allocation_id 434 * 435 * @IWL_FW_INI_ALLOCATION_INVALID: invalid 436 * @IWL_FW_INI_ALLOCATION_ID_DBGC1: allocation meant for DBGC1 configuration 437 * @IWL_FW_INI_ALLOCATION_ID_DBGC2: allocation meant for DBGC2 configuration 438 * @IWL_FW_INI_ALLOCATION_ID_DBGC3: allocation meant for DBGC3 configuration 439 * @IWL_FW_INI_ALLOCATION_ID_SDFX: for SDFX module 440 * @IWL_FW_INI_ALLOCATION_ID_FW_DUMP: used for crash and runtime dumps 441 * @IWL_FW_INI_ALLOCATION_ID_USER_DEFINED: for future user scenarios 442 */ 443 enum iwl_fw_ini_allocation_id { 444 IWL_FW_INI_ALLOCATION_INVALID, 445 IWL_FW_INI_ALLOCATION_ID_DBGC1, 446 IWL_FW_INI_ALLOCATION_ID_DBGC2, 447 IWL_FW_INI_ALLOCATION_ID_DBGC3, 448 IWL_FW_INI_ALLOCATION_ID_SDFX, 449 IWL_FW_INI_ALLOCATION_ID_FW_DUMP, 450 IWL_FW_INI_ALLOCATION_ID_USER_DEFINED, 451 }; /* FW_DEBUG_TLV_ALLOCATION_ID_E_VER_1 */ 452 453 /** 454 * enum iwl_fw_ini_buffer_location 455 * 456 * @IWL_FW_INI_LOCATION_INVALID: invalid 457 * @IWL_FW_INI_LOCATION_SRAM_PATH: SRAM location 458 * @IWL_FW_INI_LOCATION_DRAM_PATH: DRAM location 459 * @IWL_FW_INI_LOCATION_NPK_PATH: NPK location 460 */ 461 enum iwl_fw_ini_buffer_location { 462 IWL_FW_INI_LOCATION_INVALID, 463 IWL_FW_INI_LOCATION_SRAM_PATH, 464 IWL_FW_INI_LOCATION_DRAM_PATH, 465 IWL_FW_INI_LOCATION_NPK_PATH, 466 }; /* FW_DEBUG_TLV_BUFFER_LOCATION_E_VER_1 */ 467 468 /** 469 * enum iwl_fw_ini_debug_flow 470 * 471 * @IWL_FW_INI_DEBUG_INVALID: invalid 472 * @IWL_FW_INI_DEBUG_DBTR_FLOW: undefined 473 * @IWL_FW_INI_DEBUG_TB2DTF_FLOW: undefined 474 */ 475 enum iwl_fw_ini_debug_flow { 476 IWL_FW_INI_DEBUG_INVALID, 477 IWL_FW_INI_DEBUG_DBTR_FLOW, 478 IWL_FW_INI_DEBUG_TB2DTF_FLOW, 479 }; /* FW_DEBUG_TLV_FLOW_E_VER_1 */ 480 481 /** 482 * enum iwl_fw_ini_region_type 483 * 484 * @IWL_FW_INI_REGION_INVALID: invalid 485 * @IWL_FW_INI_REGION_DEVICE_MEMORY: device internal memory 486 * @IWL_FW_INI_REGION_PERIPHERY_MAC: periphery registers of MAC 487 * @IWL_FW_INI_REGION_PERIPHERY_PHY: periphery registers of PHY 488 * @IWL_FW_INI_REGION_PERIPHERY_AUX: periphery registers of AUX 489 * @IWL_FW_INI_REGION_DRAM_BUFFER: DRAM buffer 490 * @IWL_FW_INI_REGION_DRAM_IMR: IMR memory 491 * @IWL_FW_INI_REGION_INTERNAL_BUFFER: undefined 492 * @IWL_FW_INI_REGION_TXF: TX fifos 493 * @IWL_FW_INI_REGION_RXF: RX fifo 494 * @IWL_FW_INI_REGION_PAGING: paging memory 495 * @IWL_FW_INI_REGION_CSR: CSR registers 496 * @IWL_FW_INI_REGION_NOTIFICATION: FW notification data 497 * @IWL_FW_INI_REGION_DHC: dhc response to dump 498 * @IWL_FW_INI_REGION_LMAC_ERROR_TABLE: lmac error table 499 * @IWL_FW_INI_REGION_UMAC_ERROR_TABLE: umac error table 500 * @IWL_FW_INI_REGION_NUM: number of region types 501 */ 502 enum iwl_fw_ini_region_type { 503 IWL_FW_INI_REGION_INVALID, 504 IWL_FW_INI_REGION_DEVICE_MEMORY, 505 IWL_FW_INI_REGION_PERIPHERY_MAC, 506 IWL_FW_INI_REGION_PERIPHERY_PHY, 507 IWL_FW_INI_REGION_PERIPHERY_AUX, 508 IWL_FW_INI_REGION_DRAM_BUFFER, 509 IWL_FW_INI_REGION_DRAM_IMR, 510 IWL_FW_INI_REGION_INTERNAL_BUFFER, 511 IWL_FW_INI_REGION_TXF, 512 IWL_FW_INI_REGION_RXF, 513 IWL_FW_INI_REGION_PAGING, 514 IWL_FW_INI_REGION_CSR, 515 IWL_FW_INI_REGION_NOTIFICATION, 516 IWL_FW_INI_REGION_DHC, 517 IWL_FW_INI_REGION_LMAC_ERROR_TABLE, 518 IWL_FW_INI_REGION_UMAC_ERROR_TABLE, 519 IWL_FW_INI_REGION_NUM 520 }; /* FW_DEBUG_TLV_REGION_TYPE_E_VER_1 */ 521 522 #endif 523