亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fmd_stub.cpp

?? 6410BSP3
?? CPP
字號:
/*
 * fmd_stub.cpp
 */
 
extern "C"	// hmseo-061028
{
#include <WMRConfig.h>
#include <WMRTypes.h>

#include <OSLessWMROAM.h>
#include <FTL.h>
#include <VFLBuffer.h>
#include <VFL.h>
#include <FIL.h>
#include <WMR_Bootpart.h>

#include <fmd.h>
}


#define SpinForever()   while (1)

/*****************************************************************************/
/* Debug Print #defines                                                      */
/*****************************************************************************/
#define	EXAM_INF_MSG_ON
#define	EXAM_LOG_MSG_ON

#define     EXAM_ERR_PRINT(x)            WMR_RTL_PRINT(x)
#define     EXAM_RTL_PRINT(x)            WMR_RTL_PRINT(x)

#if defined(EXAM_LOG_MSG_ON)
#define     EXAM_LOG_PRINT(x)            WMR_DBG_PRINT(x)
#else
#define     EXAM_LOG_PRINT(x)
#endif

#if defined(EXAM_INF_MSG_ON)
#define     EXAM_INF_PRINT(x)            WMR_DBG_PRINT(x)
#else
#define     EXAM_INF_PRINT(x)
#endif


/*****************************************************************************/
/*                                                                           */
/* NAME                                                                      */
/*      WMR_Init			                                                 */
/* DESCRIPTION                                                               */
/*      This function inits whimory & format & open.						 */
/* PARAMETERS                                                                */
/*      pTotalScts 	[OUT] 	the count of sectors which user can use.         */
/* RETURN VALUES                                                             */
/*		WMR_SUCCESS															 */
/*				FTL_Open is completed										 */
/*		WMR_CRITICAL_ERROR													 */
/*				FTL_Open is failed											 */
/* NOTES                                                                     */
/*                                                                           */
/*****************************************************************************/
INT32
WMR_Init()
{
	Buffer *pBuf;
	INT32 	nRet;
	LowFuncTbl *pLowFuncTbl;
	UINT32	nSig;
	UINT32  nSyncRet;
//	UINT32  pTotalScts;

	nRet = FIL_Init();

	if (nRet != FIL_SUCCESS)
	{
		return WMR_CRITICAL_ERROR;
	}

	EXAM_RTL_PRINT((TEXT("[FTL:MSG] FIL_Init			[OK]\n")));

	nRet = BUF_Init();

	if (nRet != BUF_SUCCESS)
	{
		return WMR_CRITICAL_ERROR;
	}

	EXAM_RTL_PRINT((TEXT("[FTL:MSG] BUF_Init			[OK]\n")));

	nRet = VFL_Init();

	if (nRet != VFL_SUCCESS)
	{
		return WMR_CRITICAL_ERROR;
	}

	EXAM_RTL_PRINT((TEXT("[FTL:MSG] VFL_Init			[OK]\n")));

#if 0
	nRet = FTL_Init();

	if (nRet != FTL_SUCCESS)
	{
		return WMR_CRITICAL_ERROR;
	}

	EXAM_RTL_PRINT((TEXT("[FTL:MSG] FTL_Init			[OK]\n")));
#endif

	pBuf = BUF_Get(BUF_MAIN_AND_SPARE);

	if (pBuf == NULL)
	{
		return WMR_CRITICAL_ERROR;
	}

	pLowFuncTbl = FIL_GetFuncTbl();

	nRet = pLowFuncTbl->Read(0, Signature_Ppn, FULL_SECTOR_BITMAP_PAGE, enuBOTH_PLANE_BITMAP,
							 pBuf->pData, pBuf->pSpare, FALSE32, TRUE32);

#if	0
	if ( nRet == FIL_U_ECC_ERROR )		// hmseo-061028
	{
		pLowFuncTbl->Erase(0, 0, enuBOTH_PLANE_BITMAP);
		nRet = pLowFuncTbl->Read(0, Signature_Ppn, FULL_SECTOR_BITMAP_PAGE, enuBOTH_PLANE_BITMAP,
								 pBuf->pData, pBuf->pSpare, FALSE32, TRUE32);
	}	// hmseo-061028
#endif

	nSig = *(UINT32 *)(pBuf->pData);

	BUF_Release(pBuf);

	if (nRet == FIL_SUCCESS_CLEAN)
	{
		UINT32	nRetTemp;
		UINT32 *pTemp;

		EXAM_RTL_PRINT((TEXT("[FTL:MSG] Not Formated !\n")));

		nRetTemp = VFL_Format();

		if (nRetTemp != VFL_SUCCESS)
		{
			return WMR_CRITICAL_ERROR;
		}

		EXAM_RTL_PRINT((TEXT("[FTL:MSG] VFL_Format			[OK]\n")));
#if 0
		nRetTemp = FTL_Format();

		if (nRetTemp != FTL_SUCCESS)
		{
			return WMR_CRITICAL_ERROR;
		}

		EXAM_RTL_PRINT((TEXT("[FTL:MSG] FTL_Format			[OK]\n")));
#endif
		pBuf = BUF_Get(BUF_MAIN_AND_SPARE);

		if (pBuf == NULL)
		{
			return WMR_CRITICAL_ERROR;
		}

		pTemp= (UINT32 *)(pBuf->pData);

		*pTemp= WMR_SIGNATURE;

		pLowFuncTbl->Write(0, Signature_Ppn, FULL_SECTOR_BITMAP_PAGE, enuBOTH_PLANE_BITMAP, pBuf->pData, pBuf->pSpare);

		BUF_Release(pBuf);

		nRetTemp = pLowFuncTbl->Sync(0, &nSyncRet);

		if (nRetTemp != FIL_SUCCESS)
		{
			return WMR_CRITICAL_ERROR;
		}

		nSig = WMR_SIGNATURE;

		EXAM_RTL_PRINT((TEXT("[FTL:MSG] Write Signature		[OK]\n")));

	}
	else if (nRet != FIL_SUCCESS)
	{
		return WMR_CRITICAL_ERROR;
	}

	if (nSig != WMR_SIGNATURE)
	{
		EXAM_ERR_PRINT((TEXT("[FTL:ERR] Version Fail			[OK]\n")));
		return WMR_CRITICAL_ERROR;
	}

	nRet = VFL_Open();

	if (nRet != VFL_SUCCESS)
	{
		return WMR_CRITICAL_ERROR;
	}

	EXAM_RTL_PRINT((TEXT("[FTL:MSG] VFL_Open			[OK]\n")));
#if 0
	nRet = FTL_Open(&pTotalScts);

	if (nRet != FTL_SUCCESS)
	{
		return WMR_CRITICAL_ERROR;
	}

	EXAM_RTL_PRINT((TEXT("[FTL:MSG] FTL_Open			[OK]\n")));

	#if (WMR_READ_RECLAIM)
	nRet = FTL_ReadReclaim();

	if (nRet != FTL_SUCCESS)
	{
		return WMR_CRITICAL_ERROR;
	}

	EXAM_RTL_PRINT((TEXT("[FTL:MSG] FTL_ReadReclaim		[OK]\n")));
	#endif
#endif
	return WMR_SUCCESS;
}


