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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? nand_drv_superand.c

?? MTK手機平臺下載工具FLASHTOOL驅(qū)動源碼
?? C
字號:
/*******************************************************************************
*  Copyright Statement:
*  --------------------
*  This software is protected by Copyright and the information contained
*  herein is confidential. The software may not be copied and the information
*  contained herein may not be used or disclosed except with the written
*  permission of MediaTek Inc. (C) 2005
*
*******************************************************************************/

/*******************************************************************************
 *
 * Filename:
 * ---------
 *	 nand_drv_superAND.c 
 *
 * Project:
 * --------
 *   FlashTool Download Agent 
 *
 * Description:
 * ------------
 *   Renesas superAND flash driver. 
 *
 * Author:
 * -------
 *	 Amos Hsu 
 *
 *==============================================================================
 * 				HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *------------------------------------------------------------------------------
 * $Revision$
 * $Modtime$
 * $Log$
 *
 * Mar 8 2006 mtk00539
 * [STP100000669] [DA] Support RENESAS superAND flash read back and format operation.
 * 
 *
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *==============================================================================
 *******************************************************************************/
#include "nand_drv_COMMON.h"
#include "nand_drv_superAND.h"
#include "nand_util_func.h"
#include "NFI.h"

//------------------------------------------------------------------------------
// superAND Command Set                                                         
//------------------------------------------------------------------------------
const NAND_CommandSet_S		g_NAND_superAND_2048_CMD_SET={
	 { 1, 0x90 }	// read id 
	,{ 1, 0x70 }	// read status 
	,{ 1, 0xFF }	// reset device 
	,{ 1, 0x00 }	// read 
	,{ 0, 0 }		// read spare area 
	,{ 1, 0x30 }	// read confirm 
	,{ 0, 0 }		// program 1st half page 
	,{ 1, 0x80 }	// program 
	,{ 1, 0x10 }	// program confirm 
	,{ 1, 0x60 }	// erase 
	,{ 1, 0xD0 }	// erase confirm 
	,{ 0, 0 }		// copyback read 
	,{ 0, 0 }		// copyback read confirm 
	,{ 0, 0 }		// copyback program 
	,{ 0, 0 }		// copyback program confirm 
};


//------------------------------------------------------------------------------
// superAND Callback Function Set                                               
//------------------------------------------------------------------------------
const NAND_CMD_Callback_S	g_NAND_superAND_CB_FUNC_SET={
	NAND_COMMON_ReadID
	,NAND_superAND_Reset
	,NULL
	,NAND_COMMON_ReadStatus
	,NAND_COMMON_BlockErase
	,NAND_superAND_BadBlockSymbol_Check
	,NAND_superAND_BadBlockSymbol_Set
	,NAND_superAND_PageRead
	,NAND_superAND_PageProgram
	,NAND_superAND_SpareRead
	,NAND_superAND_SpareProgram
	,NAND_superAND_CopyBack
};

//------------------------------------------------------------------------------
// Read Device ID Callback Function                                             
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// Reset Device Callback Function                                               
//------------------------------------------------------------------------------
STATUS_E  NAND_superAND_Reset(
				const NAND_DeviceInfo_S  *nand_info
				,const uint32  c_timeout
) {
	return S_DONE;
}

//------------------------------------------------------------------------------
// Read Status Callback Function                                                
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// Block Erase Related Callback Function                                        
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
// Bad Block Symbol Identification Related Callback Function                    
//------------------------------------------------------------------------------
STATUS_E  NAND_superAND_BadBlockSymbol_Check(
				const NAND_DeviceInfo_S  *nand_info
				,const uint32  *p_spare32 /* MUST be 32bits alignment addr */
) {
	return S_DONE;
}

STATUS_E  NAND_superAND_BadBlockSymbol_Set(
				const NAND_DeviceInfo_S  *nand_info
				,uint32  *p_spare32 /* MUST be 32bits alignment addr */
) {
	return S_DONE;
}

//------------------------------------------------------------------------------
// Page Read Callback Function                                                  
//------------------------------------------------------------------------------
STATUS_E  NAND_superAND_PageRead(
				const NAND_DeviceInfo_S  *nand_info
				,const uint32  c_timeout
				,const uint32  row_addr
				,uint32 *p_data32 /* MUST be 32bits alignment addr */
				,uint32  ecc_parity_from_reg[4]
) {
	uint32		page_size;
	uint32		spare_size;
	uint32		column_addr_bits;
	uint32		addr_cycle;
	STATUS_E	ret=S_UNKNOWN_ERR;
	bool		bUsingDMA=TRUE;

	page_size = NUTL_PAGE_SIZE(nand_info);
	spare_size = NUTL_SPARE_SIZE(nand_info);
	column_addr_bits = NUTL_PAGE_ADDR_SHIFT_BITS(nand_info);
	addr_cycle = NUTL_ADDR_CYCLE(nand_info);

	// reset the NFI core state machine, data FIFO and flushing FIFO 
	*NFI_OPCON = 0x0;
	*NFI_CON = 0x0;
	*NFI_FIFOCON = 0x30;

	// sequential read 
	*NFI_CMD = 0x0F;
	// wait til CMD is completely issued 
	while( *NFI_PSTA & STATUS_CMD );

	// fill 1~4 cycle addr 
	*NFI_ADDRL = (row_addr<<column_addr_bits);
	*NFI_ADDRM = 0;
	if( 4 < addr_cycle ) {
		// if addr cycle is more than 4, you have to fill 5th cycle addr 
		*NFI_ADDRM = (row_addr>>(32-column_addr_bits));
	}
	// no. of addr cycle 
	*NFI_ADDNOB = addr_cycle;
	// wait til ADDR is completely issued 
	while( *NFI_PSTA & STATUS_ADDR );

	// wait while superAND device is busy 
	// NOTICE!! the datasheet describes status check(0x70) and read confirm(0x00) flow should be added. 
	// however, those flows don't work, thus use busy state polling instead.                            
	while( *NFI_PSTA & STATUS_BUSY );

	// set burst read by DWORD to start reading 
	*NFI_OPCON = BURST_RD | NOB_DWORD;

#ifdef DISABLE_NFI_DMA
	bUsingDMA = FALSE;
#else
	bUsingDMA = TRUE;
	// activating DMA transfer 
	*NFI_CON |= DMA_RD_EN;
#endif

	// read page data 
	if( S_DONE != (ret=NUTL_FIFO_Read(c_timeout, bUsingDMA, p_data32, page_size)) ) {
		goto end;
	}

end:
	// sequential read stop 
	*NFI_CMD = 0xF0;
	// wait til CMD is completely issued 
	while( *NFI_PSTA & STATUS_CMD );

	// disable burst read 
	*NFI_OPCON = 0x0;

	return ret;
}

//------------------------------------------------------------------------------
// Page Program Callback Function                                               
//------------------------------------------------------------------------------
STATUS_E  NAND_superAND_PageProgram(
				const NAND_DeviceInfo_S  *nand_info
				,const uint32  c_timeout
				,const uint32  row_addr
				,const uint32 *p_data32 /* MUST be 32bits alignment addr */
				,uint32  ecc_parity_from_reg[4]
) {
	return S_CMD_ERR;
}

//------------------------------------------------------------------------------
// Spare Read Callback Function                                                 
//------------------------------------------------------------------------------
STATUS_E  NAND_superAND_SpareRead(
				const NAND_DeviceInfo_S  *nand_info
				,const uint32  c_timeout
				,const uint32  row_addr
				,uint32 *p_spare32 /* MUST be 32bits alignment addr */
) {
	return S_DONE;
}

//------------------------------------------------------------------------------
// Spare Program Callback Function                                              
//------------------------------------------------------------------------------
STATUS_E  NAND_superAND_SpareProgram(
				const NAND_DeviceInfo_S  *nand_info
				,const uint32  c_timeout
				,const uint32  row_addr
				,const uint32 *p_spare32 /* MUST be 32bits alignment addr */
) {
	return S_CMD_ERR;
}

//------------------------------------------------------------------------------
// CopyBack Callback Function                                                   
//------------------------------------------------------------------------------
STATUS_E  NAND_superAND_CopyBack(
				const NAND_DeviceInfo_S  *nand_info
				,const uint32  c_timeout
				,const uint32  src_row_addr
				,const uint32  dest_row_addr
) {
	return S_CMD_ERR;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美影院一区二区| 国产精品18久久久久久久久| 久久99国产精品久久99果冻传媒| 成人免费视频网站在线观看| 日韩欧美激情四射| 亚洲一区在线观看网站| 成人免费高清在线| 久久久久久影视| 美女视频第一区二区三区免费观看网站| 国产风韵犹存在线视精品| 日韩一区二区高清| 五月综合激情网| 欧美吞精做爰啪啪高潮| 亚洲欧美日韩久久| 97成人超碰视| 国产精品国产a| 成a人片亚洲日本久久| 久久综合久久综合久久| 黄网站免费久久| 久久久噜噜噜久久人人看| 久久机这里只有精品| 欧美日韩国产综合草草| 亚洲视频一区二区在线观看| 欧美天天综合网| 成人欧美一区二区三区白人| 成人国产精品免费观看视频| 国产无一区二区| 成人午夜电影网站| 中文字幕精品—区二区四季| 国产精品一二三四| 国产欧美日韩三级| 成人精品小蝌蚪| 国产精品女人毛片| 91一区在线观看| 亚洲综合激情网| 欧美性videosxxxxx| 亚洲综合久久久久| 7777精品伊人久久久大香线蕉 | 67194成人在线观看| 欧美一区二区三区的| 视频一区二区三区入口| 日韩一区二区三区视频| 久久精品国产亚洲高清剧情介绍| 日韩一区二区影院| 国产成人一区二区精品非洲| 国产人成亚洲第一网站在线播放| 高清国产午夜精品久久久久久| 久久婷婷成人综合色| 成人精品亚洲人成在线| 一区二区三区免费观看| 欧美酷刑日本凌虐凌虐| 激情综合网最新| 亚洲国产精品99久久久久久久久| 99r国产精品| 天堂资源在线中文精品| 久久久电影一区二区三区| voyeur盗摄精品| 天堂一区二区在线免费观看| 久久综合九色综合久久久精品综合| 国产女人18毛片水真多成人如厕| 精品在线视频一区| 国产色一区二区| 色哟哟亚洲精品| 狠狠狠色丁香婷婷综合激情 | 国产精品福利一区| 欧美午夜精品理论片a级按摩| 免费久久精品视频| 亚洲色图一区二区| 日韩视频永久免费| 91香蕉视频在线| 韩日精品视频一区| 亚洲国产精品久久久久婷婷884| 欧美不卡一二三| 日本道精品一区二区三区| 狠狠久久亚洲欧美| 亚瑟在线精品视频| 国产精品免费视频一区| 日韩欧美亚洲另类制服综合在线| 日韩理论在线观看| 在线观看视频一区| 国产成人精品免费| 日韩影视精彩在线| 国产精品美女一区二区三区| 欧美电影精品一区二区| 色乱码一区二区三区88| 国产99一区视频免费| 日本aⅴ精品一区二区三区| 亚洲色图欧洲色图婷婷| 国产亲近乱来精品视频| 欧美草草影院在线视频| 欧美日韩成人一区| 91免费观看视频在线| 韩国av一区二区三区在线观看| 亚洲成人自拍一区| 一区二区在线观看不卡| 国产精品三级av| 久久久亚洲精品一区二区三区| 7777精品伊人久久久大香线蕉的 | 最新欧美精品一区二区三区| 精品卡一卡二卡三卡四在线| 91精品国产综合久久福利| 91丝袜美腿高跟国产极品老师 | bt7086福利一区国产| 麻豆91在线播放| 麻豆精品一区二区综合av| 国产一区二区三区| 国内精品视频一区二区三区八戒| 奇米色一区二区| 日韩精品乱码免费| 日本亚洲欧美天堂免费| 免费看欧美女人艹b| 视频一区二区三区中文字幕| 丝袜美腿亚洲一区二区图片| 午夜激情久久久| 天天av天天翘天天综合网 | 调教+趴+乳夹+国产+精品| 亚洲五码中文字幕| 五月婷婷综合在线| 日韩成人免费电影| 久久国产精品一区二区| 国产综合色在线视频区| 国产精品18久久久久久久网站| 成人一区二区三区在线观看 | 精品国产sm最大网站免费看| 欧美电视剧免费全集观看| 2023国产精品自拍| 日本一区二区三级电影在线观看| 国产精品免费视频一区| 亚洲激情图片一区| 午夜av区久久| 精品一区二区免费在线观看| 国产河南妇女毛片精品久久久| 成人av在线影院| 欧美日韩精品一区二区三区| 中文字幕在线不卡一区二区三区| 国产精品福利一区| 亚洲国产日韩a在线播放性色| 免费视频一区二区| 国产98色在线|日韩| 91国产成人在线| 欧美刺激脚交jootjob| 国产精品色一区二区三区| 艳妇臀荡乳欲伦亚洲一区| 日韩中文字幕区一区有砖一区| 国产在线不卡视频| 色噜噜狠狠一区二区三区果冻| 日韩视频一区二区| 中文字幕亚洲在| 蜜桃视频在线一区| 99re视频精品| 日韩小视频在线观看专区| 国产精品国产a| 老司机午夜精品| 在线亚洲欧美专区二区| 精品动漫一区二区三区在线观看| 亚洲日本成人在线观看| 久久国内精品自在自线400部| 91免费视频网| 久久噜噜亚洲综合| 天天影视涩香欲综合网| thepron国产精品| 精品久久国产97色综合| 一区二区久久久| 国产成人免费视频一区| 欧美一区二区视频免费观看| 最好看的中文字幕久久| 国产一区二区在线电影| 欧美精品一级二级三级| 18成人在线视频| 精品亚洲国产成人av制服丝袜| 欧美色综合久久| 国产精品剧情在线亚洲| 国产一区二区精品久久| 91麻豆精品国产91久久久更新时间| 中文字幕亚洲一区二区av在线| 久久精品久久久精品美女| 欧美日本一区二区三区| 亚洲日本一区二区| 大陆成人av片| 国产亚洲欧美在线| 精品一区二区三区免费| 3d成人h动漫网站入口| 亚洲国产日日夜夜| 色婷婷久久久综合中文字幕| 日韩一区有码在线| 成人国产精品免费观看视频| 久久精品男人天堂av| 韩国毛片一区二区三区| 精品国产乱码久久久久久夜甘婷婷| 午夜电影网一区| 国产午夜三级一区二区三| 久久99国产精品久久99| 日韩视频不卡中文| 秋霞影院一区二区| 91精品国产91热久久久做人人| 亚洲尤物在线视频观看| 在线看日韩精品电影| 一级中文字幕一区二区| 欧美视频完全免费看| 亚洲国产美女搞黄色|