/* SPDX-License-Identifier: GPL-2.0-or-later */
#define IG_SUCCESS    (0)
#define IG_UNSUPPORT  (-1)
#define IG_ERROR      (-2)

#define NVME_VSC_GET_EVENT_LOG  0xC2
#define NVME_VSC_GET            0xE6
#define NVME_VSC_TYPE1_GET      0xFE
#define VSC_FN_GET_CDUMP        0x08
#define IGVSC_SIG               0x69677673
#define EVLOG_SIG               0x65766C67
#define SRB_SIGNATURE           0x544952474F4E4E49ULL

#define XCLEAN_LINE	            "\033[K"
#define SIZE_MB		            0x100000

struct evlg_flush_hdr {
	unsigned int signature;
	unsigned int fw_ver[2];
	unsigned int fw_type : 8;
	unsigned int log_type : 8;
	unsigned int project : 16;
	unsigned int trace_cnt;
	unsigned int sout_crc;
	unsigned int reserved[2];
};

struct eventlog {
	unsigned int ms;
	unsigned int param[7];
};

struct drvinfo_t {
	unsigned char  signature;
	unsigned char  fw_base;
	unsigned short socid;
	unsigned char  soc_ver[4];
	unsigned char  loader_version[8];
	unsigned char  nand_devids[6];
	unsigned char  ddr_type;
	unsigned char  ddr_size;
	unsigned char  rsvd1[8];
	unsigned char  origin_fw_name[8];
	unsigned long long nand_type;
	unsigned int   board_type[5];
	unsigned short soc_type;
	unsigned char  build_mode;
	unsigned char  rsvd2;
	unsigned int   ftl_build_num;
	unsigned short soc_reg;
	unsigned char  rsvd3[2];
	unsigned int   cur_cpu_clk;
	unsigned int   cur_nf_clk;
	unsigned char  nand_geo[4];
	unsigned int   fw_d2h_info_bit;
	unsigned int   spi_flash_id;
	unsigned char  rom_version[8];
	unsigned char  rsvd4[404];
};

struct cdump_pack {
	unsigned int ilenth;
	char fwver[8];
};

struct cdumpinfo {
	unsigned int sig;
	unsigned int ipackcount;
	struct cdump_pack cdumppack[32];
};