brintos

brintos / linux-shallow public Read only

0
0
Text · 2.2 KiB · 709f8e9 Raw
137 lines · c
1/* SPDX-License-Identifier: ISC */2/* Copyright (C) 2022 MediaTek Inc. */3 4#ifndef _COREDUMP_H_5#define _COREDUMP_H_6 7#include "mt7915.h"8 9struct trace {10	u32 id;11	u32 timestamp;12};13 14struct mt7915_coredump {15	char magic[16];16 17	u32 len;18 19	guid_t guid;20 21	/* time-of-day stamp */22	u64 tv_sec;23	/* time-of-day stamp, nano-seconds */24	u64 tv_nsec;25	/* kernel version */26	char kernel[64];27	/* firmware version */28	char fw_ver[ETHTOOL_FWVERS_LEN];29 30	u32 device_id;31 32	/* exception state */33	char fw_state[12];34 35	u32 last_msg_id;36	u32 eint_info_idx;37	u32 irq_info_idx;38	u32 sched_info_idx;39 40	/* schedule info */41	char trace_sched[32];42	struct {43		struct trace t;44		u32 pc;45	} sched[60];46 47	/* irq info */48	char trace_irq[32];49	struct trace irq[60];50 51	/* task queue status */52	char task_qid[32];53	struct {54		u32 read;55		u32 write;56	} taskq[2];57 58	/* task stack info */59	char task_info[32];60	struct {61		u32 start;62		u32 end;63		u32 size;64	} taski[2];65 66	/* firmware context */67	char fw_context[24];68	struct {69		u32 idx;70		u32 handler;71	} context;72 73	/* link registers calltrace */74	u32 call_stack[16];75 76	/* memory content */77	u8 data[];78} __packed;79 80struct mt7915_coredump_mem {81	u32 len;82	u8 data[];83} __packed;84 85struct mt7915_mem_hdr {86	u32 start;87	u32 len;88	u8 data[];89};90 91struct mt7915_mem_region {92	u32 start;93	size_t len;94 95	const char *name;96};97 98#ifdef CONFIG_DEV_COREDUMP99 100const struct mt7915_mem_region *101mt7915_coredump_get_mem_layout(struct mt7915_dev *dev, u32 *num);102struct mt7915_crash_data *mt7915_coredump_new(struct mt7915_dev *dev);103int mt7915_coredump_submit(struct mt7915_dev *dev);104int mt7915_coredump_register(struct mt7915_dev *dev);105void mt7915_coredump_unregister(struct mt7915_dev *dev);106 107#else /* CONFIG_DEV_COREDUMP */108 109static inline const struct mt7915_mem_region *110mt7915_coredump_get_mem_layout(struct mt7915_dev *dev, u32 *num)111{112	return NULL;113}114 115static inline int mt7915_coredump_submit(struct mt7915_dev *dev)116{117	return 0;118}119 120static inline struct mt7915_crash_data *mt7915_coredump_new(struct mt7915_dev *dev)121{122	return NULL;123}124 125static inline int mt7915_coredump_register(struct mt7915_dev *dev)126{127	return 0;128}129 130static inline void mt7915_coredump_unregister(struct mt7915_dev *dev)131{132}133 134#endif /* CONFIG_DEV_COREDUMP */135 136#endif /* _COREDUMP_H_ */137