#ifndef _SYS_NVME_SOLIDIGM_H
#define _SYS_NVME_SOLIDIGM_H
#include <sys/nvme/solidigm_p5xxx.h>
#include <sys/nvme/solidigm_ps10x0.h>
#ifdef __cplusplus
extern "C" {
#endif
#define INTEL_PCI_VID 0x8086
#define SOLIDIGM_PCI_VID 0x25e
#pragma pack(1)
typedef struct {
uint8_t sse_type;
uint8_t sse_rsvd2[2];
uint8_t sse_norm;
uint8_t sse_rsvd4;
uint8_t sse_raw[6];
uint8_t sse_rsvd11;
} solidigm_smart_ent_t;
typedef enum {
SOLIDIGM_SMART_TYPE_PROGRAM_FAIL = 0xab,
SOLIDIGM_SMART_TYPE_ERASE_FAIL = 0xac,
SOLIDIGM_SMART_TYPE_WEAR_LEVEL = 0xad,
SOLIDIGM_SMART_TYPE_E2E_ERROR_DET = 0xb8,
SOLIDIGM_SMART_TYPE_CRC_ERROR = 0xc7,
SOLIDIGM_SMART_TYPE_TIMED_MEDIA_WEAR = 0xe2,
SOLIDIGM_SMART_TYPE_TIMED_HOST_READ = 0xe3,
SOLIDIGM_SMART_TYPE_TIMED_TIMER = 0xe4,
SOLIDIGM_SMART_TYPE_IN_FLIGHT_READ = 0xe5,
SOLIDIGM_SMART_TYPE_IN_FLIGHT_WRITE = 0xe6,
SOLIDIGM_SMART_TYPE_THERM_THROTTLE = 0xea,
SOLIDIGM_SMART_TYPE_RESKU = 0xee,
SOLIDIGM_SMART_TYPE_RETRY_BUF_OVRFLW = 0xf0,
SOLIDIGM_SMART_TYPE_PLL_LOSS = 0xf3,
SOLIDIGM_SMART_TYPE_NAND_WRITE = 0xf4,
SOLIDIGM_SMART_TYPE_HOST_WRITE = 0xf5,
SOLIDIGM_SMART_TYPE_SYS_LIFE = 0xf6,
SOLIDIGM_SMART_TYPE_NAND_READ = 0xf8,
SOLIDIGM_SMART_TYPE_AVAIL_FW_DOWN = 0xf9,
SOLIDIGM_SMART_TYPE_READ_COLL = 0xfa,
SOLIDIGM_SMART_TYPE_WRITE_COLL = 0xfb,
SOLIDIGM_SMART_TYPE_XOR_PASS = 0xfc,
SOLIDIGM_SMART_TYPE_XOR_FAIL = 0xfd,
SOLIDIGM_SMART_TYPE_XOR_INVOKE = 0xfe,
} solidigm_smart_type_t;
typedef struct {
solidigm_smart_ent_t vsl_data[512 / sizeof (solidigm_smart_ent_t)];
} solidigm_vul_smart_log_t;
typedef struct {
uint64_t temp_cur;
uint64_t temp_over_last;
uint64_t temp_over_life;
uint64_t temp_comp_life_high;
uint64_t temp_comp_life_low;
uint8_t temp_rsvd40[40];
uint64_t temp_norm_max_warn;
uint8_t temp_rsvd88[8];
uint64_t temp_spec_min_op;
uint64_t temp_est_off;
} solidigm_vul_temp_t;
#pragma pack()
#ifndef __CHECKER__
CTASSERT(sizeof (solidigm_smart_ent_t) == 12);
CTASSERT(sizeof (solidigm_vul_smart_log_t) <= 512);
CTASSERT(sizeof (solidigm_vul_smart_log_t) > 500);
CTASSERT(sizeof (solidigm_vul_temp_t) == 112);
#endif
#ifdef __cplusplus
}
#endif
#endif