1 /* SPDX-License-Identifier: BSD-3-Clause-Clear */ 2 /* 3 * Copyright (c) 2020 The Linux Foundation. All rights reserved. 4 * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. 5 */ 6 #ifndef _ATH12K_COREDUMP_H_ 7 #define _ATH12K_COREDUMP_H_ 8 9 #define ATH12K_FW_CRASH_DUMP_V2 2 10 11 enum ath12k_fw_crash_dump_type { 12 FW_CRASH_DUMP_PAGING_DATA, 13 FW_CRASH_DUMP_RDDM_DATA, 14 FW_CRASH_DUMP_REMOTE_MEM_DATA, 15 FW_CRASH_DUMP_PAGEABLE_DATA, 16 FW_CRASH_DUMP_M3_DUMP, 17 FW_CRASH_DUMP_NONE, 18 FW_CRASH_DUMP_MLO_GLOBAL_DATA, 19 20 /* keep last */ 21 FW_CRASH_DUMP_TYPE_MAX, 22 }; 23 24 #define COREDUMP_TLV_HDR_SIZE 8 25 26 struct ath12k_tlv_dump_data { 27 /* see ath11k_fw_crash_dump_type above */ 28 __le32 type; 29 30 /* in bytes */ 31 __le32 tlv_len; 32 33 /* pad to 32-bit boundaries as needed */ 34 u8 tlv_data[]; 35 } __packed; 36 37 struct ath12k_dump_file_data { 38 /* "ATH12K-FW-DUMP" */ 39 char df_magic[16]; 40 /* total dump len in bytes */ 41 __le32 len; 42 /* file dump version */ 43 __le32 version; 44 /* pci device id */ 45 __le32 chip_id; 46 /* qrtr instance id */ 47 __le32 qrtr_id; 48 /* pci domain id */ 49 __le32 bus_id; 50 guid_t guid; 51 /* time-of-day stamp */ 52 __le64 tv_sec; 53 /* time-of-day stamp, nano-seconds */ 54 __le64 tv_nsec; 55 /* room for growth w/out changing binary format */ 56 u8 unused[128]; 57 u8 data[]; 58 } __packed; 59 60 #ifdef CONFIG_ATH12K_COREDUMP 61 enum ath12k_fw_crash_dump_type ath12k_coredump_get_dump_type 62 (enum ath12k_qmi_target_mem type); 63 void ath12k_coredump_upload(struct work_struct *work); 64 void ath12k_coredump_collect(struct ath12k_base *ab); 65 #else 66 static inline enum ath12k_fw_crash_dump_type ath12k_coredump_get_dump_type 67 (enum ath12k_qmi_target_mem type) 68 { 69 return FW_CRASH_DUMP_TYPE_MAX; 70 } 71 72 static inline void ath12k_coredump_upload(struct work_struct *work) 73 { 74 } 75 76 static inline void ath12k_coredump_collect(struct ath12k_base *ab) 77 { 78 } 79 #endif 80 81 #endif 82