#ifndef _SPD_LP5_H
#define _SPD_LP5_H
#include <sys/bitext.h>
#include "spd_common.h"
#ifdef __cplusplus
extern "C" {
#endif
#define SPD_LP5_NBYTES 0x00
#define SPD_LP5_NBYTES_BETAHI(r) bitx8(r, 7, 7)
#define SPD_LP5_NBYTES_TOTAL(r) bitx8(r, 6, 4)
#define SPD_LP5_NBYTES_TOTAL_UNDEF 0
#define SPD_LP5_NBYTES_TOTAL_256 1
#define SPD_LP5_NBYTES_TOTAL_512 2
#define SPD_LP5_NBYTES_TOTAL_1024 3
#define SPD_LP5_NBYTES_TOTAL_2048 4
#define SPD_LP5_NBYTES_BETA(r) bitx8(r, 3, 0)
#define SPD_LP5_SPD_REV 0x001
#define SPD_LP5_SPD_REV_ENC(r) bitx8(r, 7, 4)
#define SPD_LP5_SPD_REV_ADD(r) bitx8(r, 3, 0)
#define SPD_LP5_SPD_REV_V1 1
#define SPD_LP5_DRAM_TYPE 0x002
#define SPD_LP5_MOD_TYPE 0x003
#define SPD_LP5_MOD_TYPE_ISHYBRID(r) bitx8(r, 7, 7)
#define SPD_LP5_MOD_TYPE_HYBRID(r) bitx8(r, 6, 4)
#define SPD_LP5_MOD_TYPE_HYBRID_NONE 0
#define SPD_LP5_MOD_TYPE_HYBRID_NVDIMM_N 1
#define SPD_LP5_MOD_TYPE_HYBRID_NVDIMM_P 2
#define SPD_LP5_MOD_TYPE_TYPE(r) bitx8(r, 3, 0)
#define SPD_LP5_MOD_TYPE_TYPE_RDIMM 1
#define SPD_LP5_MOD_TYPE_TYPE_UDIMM 2
#define SPD_LP5_MOD_TYPE_TYPE_SODIMM 3
#define SPD_LP5_MOD_TYPE_TYPE_LRDIMM 4
#define SPD_LP5_MOD_TYPE_TYPE_CUDIMM 5
#define SPD_LP5_MOD_TYPE_TYPE_CSODIMM 6
#define SPD_LP5_MOD_TYPE_TYPE_MRDIMM 7
#define SPD_LP5_MOD_TYPE_TYPE_CAMM2 8
#define SPD_LP5_MOD_TYPE_TYPE_DDIMM 10
#define SPD_LP5_MOD_TYPE_TYPE_SOLDER 11
#define SPD_LP5_DENSITY 0x004
#define SPD_LP5_DENSITY_NBG_BITS(r) bitx8(r, 7, 6)
#define SPD_LP5_DENSITY_NBG_BITS_MAX 2
#define SPD_LP5_DENSITY_NBA_BITS(r) bitx8(r, 5, 4)
#define SPD_LP5_DENSITY_NBA_BITS_BASE 2
#define SPD_LP5_DENSITY_NBA_BITS_MAX 4
#define SPD_LP5_DENSITY_DENSITY(r) bitx8(r, 3, 0)
#define SPD_LP5_DENSITY_DENSITY_1Gb 2
#define SPD_LP5_DENSITY_DENSITY_2Gb 3
#define SPD_LP5_DENSITY_DENSITY_4Gb 4
#define SPD_LP5_DENSITY_DENSITY_8Gb 5
#define SPD_LP5_DENSITY_DENSITY_16Gb 6
#define SPD_LP5_DENSITY_DENSITY_32Gb 7
#define SPD_LP5_DENSITY_DENSITY_12Gb 8
#define SPD_LP5_DENSITY_DENSITY_24Gb 9
#define SPD_LP5_DENSITY_DENSITY_3Gb 10
#define SPD_LP5_DENSITY_DENSITY_6Gb 11
#define SPD_LP5_ADDRESS 0x005
#define SPD_LP5_ADDRESS_NROWS(x) bitx8(x, 5, 3)
#define SPD_LP5_ADDRESS_NROW_BASE 12
#define SPD_LP5_ADDRESS_NROW_MAX 18
#define SPD_LP5_ADDRESS_BCOL(x) bitx8(x, 2, 0)
#define SPD_LP5_ADDRESS_BCOL_3BA6C 0
#define SPD_LP5_ADDRESS_BCOL_4BA6C 1
#define SPD_LP5_PKG 0x006
#define SPD_LP5_PKG_TYPE(r) bitx8(r, 7, 7)
#define SPD_LP5_PKG_TYPE_MONO 0
#define SPD_LP5_PKG_TYPE_NOT 1
#define SPD_LP5_PKG_DIE_CNT(r) bitx8(r, 6, 4)
#define SPD_LP5_DIE_CNT_1 0
#define SPD_LP5_DIE_CNT_2 1
#define SPD_LP5_DIE_CNT_3 2
#define SPD_LP5_DIE_CNT_4 3
#define SPD_LP5_DIE_CNT_5 4
#define SPD_LP5_DIE_CNT_6 5
#define SPD_LP5_DIE_CNT_16 6
#define SPD_LP5_DIE_CNT_8 7
#define SPD_LP5_PKG_DQSDW(r) bitx8(r, 3, 1)
#define SPD_LP5_PKG_DQSDW_1 0
#define SPD_LP5_PKG_DQSDW_16 1
#define SPD_LP5_PKG_DQSDW_2 2
#define SPD_LP5_PKG_DQSDW_4 4
#define SPD_LP5_PKG_DQSDW_8 8
#define SPD_LP5_PKG_SLIDX(r) bitx8(r, 1, 0)
#define SPD_LP5_PKG_SLIDX_UNSPEC 0
#define SPD_LP5_PKG_SLIDX_B16SLM1 1
#define SPD_LP5_OPT_FEAT 0x009
#define SPD_LP5_OPT_FEAT_PPR(r) bitx8(r, 7, 6)
#define SPD_LP5_OPT_FEAT_PPR_NOTSUP 0
#define SPD_LP5_OPT_FEAT_PPR_SUP 1
#define SPD_LP5_OPT_FEAT_SOFT_PPR(r) bitx8(r, 5, 5)
#define SPD_LP5_MOD_ORG 0x00c
#define SPD_LP5_MOD_ORG_IDENT(r) bitx8(r, 6, 6)
#define SPD_LP5_MOD_ORG_IDENT_STD 0
#define SPD_LP5_MOD_ORG_IDENT_BYTE 1
#define SPD_LP5_MOD_ORG_RANK(r) bitx8(r, 5, 3)
#define SPD_LP5_MOD_ORG_RANK_BASE 1
#define SPD_LP5_MOD_ORG_RANK_MAX 4
#define SPD_LP5_MOD_ORG_WIDTH(r) bitx8(r, 2, 0)
#define SPD_LP5_MOD_ORG_WIDTH_BASE 2
#define SPD_LP5_MOD_ORG_WIDTH_MAX 32
#define SPD_LP5_WIDTH 0x00d
#define SPD_LP5_WIDTH_SUBCHAN(r) bitx8(r, 2, 0)
#define SP5_LP5_WIDTH_SUBCHAN_16b 1
#define SP5_LP5_WIDTH_SUBCHAN_32b 2
#define SPD_LP5_SIGLOAD 0x010
#define SPD_LP5_SIGLOAD1_DSM_LOAD(r) bitx8(r, 7, 6)
#define SPD_LP5_SIGLOAD1_DSM_LOAD_MAX 4
#define SPD_LP5_SIGLOAD1_CAC_LOAD(r) bitx8(r, 5, 3)
#define SPD_LP5_SIGLOAD1_CAC_LOAD_MAX 8
#define SPD_LP5_SIGLOAD1_CS_LOAD(r) bitx8(r, 2, 0)
#define SPD_LP5_SIGLOAD1_CS_LOAD_MAX 8
#define SPD_LP5_TIMEBASE 0x011
#define SPD_LP5_TIMEBASE_MTB(r) bitx8(r, 3, 2)
#define SPD_LP5_TIMEBASE_MTB_125ps 0
#define SPD_LP5_TIMEBASE_FTB(r) bitx8(r, 1, 0)
#define SPD_LP5_TIMEBASE_FTB_1ps 0
#define SPD_LP5_MTB_PS 125
#define SPD_LP5_FTB_PS 1
#define SPD_LP5_TCKAVG_MIN 0x012
#define SPD_LP5_TCKAVG_MIN_FINE 0x07d
#define SPD_LP5_TCKAVG_MAX 0x013
#define SPD_LP5_TCKAVG_MAX_FINE 0x07c
#define SPD_LP5_TAA_MIN 0x018
#define SPD_LP5_TAA_MIN_FINE 0x07b
#define SPD_LP5_TRCD_MIN 0x01a
#define SPD_LP5_TRCD_MIN_FINE 0x07a
#define SPD_LP5_TRPAB_MIN 0x01b
#define SPD_LP5_TRPAB_MIN_FINE 0x079
#define SPD_LP5_TRPPB_MIN 0x01c
#define SPD_LP5_TRPPB_MIN_FINE 0x078
#define SPD_LP5_TRFCAB_MIN_LO 0x1d
#define SPD_LP5_TRFCAB_MIN_HI 0x1e
#define SPD_LP5_TRFCPB_MIN_LO 0x1f
#define SPD_LP5_TRFCPB_MIN_HI 0x20
#ifdef __cplusplus
}
#endif
#endif