brintos

brintos / linux-shallow public Read only

0
0
Text · 1.7 KiB · af2ba21 Raw
98 lines · c
1/* SPDX-License-Identifier: ISC */2/* Copyright (C) 2023 MediaTek Inc. */3 4#ifndef _COREDUMP_H_5#define _COREDUMP_H_6 7#include "mt7996.h"8 9struct mt7996_coredump {10	char magic[16];11 12	u32 len;13 14	guid_t guid;15 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];24 25	u32 device_id;26 27	/* exception state */28	char fw_state[12];29 30	/* program counters */31	char pc_current[16];32	u32 pc_stack[17];33	/* link registers */34	u32 lr_stack[16];35 36	/* memory content */37	u8 data[];38} __packed;39 40struct mt7996_coredump_mem {41	u32 len;42	u8 data[];43} __packed;44 45struct mt7996_mem_hdr {46	u32 start;47	u32 len;48	u8 data[];49};50 51struct mt7996_mem_region {52	u32 start;53	size_t len;54 55	const char *name;56};57 58#ifdef CONFIG_DEV_COREDUMP59 60const struct mt7996_mem_region *61mt7996_coredump_get_mem_layout(struct mt7996_dev *dev, u32 *num);62struct mt7996_crash_data *mt7996_coredump_new(struct mt7996_dev *dev);63int mt7996_coredump_submit(struct mt7996_dev *dev);64int mt7996_coredump_register(struct mt7996_dev *dev);65void mt7996_coredump_unregister(struct mt7996_dev *dev);66 67#else /* CONFIG_DEV_COREDUMP */68 69static inline const struct mt7996_mem_region *70mt7996_coredump_get_mem_layout(struct mt7996_dev *dev, u32 *num)71{72	return NULL;73}74 75static inline int mt7996_coredump_submit(struct mt7996_dev *dev)76{77	return 0;78}79 80static inline struct81mt7996_crash_data *mt7996_coredump_new(struct mt7996_dev *dev)82{83	return NULL;84}85 86static inline int mt7996_coredump_register(struct mt7996_dev *dev)87{88	return 0;89}90 91static inline void mt7996_coredump_unregister(struct mt7996_dev *dev)92{93}94 95#endif /* CONFIG_DEV_COREDUMP */96 97#endif /* _COREDUMP_H_ */98