PVOID  FMD_Init(LPCTSTR lpActiveReg, PPCI_REG_INFO pRegIn, PPCI_REG_INFO pRegOut)
{
	if(WMR_Init()!=WMR_SUCCESS) {
	    RETAILMSG(1, (L"BP_ReadLogicalSector : WMR_Init is failed.\r\n"));
//	    SpinForever();
	}

	return((PVOID) 1);
}

BOOL  FMD_GetInfo(PFlashInfo pFlashInfo)
{
	if (pFlashInfo == NULL)
		return(FALSE);

	pFlashInfo->flashType = NAND;
	pFlashInfo->dwNumBlocks = SUBLKS_TOTAL;
	pFlashInfo->dwBytesPerBlock = PAGES_PER_SUBLK*SECTORS_PER_SUPAGE*BYTES_PER_SECTOR;
	pFlashInfo->wSectorsPerBlock = SECTORS_PER_SUBLK;
	pFlashInfo->wDataBytesPerSector = BYTES_PER_SECTOR;
	return(TRUE);
}

ULONG nCount=0;
BOOL  FMD_ReadSector (SECTOR_ADDR startSectorAddr, LPBYTE pSectorBuff, PSectorInfo pSectorInfoBuff, DWORD dwNumSectors)
{
	Buffer 		stBuf;
	UINT32          nVsnAlign;
	UINT32          nVsnCnt     = dwNumSectors;
	UINT32          nSctToRead;
	INT32            nRet;
	UINT32		nStartPageAddr;

//	RETAILMSG(1, (L"FMD_ReadSector: %x, %x, %x, %x\r\n", startSectorAddr, pSectorBuff, pSectorInfoBuff, dwNumSectors));

	if ((nCount %0x100) == 0 )
	{
		RETAILMSG(1,(L"."));
	}
	nCount++;

	if ((pSectorBuff == NULL) || (pSectorInfoBuff != NULL)){
		RETAILMSG(1, (L"FMD_ReadSector : pSetorBuff null or pSectorInfoBuff not null\r\n"));
		return(FALSE);
	}

	while(nVsnCnt)
	{
		nVsnAlign = startSectorAddr % SECTORS_PER_SUPAGE;
		nStartPageAddr= startSectorAddr/SECTORS_PER_SUPAGE;

		if (nVsnAlign != 0)
		{
			if (nVsnCnt >= (SECTORS_PER_SUPAGE - nVsnAlign))
			{
				nSctToRead = SECTORS_PER_SUPAGE - nVsnAlign;
			}
			else
			{
				nSctToRead = nVsnCnt;
			}
		}
		else
		{
			if (nVsnCnt >= SECTORS_PER_SUPAGE)
			{
				nSctToRead = SECTORS_PER_SUPAGE;
			}
			else
			{
				nSctToRead = nVsnCnt;
			}
		}

		stBuf.eStatus = BUF_AUX;
		stBuf.nBank = 0;
		stBuf.pData = (UINT8 *)pSectorBuff;
		stBuf.pSpare = NULL;

		stBuf.nBitmap = ((((FULL_SECTOR_BITMAP_PAGE >> (SECTORS_PER_SUPAGE - nSctToRead))&FULL_SECTOR_BITMAP_PAGE)<<nVsnAlign)&FULL_SECTOR_BITMAP_PAGE);

		nRet = VFL_Read(nStartPageAddr,        /* Vpn              */
						&stBuf,				/* Buffer   */
						FALSE32);


		if (nRet != VFL_SUCCESS)
		{
			RETAILMSG(1, (TEXT("[BOOTPART:ERR]  VFL_Read (Vsn=%d) Error = 0x%x\r\n"), startSectorAddr, nRet));
			return FALSE;
		}

		nVsnCnt   -= nSctToRead;
		startSectorAddr += nSctToRead;
		pSectorBuff  += nSctToRead * BYTES_PER_SECTOR;
	}

	return(TRUE);
}

