#ifndef _LIBJEDEC_HEX2SPD_H
#define _LIBJEDEC_HEX2SPD_H
#ifdef __cplusplus
extern "C" {
#endif
#include <libnvpair.h>
#include <stdint.h>
#include <stdbool.h>
#define HEX2SPD_ARR_MAX 16
typedef struct {
const char *hs_key;
data_type_t hs_type;
union {
uint32_t hs_u32;
uint64_t hs_u64;
const char *hs_str;
bool hs_bool;
struct {
uint32_t ha_nval;
uint8_t ha_vals[HEX2SPD_ARR_MAX];
} hs_u8a;
struct {
uint32_t ha_nval;
uint32_t ha_vals[HEX2SPD_ARR_MAX];
} hs_u32a;
struct {
uint32_t ha_nval;
uint64_t ha_vals[HEX2SPD_ARR_MAX];
} hs_u64a;
struct {
uint32_t ha_nval;
boolean_t ha_vals[HEX2SPD_ARR_MAX];
} hs_ba;
} hs_val;
} hex2spd_spd_t;
typedef struct {
const char *ht_file;
hex2spd_spd_t ht_checks[];
} hex2spd_test_t;
extern const hex2spd_test_t samsung_ddr3_rdimm;
extern const hex2spd_test_t micron_ddr3_lrdimm;
extern const hex2spd_test_t micron_ddr4_rdimm;
extern const hex2spd_test_t samsung_ddr4_lrdimm;
extern const hex2spd_test_t advantech_ddr4_sodimm;
extern const hex2spd_test_t advantech_ddr4_udimm;
extern const hex2spd_test_t micron_ddr5_rdimm;
extern const hex2spd_test_t advantech_ddr5_rdimm;
extern const hex2spd_test_t nanya_lp3;
extern const hex2spd_test_t micron_lp4;
extern const hex2spd_test_t micron_lp5;
extern const hex2spd_test_t fake_lp5_camm2;
#ifdef __cplusplus
}
#endif
#endif