| /* SPDX-License-Identifier: ISC */ |
| /* Copyright (C) 2023 MediaTek Inc. */ |
| |
| #ifndef _COREDUMP_H_ |
| #define _COREDUMP_H_ |
| |
| #include "mt7996.h" |
| |
| struct mt7996_coredump { |
| char magic[16]; |
| |
| u32 len; |
| |
| guid_t guid; |
| |
| /* time-of-day stamp */ |
| u64 tv_sec; |
| /* time-of-day stamp, nano-seconds */ |
| u64 tv_nsec; |
| /* kernel version */ |
| char kernel[64]; |
| /* firmware version */ |
| char fw_ver[ETHTOOL_FWVERS_LEN]; |
| |
| u32 device_id; |
| |
| /* exception state */ |
| char fw_state[12]; |
| |
| /* program counters */ |
| char pc_current[16]; |
| u32 pc_stack[17]; |
| /* link registers */ |
| u32 lr_stack[16]; |
| |
| /* memory content */ |
| u8 data[]; |
| } __packed; |
| |
| struct mt7996_coredump_mem { |
| u32 len; |
| u8 data[]; |
| } __packed; |
| |
| struct mt7996_mem_hdr { |
| u32 start; |
| u32 len; |
| u8 data[]; |
| }; |
| |
| struct mt7996_mem_region { |
| u32 start; |
| size_t len; |
| |
| const char *name; |
| }; |
| |
| #ifdef CONFIG_DEV_COREDUMP |
| |
| const struct mt7996_mem_region * |
| mt7996_coredump_get_mem_layout(struct mt7996_dev *dev, u32 *num); |
| struct mt7996_crash_data *mt7996_coredump_new(struct mt7996_dev *dev); |
| int mt7996_coredump_submit(struct mt7996_dev *dev); |
| int mt7996_coredump_register(struct mt7996_dev *dev); |
| void mt7996_coredump_unregister(struct mt7996_dev *dev); |
| |
| #else /* CONFIG_DEV_COREDUMP */ |
| |
| static inline const struct mt7996_mem_region * |
| mt7996_coredump_get_mem_layout(struct mt7996_dev *dev, u32 *num) |
| { |
| return NULL; |
| } |
| |
| static inline int mt7996_coredump_submit(struct mt7996_dev *dev) |
| { |
| return 0; |
| } |
| |
| static inline struct |
| mt7996_crash_data *mt7996_coredump_new(struct mt7996_dev *dev) |
| { |
| return NULL; |
| } |
| |
| static inline int mt7996_coredump_register(struct mt7996_dev *dev) |
| { |
| return 0; |
| } |
| |
| static inline void mt7996_coredump_unregister(struct mt7996_dev *dev) |
| { |
| } |
| |
| #endif /* CONFIG_DEV_COREDUMP */ |
| |
| #endif /* _COREDUMP_H_ */ |