BOOL  FMD_WriteSector(SECTOR_ADDR startSectorAddr, LPBYTE pSectorBuff, PSectorInfo pSectorInfoBuff, DWORD dwNumSectors)
{
	Buffer 		stBuf;
	UINT32          nVsnAlign;
	UINT32          nVsnCnt     = dwNumSectors;
	UINT32          nSctToWrite;
	INT32            nRet;
	UINT32		nStartPageAddr;

//	RETAILMSG(1, (L"FMD_WriteSector: %x, %x, %x, %x\r\n", startSectorAddr, pSectorBuff, pSectorInfoBuff, dwNumSectors));

	if ((pSectorBuff == NULL) || (pSectorInfoBuff != NULL)){
		RETAILMSG(1, (L"FMD_WriteSector : pSetorBuff null or pSectorInfoBuff not null\r\n"));
		return(FALSE);
	}

	while(nVsnCnt)
	{
		nVsnAlign = startSectorAddr % SECTORS_PER_SUPAGE;

		nStartPageAddr= startSectorAddr/SECTORS_PER_SUPAGE;

		if (nVsnAlign != 0)
		{
			if (nVsnCnt >= (SECTORS_PER_SUPAGE - nVsnAlign))
			{
				nSctToWrite = SECTORS_PER_SUPAGE - nVsnAlign;
			}
			else
			{
				nSctToWrite = nVsnCnt;
			}
		}
		else
		{
			if (nVsnCnt >= SECTORS_PER_SUPAGE)
			{
				nSctToWrite = SECTORS_PER_SUPAGE;
			}
			else
			{
				nSctToWrite = nVsnCnt;
			}
		}

		stBuf.eStatus = BUF_AUX;
		stBuf.nBank = 0;
		stBuf.pData = (UINT8 *)pSectorBuff;
		stBuf.pSpare = NULL;

		stBuf.nBitmap = ((((FULL_SECTOR_BITMAP_PAGE >> (SECTORS_PER_SUPAGE - nSctToWrite))&FULL_SECTOR_BITMAP_PAGE)<<nVsnAlign)&FULL_SECTOR_BITMAP_PAGE);

		nRet = VFL_Write(nStartPageAddr,        /* Vpn              */
						&stBuf);


		if (nRet != VFL_SUCCESS)
		{
			RETAILMSG(1, (TEXT("[BOOTPART:ERR]  VFL_Write (Vsn=%d) Error = 0x%x\r\n"), startSectorAddr, nRet));
			return FALSE;
		}

		nVsnCnt   -= nSctToWrite;
		startSectorAddr += nSctToWrite;
		pSectorBuff  += nSctToWrite * BYTES_PER_SECTOR;
	}

	return(TRUE);
}

