/* 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