📄 com_nvram.h
字号:
typedef union { struct { MV_U32 low; MV_U32 high; } parts; MV_U8 b[8]; MV_U16 w[4]; MV_U32 d[2]; } SAS_ADDR, *PSAS_ADDR;typedef struct _PHY_TUNING { MV_U8 AMP:4; /* 4 bits, amplitude */ MV_U8 Pre_Emphasis:3; /* 3 bits, pre-emphasis */ MV_U8 Reserved_1bit_1:1; /* 1 bit, reserved space */ MV_U8 Drive_En:6; /* 6 bits, drive enable */ MV_U8 Pre_Half_En:1; /* 1 bit, Half Pre-emphasis Enable*/ MV_U8 Reserved_1bit_2:1; /* 1 bit, reserved space */ MV_U8 Reserved[2]; /* 2 bytes, reserved space */} PHY_TUNING, *PPHY_TUNING;/* HBA_FLAG_XX */#define HBA_FLAG_INT13_ENABLE MV_BIT(0) //int 13h enable/disable#define HBA_FLAG_SILENT_MODE_ENABLE MV_BIT(1) //silent mode enable/disable#define HBA_FLAG_ERROR_STOP MV_BIT(2) //if error then stop#define NVRAM_DATA_MAJOR_VERSION 0#define NVRAM_DATA_MINOR_VERSION 1/* HBA_Info_Page is saved in Flash/NVRAM, total 256 bytes. The data area is valid only Signature="MRVL". If any member fills with 0xFF, the member is invalid.*/typedef struct _HBA_Info_Page{ // Dword 0 MV_U8 Signature[4]; /* 4 bytes, structure signature,should be "MRVL" at first initial */ // Dword 1 MV_U8 MinorRev; /* 2 bytes, NVRAM data structure version */ MV_U8 MajorRev; MV_U16 Next_Page; /* 2 bytes, For future data structure expansion, 0 is for NULL pointer and current page is the last page. */ // Dword 2 MV_U8 Major; /* 1 byte, BIOS major version */ MV_U8 Minor; /* 1 byte, BIOS minor version */ MV_U8 OEM_Num; /* 1 byte, OEM number */ MV_U8 Build_Num; /* 1 byte, Build number */ // Dword 3 MV_U8 Page_Code; /* 1 byte, eg. 0 for the 1st page */ MV_U8 Max_PHY_Num; /* 1 byte, maximum PHY number */ MV_U8 Reserved2[2]; // Dword 4 MV_U32 HBA_Flag; /* 4 bytes, should be 0x0000,0000 at first initial HBA flag: refers to HBA_FLAG_XX bit 0 --- HBA_FLAG_BBS_ENABLE bit 1 --- HBA_FLAG_SILENT_MODE_ENABLE bit 2 --- HBA_FLAG_ERROR_STOP bit 3 --- HBA_FLAG_INT13_ENABLE bit 4 --- HBA_FLAG_ERROR_STOP bit 5 --- HBA_FLAG_ERROR_PASS bit 6 --- HBA_FLAG_SILENT_MODE_ENABLE */ // Dword 5 MV_U32 Boot_Device; /* 4 bytes, select boot device */ /* for ata device, it is CRC of the serial number + model number. */ /* for sas device, it is CRC of sas address */ /* for VD, it is VD GUI */ // Dword 6-8 MV_U32 Reserved3[3]; /* 12 bytes, reserved */ // Dword 9-13 MV_U8 Serial_Num[20]; /* 20 bytes, controller serial number */ // Dword 14-29 SAS_ADDR SAS_Address[8]; /* 64 bytes, SAS address for each port */ // Dword 30-43 MV_U8 Reserved4[56]; /* 56 bytes, reserve space for future,initial as 0xFF */ // Dword 44-45 MV_U8 PHY_Rate[8]; /* 8 bytes, 0: 1.5G, 1: 3.0G, should be 0x01 at first initial */ // Dword 46-53 PHY_TUNING PHY_Tuning[8]; /* 32 bytes, PHY tuning parameters for each PHY*/ // Dword 54-62 MV_U32 Reserved5[9]; /* 9 dword, reserve space for future,initial as 0xFF */ // Dword 63 MV_U8 Reserved6[3]; /* 3 bytes, reserve space for future,initial as 0xFF */ MV_U8 Check_Sum; /* 1 byte, checksum for this structure,Satisfy sum of every 8-bit value of this structure */}HBA_Info_Page, *pHBA_Info_Page; /* total 256 bytes */#define FLASH_PARAM_SIZE (sizeof(HBA_Info_Page))#define ODIN_FLASH_SIZE 0x40000 //.256k bytes#define PARAM_OFFSET ODIN_FLASH_SIZE - 0x100 //.255k bytesMV_U8 mvui_init_param(MV_PVOID This, pHBA_Info_Page pHBAInfo);//get initial data from flashMV_U8 mvCaculateChecksum(MV_PU8 Address, MV_U32 Size);MV_U8 mvVerifyChecksum(MV_PU8 Address, MV_U32 Size);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -