/* SPDX-License-Identifier: GPL-2.0 */
|
/********************************************************************************
|
*********************************************************************************
|
COPYRIGHT (c) 2004 BY ROCK-CHIP FUZHOU
|
-- ALL RIGHTS RESERVED --
|
|
File Name: api_flash.h
|
Author: XUESHAN LIN
|
Created: 1st Dec 2008
|
Modified:
|
Revision: 1.00
|
Modify log:
|
1.01 Ôö¼ÓFtlClose½Ó¿Úº¯Êý 2009.10.15 lxs
|
********************************************************************************
|
********************************************************************************/
|
#ifndef _API_FLASH_H
|
#define _API_FLASH_H
|
|
//1º¯ÊýÔÐÍÉùÃ÷
|
/***************************************************************************
|
º¯ÊýÃèÊö:FTLºÍFLASH³õʼ»¯
|
Èë¿Ú²ÎÊý:ÎÞ
|
³ö¿Ú²ÎÊý:
|
0=Õý³£·µ»Ø
|
1=Ó³Éä±í³ö´í, ±»Ç¿ÖƵ͸ñ
|
2=flash³õʼ»¯Ê§°Ü,¿ÉÄÜÊÇÓ²¼þ´íÎó»òÒª½øÐй̼þÉý¼¶
|
ÆäËüÖµ:ÄÚ²¿´íÎó, ¸ÃÇý¶¯²»¿ÉʹÓÃ
|
˵ Ã÷:ÉϵçÖ»Ðèµ÷ÓÃÒ»´Î³õʼ»¯¼´¿É
|
***************************************************************************/
|
extern int FtlInit(unsigned int nandcBaseAddr,unsigned char pageRemapEn);
|
extern int FTLInit_WithoutPageRemap(void);
|
extern int FTLInit(void);
|
|
|
/***************************************************************************
|
º¯ÊýÃèÊö:»ñÈ¡FLASH´ÅÅÌÈÝÁ¿
|
Èë¿Ú²ÎÊý:
|
DISK_NAND_CODE:¹Ì¼þÅÌ
|
DISK_NAND_DATA:ϵͳ²ÎÊýÅÌ
|
DISK_NAND_USER:Óû§ÅÌ
|
³ö¿Ú²ÎÊý:´ÅÅÌ×ÜÉÈÇøÊý
|
˵ Ã÷:
|
***************************************************************************/
|
extern unsigned int FtlGetCapacity(unsigned char LUN);
|
|
/***************************************************************************
|
º¯ÊýÃèÊö:¶ÁÉÈÇø½Ó¿Ú
|
Èë¿Ú²ÎÊý:LUN=Âß¼·ÖÇøºÅ, Index=ÆðʼÉÈÇøµØÖ·, buf=Êý¾Ý»º³åÇø, nSec=ÉÈÇøÊý
|
³ö¿Ú²ÎÊý:0=¶ÁÈ¡ÕýÈ·; ·Ç0=¶ÁÈ¡³ö´í, Êý¾Ý²»¿ÉÓÃ
|
µ÷Óú¯Êý:
|
˵ Ã÷:
|
***************************************************************************/
|
extern int FtlRead(unsigned char LUN, unsigned int Index, unsigned int nSec, void *buf);
|
|
/***************************************************************************
|
º¯ÊýÃèÊö:дÉÈÇø½Ó¿Ú
|
Èë¿Ú²ÎÊý:LUN=Âß¼·ÖÇøºÅ, Index=ÆðʼÉÈÇøµØÖ·, buf=Êý¾Ý»º³åÇø, nSec=ÉÈÇøÊý
|
³ö¿Ú²ÎÊý:0=ÕýȷдÈë; ·Ç0=д²Ù×÷ʧ°Ü, Êý¾ÝûÓб»ÕýȷдÈë
|
µ÷Óú¯Êý:
|
˵ Ã÷:
|
***************************************************************************/
|
extern int FtlWrite(unsigned char LUN, unsigned int Index, unsigned int nSec, void *buf);
|
|
/***************************************************************************
|
º¯ÊýÃèÊö:MLC FLASHÊý¾ÝË¢ÐÂ
|
Èë¿Ú²ÎÊý:
|
³ö¿Ú²ÎÊý:
|
µ÷Óú¯Êý:
|
˵ Ã÷:ÔÚϵͳIDLE/ÔڱȽϼ¯ÖжÁÊý¾Ýʱ(ÈçA-B²¥·Å¡¢Æµ·±¶Á×ÊÔ´µÈ)µ÷Óøú¯Êý,
|
Äܼ°Ê±ÐÞÕý±»Æµ·±¼¯ÖжÁ»µµÄÊý¾Ý,º¯ÊýÖ´ÐÐʱ¼ä¿ÉÄܽϳ¤(¼¸°ÙmsÉõÖÁ¼¸s)
|
***************************************************************************/
|
extern void FlashRefreshHook(void);
|
|
/***************************************************************************
|
º¯ÊýÃèÊö:AHBÖ÷Ƶ¸üÐÂʱÐèÒªµ÷Óô˽ӿÚÀ´ÅäÖÃFLASHʱÐò
|
Èë¿Ú²ÎÊý:AHBnKHz=Ö÷Ƶ(AHB)
|
³ö¿Ú²ÎÊý:
|
µ÷Óú¯Êý:
|
***************************************************************************/
|
extern void FlashTimingCfg(unsigned int AHBnKHz);
|
|
/***************************************************************************
|
º¯ÊýÃèÊö:FTL ¹Ø±Õ£¬¹Ø»úʱµ÷ÓÃ
|
Èë¿Ú²ÎÊý:ÎÞ
|
³ö¿Ú²ÎÊý:ÎÞ
|
˵ Ã÷:¹Ø»úʱ£¬ÔÚËùÓÐдÎļþ²Ù×÷½áÊøºóµ÷ÓÃ
|
***************************************************************************/
|
extern void FtlClose(void);
|
|
/***************************************************************************
|
º¯ÊýÃèÊö:FTL ¶¨Ê±»Øµ÷º¯Êý£¬ÏµÍ³1S×óÓÒµ÷ÓÃÒ»´Î
|
Èë¿Ú²ÎÊý:ÎÞ
|
³ö¿Ú²ÎÊý:ÎÞ
|
˵ Ã÷:FTLÖÐһЩCACHEÔÚ¶¨Ê±ÖлØÐ´flash
|
***************************************************************************/
|
extern void FtlTimeHook(void);
|
|
/***************************************************************************
|
º¯ÊýÃèÊö:»ñÈ¡ flash page ´óС£¬ÒÔ±ãÍâÃæ¿ª»º³å,
|
Èë¿Ú²ÎÊý:ÎÞ
|
³ö¿Ú²ÎÊý:page´óС£¬sectorµ¥Î»
|
µ÷Óú¯Êý:
|
˵Ã÷: ÐèÒªÔÚFTLInitºó²Å¿ÉÓÃ
|
***************************************************************************/
|
extern int FlashGetPageSize(void);
|
|
/***************************************************************************
|
º¯ÊýÃèÊö:AHBÖ÷Ƶ¸üÐÂʱÐèÒªµ÷Óô˽ӿÚÀ´ÅäÖÃFLASHʱÐò
|
Èë¿Ú²ÎÊý:AHBnMHz=Ö÷Ƶ(AHB)
|
³ö¿Ú²ÎÊý:
|
µ÷Óú¯Êý:
|
***************************************************************************/
|
extern void FlashTimingCfg(unsigned int AHBnKHz);
|
|
/***************************************************************************
|
º¯ÊýÃèÊö:ϵͳÅÌд²»ÔÊÐí
|
Èë¿Ú²ÎÊý:
|
³ö¿Ú²ÎÊý:
|
µ÷Óú¯Êý:
|
***************************************************************************/
|
extern void FtlFlashSysProtSetOn(void);
|
|
/***************************************************************************
|
º¯ÊýÃèÊö:ϵͳÅÌдÔÊÐí
|
Èë¿Ú²ÎÊý:
|
³ö¿Ú²ÎÊý:
|
µ÷Óú¯Êý:
|
***************************************************************************/
|
extern void FtlFlashSysProtSetOff(void);
|
|
/***************************************************************************
|
º¯ÊýÃèÊö:²Á³ýϵͳÅÌ£¬Éý¼¶Ê±Ê¹ÓÃ
|
Èë¿Ú²ÎÊý:
|
³ö¿Ú²ÎÊý:
|
µ÷Óú¯Êý:
|
***************************************************************************/
|
extern void FtlLowFormatSysDisk(void);
|
|
extern int FtlWriteImage(unsigned int Index, unsigned int nSec, void *buf);
|
/***************************************************************************
|
º¯ÊýÃèÊö:½«ËùÓлº´æµÄcache дµ½cache ¿é
|
Èë¿Ú²ÎÊý:
|
³ö¿Ú²ÎÊý:
|
µ÷Óú¯Êý:
|
***************************************************************************/
|
extern void FtlCacheDelayWriteALL(void);
|
|
/***************************************************************************
|
º¯ÊýÃèÊö:ÉèÖôÅÅÌд±£»¤µØÖ·£¬
|
Èë¿Ú²ÎÊý:LBAµØÖ·£¬Ð¡ÓÚLBAµÄµØÖ·Ð´±£»¤
|
³ö¿Ú²ÎÊý:
|
µ÷Óú¯Êý:
|
***************************************************************************/
|
void FtlSetSysProtAddr(int LBA);
|
|
|
/***************************************************************************
|
º¯ÊýÃèÊö:»ñÈ¡FLASH´ÅÅÌÈÝÁ¿
|
Èë¿Ú²ÎÊý:ÅÌ·û
|
³ö¿Ú²ÎÊý:ÈÝÁ¿,ÒÔÉÈÇøÎªµ¥Î»
|
µ÷Óú¯Êý:
|
***************************************************************************/
|
int FtlGetPageZoneCapacity(void);
|
|
/***************************************************************************
|
º¯ÊýÃèÊö:¶Á¶àÉÈÇø
|
Èë¿Ú²ÎÊý:Index=ÉÈÇøºÅ, nSec=ÉÈÇøÊý
|
³ö¿Ú²ÎÊý:¶Áµ½µÄÊý¾ÝÔÚ»º³åÇøbufÖÐ
|
µ÷Óú¯Êý:
|
***************************************************************************/
|
int FtlPageWrite(int Index, int nSec, void *buf);
|
|
|
/***************************************************************************
|
º¯ÊýÃèÊö:¶Á¶àÉÈÇø
|
Èë¿Ú²ÎÊý:Index=ÉÈÇøºÅ, nSec=ÉÈÇøÊý
|
³ö¿Ú²ÎÊý:¶Áµ½µÄÊý¾ÝÔÚ»º³åÇøbufÖÐ
|
µ÷Óú¯Êý:
|
***************************************************************************/
|
int FtlPageRead(int Index, int nSec, void *buf);
|
|
|
/***************************************************************************
|
º¯ÊýÃèÊö:¶ÁÈ¡ SN sectorÐÅÏ¢
|
Èë¿Ú²ÎÊý:pbuf
|
³ö¿Ú²ÎÊý:
|
µ÷Óú¯Êý:
|
×¢ÒâÐÅÏ¢£ºÐèÒªÔÚflash Çý¶¯¼ÓÔØºó²ÅÄܵ÷Óã¬pbuf´óСÐèÒª´óÓÚµÈÓÚ512 bytes£¬·µ»ØÐÅϢΪ512
|
bytes¡£
|
***************************************************************************/
|
char GetSNSectorInfo(char * pbuf);
|
|
|
extern int NandInit(void);
|
extern int NandRead(unsigned int Index, unsigned int nSec, void * buf) ;
|
extern int NandWriteImage(unsigned int Index, unsigned int nSec, void * buf);
|
extern int NandWrite(unsigned int Index, unsigned int nSec, void * buf) ;
|
extern int NandDeInit(void) ;
|
extern int NandForceDeInit(void);
|
extern unsigned int NandGetCapacity(void);
|
extern void NandSetSysProtAddr(unsigned int SysImageWriteEndAdd);
|
extern void FtlDelayWriteCacheEn(unsigned int en);
|
#endif
|