drm/vkms: Add support for ABGR8888 pixel format
[drm/drm-misc.git] / drivers / net / wireless / mediatek / mt76 / mt7996 / coredump.h
blobaf2ba219b1b5a1a0e505754607e1b532b4ead779
1 /* SPDX-License-Identifier: ISC */
2 /* Copyright (C) 2023 MediaTek Inc. */
4 #ifndef _COREDUMP_H_
5 #define _COREDUMP_H_
7 #include "mt7996.h"
9 struct mt7996_coredump {
10 char magic[16];
12 u32 len;
14 guid_t guid;
16 /* time-of-day stamp */
17 u64 tv_sec;
18 /* time-of-day stamp, nano-seconds */
19 u64 tv_nsec;
20 /* kernel version */
21 char kernel[64];
22 /* firmware version */
23 char fw_ver[ETHTOOL_FWVERS_LEN];
25 u32 device_id;
27 /* exception state */
28 char fw_state[12];
30 /* program counters */
31 char pc_current[16];
32 u32 pc_stack[17];
33 /* link registers */
34 u32 lr_stack[16];
36 /* memory content */
37 u8 data[];
38 } __packed;
40 struct mt7996_coredump_mem {
41 u32 len;
42 u8 data[];
43 } __packed;
45 struct mt7996_mem_hdr {
46 u32 start;
47 u32 len;
48 u8 data[];
51 struct mt7996_mem_region {
52 u32 start;
53 size_t len;
55 const char *name;
58 #ifdef CONFIG_DEV_COREDUMP
60 const struct mt7996_mem_region *
61 mt7996_coredump_get_mem_layout(struct mt7996_dev *dev, u32 *num);
62 struct mt7996_crash_data *mt7996_coredump_new(struct mt7996_dev *dev);
63 int mt7996_coredump_submit(struct mt7996_dev *dev);
64 int mt7996_coredump_register(struct mt7996_dev *dev);
65 void mt7996_coredump_unregister(struct mt7996_dev *dev);
67 #else /* CONFIG_DEV_COREDUMP */
69 static inline const struct mt7996_mem_region *
70 mt7996_coredump_get_mem_layout(struct mt7996_dev *dev, u32 *num)
72 return NULL;
75 static inline int mt7996_coredump_submit(struct mt7996_dev *dev)
77 return 0;
80 static inline struct
81 mt7996_crash_data *mt7996_coredump_new(struct mt7996_dev *dev)
83 return NULL;
86 static inline int mt7996_coredump_register(struct mt7996_dev *dev)
88 return 0;
91 static inline void mt7996_coredump_unregister(struct mt7996_dev *dev)
95 #endif /* CONFIG_DEV_COREDUMP */
97 #endif /* _COREDUMP_H_ */