BOOL  FMD_Deinit(PVOID)
{
	return(TRUE);
}

BOOL  FMD_EraseBlock(BLOCK_ID blockID)
{
	if (VFL_Erase(blockID) != VFL_SUCCESS)
	{
		RETAILMSG(1, (TEXT("[EBOOT:ERR] VFL_Erase Error (Blk=%d:nECfgVbn)\r\n"), blockID));
		return (FALSE);
	}

	return(TRUE);
}

#if 0
BOOL  FMD_GetInfoEx(PFlashInfoEx pFlashInfo, PDWORD pdwNumRegions)
{
	return(FALSE);
}

DWORD FMD_GetBlockStatus(BLOCK_ID blockID)
{
	return(0);
}

BOOL FMD_SetBlockStatus(BLOCK_ID blockID, DWORD dwStatus)
{
	return(FALSE);
}

void  FMD_PowerUp(VOID)
{
}

VOID  FMD_PowerDown(VOID)
{
}

BOOL  FMD_OEMIoControl(DWORD dwIoControlCode, PBYTE pInBuf, DWORD nInBufSize,
                       PBYTE pOutBuf, DWORD nOutBufSize, PDWORD pBytesReturned)
{
	return(FALSE);
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
奇米888四色在线精品| 不卡的av中国片| 国产成人综合视频| 日本韩国一区二区三区| 日韩午夜小视频| 亚洲精品综合在线| 韩国精品在线观看| 欧美这里有精品| 国产色91在线| 日本在线观看不卡视频| hitomi一区二区三区精品| 日韩欧美视频一区| 亚洲午夜免费电影| 成人黄色国产精品网站大全在线免费观看| 精品1区2区3区| 中文字幕亚洲一区二区va在线| 免播放器亚洲一区| 欧美日韩日本视频| 亚洲精品免费在线| 国产mv日韩mv欧美| 欧美不卡一区二区三区| 日韩精品五月天| 欧美日韩一区二区在线视频| 亚洲乱码国产乱码精品精小说| 国产精品99久久久久久有的能看| 日韩欧美综合在线| 亚洲成人av一区二区三区| 91猫先生在线| 亚洲欧美日韩国产中文在线| 成人国产亚洲欧美成人综合网 | 国产欧美精品国产国产专区| 免费在线一区观看| 制服丝袜亚洲网站| 日韩制服丝袜av| 51午夜精品国产| 日韩精品视频网站| 欧美一卡二卡在线观看| 久久福利视频一区二区| 欧美日韩视频在线一区二区 | 中文字幕欧美激情| 国产精品综合二区| 久久久亚洲精华液精华液精华液| 免费不卡在线视频| 日韩欧美亚洲另类制服综合在线| 麻豆国产欧美日韩综合精品二区| 欧美mv和日韩mv国产网站| 久久电影国产免费久久电影| 国产亚洲午夜高清国产拍精品| 国产不卡视频在线观看| 国产精品久久久久婷婷| 一本大道久久a久久精品综合| 夜夜嗨av一区二区三区中文字幕 | 日韩免费观看高清完整版| 麻豆精品久久精品色综合| 欧美tk—视频vk| 成人激情开心网| 亚洲综合小说图片| 51精品国自产在线| 激情图片小说一区| 国产精品伦理在线| 欧美主播一区二区三区美女| 日韩av电影一区| 日本一区二区三区dvd视频在线 | 美女在线一区二区| 久久综合狠狠综合久久综合88| 高清成人在线观看| 一区二区三区不卡视频在线观看| 欧美老女人在线| 国产精品91xxx| 亚洲乱码国产乱码精品精可以看 | 欧美日韩二区三区| 国内精品嫩模私拍在线| 1000部国产精品成人观看| 欧美体内she精高潮| 精品一区二区日韩| 亚洲图片欧美激情| 欧美顶级少妇做爰| 高清不卡在线观看| 午夜av一区二区| 视频一区二区中文字幕| 久久亚洲精精品中文字幕早川悠里 | 91丝袜国产在线播放| 日韩精品一二三四| 中文字幕中文字幕在线一区| 欧美一级二级三级蜜桃| 99久久久免费精品国产一区二区| 日韩高清在线一区| 亚洲欧美电影院| 国产性天天综合网| 欧美日韩成人在线| 91亚洲永久精品| 国产麻豆9l精品三级站| 日日摸夜夜添夜夜添国产精品| 国产精品久久久久桃色tv| 91精品国产福利| 欧美色图在线观看| 91一区二区三区在线观看| 国产精品91一区二区| 老司机一区二区| 污片在线观看一区二区| 国产精品久久久久久久久免费丝袜 | 亚洲欧美一区二区三区极速播放| 精品粉嫩超白一线天av| 欧美中文一区二区三区| 91麻豆.com| 成人激情小说乱人伦| 国产麻豆成人精品| 精品亚洲成a人| 久久精品免费观看| 日本不卡在线视频| 午夜精品久久久久久久久久| 亚洲一区二区在线免费观看视频| 国产精品白丝在线| 国产精品免费看片| 国产欧美日韩视频一区二区 | 韩国精品免费视频| 久久99精品视频| 激情综合五月婷婷| 精品在线视频一区| 极品少妇xxxx偷拍精品少妇| 奇米综合一区二区三区精品视频| 天天免费综合色| 天堂影院一区二区| 成人午夜av在线| 亚洲人成网站影音先锋播放| 欧美成人精品二区三区99精品| 91麻豆精品国产91久久久资源速度 | 国产一区二区三区免费在线观看| 99久久精品国产精品久久| 欧美久久久一区| 欧美国产精品一区| 日韩成人一区二区| 99久久精品免费看国产| 日韩精品一区在线| 一区二区在线观看免费视频播放| 狠狠色综合日日| 欧美日韩在线精品一区二区三区激情 | 中文字幕+乱码+中文字幕一区| 一区二区欧美国产| 国产福利不卡视频| 4438亚洲最大| 亚洲免费看黄网站| 国产福利电影一区二区三区| 日韩免费观看高清完整版在线观看| 亚洲黄色av一区| 成人综合在线网站| 精品精品国产高清a毛片牛牛| 亚洲国产视频直播| 成人精品一区二区三区中文字幕 | 久久亚洲捆绑美女| 日韩精品免费专区| 91福利资源站| 国产精品久久久久久久久图文区 | 亚洲成a人片综合在线| 成人精品视频一区二区三区尤物| 日韩一区二区不卡| 亚洲制服欧美中文字幕中文字幕| 成人久久18免费网站麻豆| 337p粉嫩大胆噜噜噜噜噜91av| 欧美一级专区免费大片| 成人app在线| 国产成人综合网| 日韩福利电影在线| 亚洲精选视频免费看| 日韩欧美激情四射| 狠狠久久亚洲欧美| 亚洲精品你懂的| 亚洲精品国产精品乱码不99| 日韩欧美一二区| 色综合久久综合中文综合网| 精品在线一区二区| 日韩中文字幕麻豆| 一色桃子久久精品亚洲| 一本一道久久a久久精品| 日本va欧美va瓶| 日本一区二区三区高清不卡| 国产精品一区二区免费不卡| 中文字幕综合网| 欧美性猛片xxxx免费看久爱| 国产一区二区三区不卡在线观看 | 在线观看av一区二区| 欧美一区二区三区日韩视频| 欧美精品第1页| 91视频在线观看免费| 美国三级日本三级久久99| 国产目拍亚洲精品99久久精品| 99国产精品99久久久久久| 午夜激情久久久| 成人欧美一区二区三区1314 | 日本一区二区视频在线| 色婷婷精品久久二区二区蜜臀av | 欧美成人精品福利| 99re热视频精品| 久久99国产乱子伦精品免费| 亚洲6080在线| 亚洲高清免费观看 | 日韩女优电影在线观看| 在线观看免费成人| 99国产精品久久久| 99久久久久久99|