#ifndef _SYS_PLAT_ECC_DIMM_H
#define _SYS_PLAT_ECC_DIMM_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
#include <sys/int_types.h>
#include <sys/cheetahregs.h>
#include <sys/cpuvar.h>
#include <sys/dditypes.h>
#include <sys/ddipropdefs.h>
#include <sys/ddi_impldefs.h>
#include <sys/sunddi.h>
#include <sys/platform_module.h>
#include <sys/errno.h>
#include <sys/conf.h>
#include <sys/cmn_err.h>
#include <sys/sysmacros.h>
#include <sys/mc-us3.h>
#include <sys/plat_ecc_unum.h>
#define PLAT_MAX_DIMM_SID_LEN 16
#define PLAT_MAX_DIMMS_PER_BOARD 32
typedef char plat_dimm_sid_t[PLAT_MAX_DIMM_SID_LEN];
typedef struct plat_dimm_sid_request_data {
plat_ecc_msg_hdr_t pdsrd_header;
uint8_t pdsrd_board_num;
} plat_dimm_sid_request_data_t;
#define pdsrd_major_version pdsrd_header.emh_major_ver
#define pdsrd_minor_version pdsrd_header.emh_minor_ver
#define pdsrd_msg_type pdsrd_header.emh_msg_type
#define pdsrd_msg_length pdsrd_header.emh_msg_length
typedef struct plat_dimm_sid_board_data {
plat_ecc_msg_hdr_t pdsbd_header;
uint32_t pdsbd_errno;
uint8_t pdsbd_board_num;
uint8_t pdsbd_pad1;
uint16_t pdsbd_pad2;
uint32_t pdsbd_valid_bitmap;
plat_dimm_sid_t pdsbd_dimm_sids[PLAT_MAX_DIMMS_PER_BOARD];
} plat_dimm_sid_board_data_t;
#define pdsbd_major_version pdsbd_header.emh_major_ver
#define pdsbd_minor_version pdsbd_header.emh_minor_ver
#define pdsbd_msg_type pdsbd_header.emh_msg_type
#define pdsbd_msg_length pdsbd_header.emh_msg_length
#define PLAT_ECC_DIMM_SID_VERSION_MAJOR 1
#define PLAT_ECC_DIMM_SID_VERSION_MINOR 1
#define PDSB_STATE_INVALID 0x0
#define PDSB_STATE_STORE_IN_PROGRESS 0x1
#define PDSB_STATE_STORED 0x2
#define PDSB_STATE_FAILED_TO_STORE 0x3
typedef struct plat_dimm_sid_board {
kmutex_t pdsb_lock;
uint8_t pdsb_state;
uint32_t pdsb_valid_bitmap;
plat_dimm_sid_t pdsb_dimm_sids[PLAT_MAX_DIMMS_PER_BOARD];
} plat_dimm_sid_board_t;
extern int plat_request_mem_sids(int boardnum);
extern int plat_store_mem_sids(plat_dimm_sid_board_data_t *data);
extern int plat_discard_mem_sids(int boardnum);
extern plat_dimm_sid_board_t domain_dimm_sids[];
#ifdef __cplusplus
}
#endif
#endif