xref: /openbmc/linux/drivers/net/ethernet/chelsio/cxgb4/cudbg_lib_common.h (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*4fa9c49fSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
2ad75b7d3SRahul Lakkireddy /*
3ad75b7d3SRahul Lakkireddy  *  Copyright (C) 2017 Chelsio Communications.  All rights reserved.
4ad75b7d3SRahul Lakkireddy  */
5ad75b7d3SRahul Lakkireddy 
6ad75b7d3SRahul Lakkireddy #ifndef __CUDBG_LIB_COMMON_H__
7ad75b7d3SRahul Lakkireddy #define __CUDBG_LIB_COMMON_H__
8ad75b7d3SRahul Lakkireddy 
9ad75b7d3SRahul Lakkireddy #define CUDBG_SIGNATURE 67856866 /* CUDB in ascii */
10ad75b7d3SRahul Lakkireddy 
11ad75b7d3SRahul Lakkireddy enum cudbg_dump_type {
12ad75b7d3SRahul Lakkireddy 	CUDBG_DUMP_TYPE_MINI = 1,
13ad75b7d3SRahul Lakkireddy };
14ad75b7d3SRahul Lakkireddy 
15ad75b7d3SRahul Lakkireddy enum cudbg_compression_type {
16ad75b7d3SRahul Lakkireddy 	CUDBG_COMPRESSION_NONE = 1,
1791c1953dSRahul Lakkireddy 	CUDBG_COMPRESSION_ZLIB,
18ad75b7d3SRahul Lakkireddy };
19ad75b7d3SRahul Lakkireddy 
20ad75b7d3SRahul Lakkireddy struct cudbg_hdr {
21ad75b7d3SRahul Lakkireddy 	u32 signature;
22ad75b7d3SRahul Lakkireddy 	u32 hdr_len;
23ad75b7d3SRahul Lakkireddy 	u16 major_ver;
24ad75b7d3SRahul Lakkireddy 	u16 minor_ver;
25ad75b7d3SRahul Lakkireddy 	u32 data_len;
26ad75b7d3SRahul Lakkireddy 	u32 hdr_flags;
27ad75b7d3SRahul Lakkireddy 	u16 max_entities;
28ad75b7d3SRahul Lakkireddy 	u8 chip_ver;
29ad75b7d3SRahul Lakkireddy 	u8 dump_type:3;
30ad75b7d3SRahul Lakkireddy 	u8 reserved1:1;
31ad75b7d3SRahul Lakkireddy 	u8 compress_type:4;
32ad75b7d3SRahul Lakkireddy 	u32 reserved[8];
33ad75b7d3SRahul Lakkireddy };
34ad75b7d3SRahul Lakkireddy 
35ad75b7d3SRahul Lakkireddy struct cudbg_entity_hdr {
36ad75b7d3SRahul Lakkireddy 	u32 entity_type;
37ad75b7d3SRahul Lakkireddy 	u32 start_offset;
38ad75b7d3SRahul Lakkireddy 	u32 size;
39ad75b7d3SRahul Lakkireddy 	int hdr_flags;
40ad75b7d3SRahul Lakkireddy 	u32 sys_warn;
41ad75b7d3SRahul Lakkireddy 	u32 sys_err;
42ad75b7d3SRahul Lakkireddy 	u8 num_pad;
43ad75b7d3SRahul Lakkireddy 	u8 flag;             /* bit 0 is used to indicate ext data */
44ad75b7d3SRahul Lakkireddy 	u8 reserved1[2];
45ad75b7d3SRahul Lakkireddy 	u32 next_ext_offset; /* pointer to next extended entity meta data */
46ad75b7d3SRahul Lakkireddy 	u32 reserved[5];
47ad75b7d3SRahul Lakkireddy };
48ad75b7d3SRahul Lakkireddy 
499030e498SRahul Lakkireddy struct cudbg_ver_hdr {
509030e498SRahul Lakkireddy 	u32 signature;
519030e498SRahul Lakkireddy 	u16 revision;
529030e498SRahul Lakkireddy 	u16 size;
539030e498SRahul Lakkireddy };
549030e498SRahul Lakkireddy 
55ad75b7d3SRahul Lakkireddy struct cudbg_buffer {
56ad75b7d3SRahul Lakkireddy 	u32 size;
57ad75b7d3SRahul Lakkireddy 	u32 offset;
58ad75b7d3SRahul Lakkireddy 	char *data;
59ad75b7d3SRahul Lakkireddy };
60a7975a2fSRahul Lakkireddy 
61a7975a2fSRahul Lakkireddy struct cudbg_error {
62a7975a2fSRahul Lakkireddy 	int sys_err;
63a7975a2fSRahul Lakkireddy 	int sys_warn;
64a7975a2fSRahul Lakkireddy 	int app_err;
65a7975a2fSRahul Lakkireddy };
66a7975a2fSRahul Lakkireddy 
67b33af022SRahul Lakkireddy #define CDUMP_MAX_COMP_BUF_SIZE ((64 * 1024) - 1)
68b33af022SRahul Lakkireddy #define CUDBG_CHUNK_SIZE ((CDUMP_MAX_COMP_BUF_SIZE / 1024) * 1024)
69b33af022SRahul Lakkireddy 
7056cf2635SRahul Lakkireddy int cudbg_get_buff(struct cudbg_init *pdbg_init,
7156cf2635SRahul Lakkireddy 		   struct cudbg_buffer *pdbg_buff, u32 size,
72a7975a2fSRahul Lakkireddy 		   struct cudbg_buffer *pin_buff);
7356cf2635SRahul Lakkireddy void cudbg_put_buff(struct cudbg_init *pdbg_init,
7456cf2635SRahul Lakkireddy 		    struct cudbg_buffer *pin_buff);
75a7975a2fSRahul Lakkireddy void cudbg_update_buff(struct cudbg_buffer *pin_buff,
76a7975a2fSRahul Lakkireddy 		       struct cudbg_buffer *pout_buff);
77ad75b7d3SRahul Lakkireddy #endif /* __CUDBG_LIB_COMMON_H__ */
78