📄 davrattbl.h
字号:
/* Copyright (c) 1995-2004 Intel Corporation */
/* Intel Confidential */
/* ###########################################################################
### DAV - Direct Access Volume Enhancement to FDI
###
### Module: DavRatTbl.h - Header Types & Macros Include File
###
### $Workfile: DavRatTbl.h $
### $Revision: 9 $
### $NoKeywords: $
########################################################################### */
/*
*****************************************************************
* NOTICE OF LICENSE AGREEMENT
*
* This code is provided by Intel Corp., and the use is governed
* under the terms of a license agreement. See license agreement
* for complete terms of license.
*
* YOU MAY ONLY USE THE SOFTWARE WITH INTEL FLASH PRODUCTS. YOUR
* USE OF THE SOFTWARE WITH ANY OTHER FLASH PRODUCTS IS EXPRESSLY
* PROHIBITED UNLESS AND UNTIL YOU APPLY FOR, AND ARE GRANTED IN
* INTEL'S SOLE DISCRETION, A SEPARATE WRITTEN SOFTWARE LICENSE
* FROM INTEL LICENSING ANY SUCH USE.
*****************************************************************
*/
#ifndef __DAV_RAT_TABLE_H__ /* sentry header */
#define __DAV_RAT_TABLE_H__
#if (DIRECT_ACCESS_VOLUME == TRUE)
/*### Global Declarations
#########################*/
#define RATTBL_MaxEntries (DAV_NUM_CLASS_FILES*2) /* 2 Bytes */
#define RATTBL_MinEntries 1
/*########################################################################*/
/*### ReAllocate Table (RAT) */
/*
// RATTBL_Leader (16 bytes)
//
// 3 2 1
// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 <- Bits ( 4 Bytes)
// +-------------------------------+-------------------------------+
// 0 | UniqueId 1 | NumRows |
// +-------------------------------+-------------------------------+
// 1 | Backup offset |
// +---------------------------------------------------------------+
// 2 | Backup size (in pages) |
// +-------------------------------+-------------------------------+
// 3 | RFU | UniqueId 2 |
// +---------------+---------------+---------------+---------------+
// | 0 | 1 | 2 | 3 | <- Byte
//
*/
typedef struct
{
UINT16 UniqueId1;
UINT16 NumRows;
UINT32 BackupOffset;
UINT32 BackupSize;
UINT16 RFU_4;
UINT16 UniqueId2;
} RATTBL_Leader, __FAR_ * RATTBL_LeaderPtr;
/*Fix Start:SCR964 */
ERR_CODE RATTBL_AllocateFlash(FDI_Handle aObjHandle, UINT16 aNumRows, UINT32 aBackupOffset, UINT32 aBackupSize);
/*Fix End:SCR964 */
/* UniqueId1 */
#define RATTBL_UniqueId1 0xF0F0
void RATTBL_SetUniqueId1(RATTBL_LeaderPtr aPtr, UINT16 aWord);
UINT16 RATTBL_GetUniqueId1(RATTBL_LeaderPtr aPtr);
/* UniqueId2 */
#define RATTBL_UniqueId2 0xF0F0
void RATTBL_SetUniqueId2(RATTBL_LeaderPtr aPtr, UINT16 aWord);
UINT16 RATTBL_GetUniqueId2(RATTBL_LeaderPtr aPtr);
/* Backup Offset */
void RATTBL_SetBackupOffset(RATTBL_LeaderPtr aPtr, UINT32 aDWord);
UINT32 RATTBL_GetBackupOffset(RATTBL_LeaderPtr aPtr);
/* Backup Size */
void RATTBL_SetBackupSize(RATTBL_LeaderPtr aPtr, UINT32 aDWord);
UINT32 RATTBL_GetBackupSize(RATTBL_LeaderPtr aPtr);
/* Entry Number */
void RATTBL_SetNumRows(RATTBL_LeaderPtr aPtr, UINT16 aWord);
UINT16 RATTBL_GetNumRows(RATTBL_LeaderPtr aPtr);
/*
// RATTBL_Entry (12 bytes)
// 3 2 1
// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 <- Bits ( 4 Bytes)
// +-------------------------------+-------------------------------+
// 0 | Top Index | Bottom Index | Operation | RFU |
// +-------------------------------+-------------------------------+
// 1 | Top Progress State |
// +-------------------------------+-------------------------------+
// 3 | Btm Progress State |
// +-------------------------------+-------------------------------+
// | 0 | 1 | 2 | 3 | <- Byte
*/
typedef struct
{
UINT8 TopIndex; /* OTT index, 1 byte max */
UINT8 BtmIndex; /* OTT index, 1 byte max */
UINT8 Operation;
UINT8 RFU;
UINT32 TopState;
UINT32 BtmState;
} RATTBL_Entry, __FAR_ * RATTBL_EntryPtr;
/* Top Index */
void RATTBL_SetRatEntryTopIndex(RATTBL_EntryPtr aPtr, UINT8 aWord);
UINT8 RATTBL_GetRatEntryTopIndex(RATTBL_EntryPtr aPtr);
/* Bottom Index */
void RATTBL_SetRatEntryBtmIndex(RATTBL_EntryPtr aPtr, UINT8 aWord);
UINT8 RATTBL_GetRatEntryBtmIndex(RATTBL_EntryPtr aPtr);
/* Entry Operation */
#define RATTBL_MASK_RatEntryOperation 0xFF /* 8 bit Mask */
#define RATTBL_RatEntryOperation_EntryUnused 0xFF /* 1111 1111 */
#define RATTBL_RatEntryOperation_ModifyWithBackup 0xFE /* 1111 1110 */
#define RATTBL_RatEntryOperation_ModifyWithNoBackup 0xFC /* 1111 1100 */
#define RATTBL_RatEntryOperation_BackupOnly 0xF8 /* 1111 1000 */
#define RATTBL_RatEntryOperation_RestoreAndDeleteBackup 0xF0 /* 1111 0000 */
void RATTBL_SetRatEntryOperation(RATTBL_EntryPtr aPtr, UINT8 aByte);
UINT8 RATTBL_GetRatEntryOperation(RATTBL_EntryPtr aPtr);
/* Bottom Status */
#define RATTBL_MASK_RatEntryBtmProgressState 0xFFFFFFFF
#define RATTBL_RatEntryBtmProgressState_NoOperationInProgress 0xFFFFFFFF
#define RATTBL_RatEntryBtmProgressState_BkupOfOrigGroupInProgress 0xFFFFFFFC
#define RATTBL_RatEntryBtmProgressState_RestartBtmBlkBkupGroupInReclaim 0xFFFFFFF0
#define RATTBL_RatEntryBtmProgressState_RestartBtmBlkBkupGroupReclaimComplete 0xFFFFFFC0
#define RATTBL_RatEntryBtmProgressState_RestartTopBlkBkupGroupInReclaim 0xFFFFFF00
#define RATTBL_RatEntryBtmProgressState_RestartTopBlkBkupGroupReclaimComplete 0xFFFFFC00
#define RATTBL_RatEntryBtmProgressState_BkupOfOrigGroupComplete 0xFFFFF000
#define RATTBL_RatEntryBtmProgressState_BtmBlkOrigGroupInReclaim 0xFFFFC000
#define RATTBL_RatEntryBtmProgressState_BtmBlkOrigGroupReclaimComplete 0xFFFF0000
#define RATTBL_RatEntryBtmProgressState_TopBlkOrigGroupInReclaim 0xFFFC0000
#define RATTBL_RatEntryBtmProgressState_TopBlkOrigGroupReclaimComplete 0xFFF00000
#define RATTBL_RatEntryBtmProgressState_ModifyInProgress 0xFFC00000
void RATTBL_SetRatEntryBtmProgressState(RATTBL_EntryPtr aPtr, UINT32 aDWord);
UINT32 RATTBL_GetRatEntryBtmProgressState(RATTBL_EntryPtr aPtr);
UINT32 RATTBL_GetRecoveredRatEntryBtmProgressState(RATTBL_EntryPtr aPtr, FDI_Handle aHandle);
/* Top Status */
#define RATTBL_MASK_RatEntryTopProgressState 0xFFFFFFFF
#define RATTBL_RatEntryTopProgressState_NoOperationInProgress 0xFFFFFFFF
#define RATTBL_RatEntryTopProgressState_ModifyComplete 0xFFFFFFFC
#define RATTBL_RatEntryTopProgressState_BtmBlkBkupGroupInReclaim 0xFFFFFFF0
#define RATTBL_RatEntryTopProgressState_BtmBlkBkupGroupReclaimComplete 0xFFFFFFC0
#define RATTBL_RatEntryTopProgressState_TopBlkBkupGroupInReclaim 0xFFFFFF00
#define RATTBL_RatEntryTopProgressState_TopBlkBkupGroupReclaimComplete 0xFFFFFC00
#define RATTBL_RatEntryTopProgressState_ModifyUserObjectsComplete 0xFFFFF000
void RATTBL_SetRatEntryTopProgressState(RATTBL_EntryPtr aPtr, UINT32 aDWord);
UINT32 RATTBL_GetRatEntryTopProgressState(RATTBL_EntryPtr aPtr);
UINT32 RATTBL_GetRecoveredRatEntryTopProgressState(RATTBL_EntryPtr aPtr, FDI_Handle aHandle);
/*
// RATTBL_ObjectTable (28 bytes)
//
// 3 2 1
// 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 <- Bits ( 4 Bytes)
// +---------------------------------------------------------------+
// 0 | |
// + +
// 1 | |
// + RatHeader +
// 2 | |
// + +
// 3 | |
// +---------------------------------------------------------------+
// 4 | RatEntry[RATTBL_MinEntries] |
// + +
// .. | NOTE: The design does NOT read the entire table into SRAM |
// +---------------+---------------+---------------+---------------+
// | 0 | 1 | 2 | 3 | <- Byte
//
*/
typedef struct
{
RATTBL_Leader RatHeader;
RATTBL_Entry RatEntry[RATTBL_MinEntries];
} RATTBL_ObjectTable, __FAR_ * RATTBL_ObjectTablePtr;
/*########################################################################*/
/*### Public Functions */
#define RATTBL_CalcTableSize(aNumRows) \
(sizeof(RATTBL_Leader)+(sizeof(RATTBL_Entry)*aNumRows))
/* Table functions */
ERR_CODE RATTBL_WriteRatEntry(FDI_Handle aHandle, RATTBL_EntryPtr aPtr);
ERR_CODE RATTBL_WriteRatEntryBtmProgressState(FDI_HandlePtr aHandle, RATTBL_EntryPtr aPtr);
ERR_CODE RATTBL_WriteRatEntryTopProgressState(FDI_HandlePtr aHandle, RATTBL_EntryPtr aPtr);
/* Search functions */
ERR_CODE RATTBL_GetFirstRatEntry (FDI_Handle* aHandlePtr, RATTBL_EntryPtr aEntryPtr, RATTBL_LeaderPtr aLeaderPtr);
ERR_CODE RATTBL_GetFirstRatEntry2(FDI_Handle* aHandlePtr, RATTBL_EntryPtr aEntryPtr, RATTBL_LeaderPtr aLeaderPtr);
ERR_CODE RATTBL_GetNextRatEntry (FDI_Handle* aNextHandle, RATTBL_EntryPtr aEntryPtr, FDI_Handle* aCurrentHandle);
#endif /* DIRECT_ACCESS_VOLUME */
#endif /* sentrydif */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -