^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /********************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) *********************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) COPYRIGHT (c) 2004 BY ROCK-CHIP FUZHOU
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) -- ALL RIGHTS RESERVED --
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) File Name: api_flash.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) Author: XUESHAN LIN
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) Created: 1st Dec 2008
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) Modified:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) Revision: 1.00
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) Modify log:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 1.01 ����FtlClose�ӿں��� 2009.10.15 lxs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) ********************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) ********************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #ifndef _API_FLASH_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define _API_FLASH_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) //1����ԭ������
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) ��������:FTL��FLASH��ʼ��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) ��ڲ���:��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) ���ڲ���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 0=��������
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 1=ӳ�������, ��ǿ�Ƶ�
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 2=flash��ʼ��ʧ��,������Ӳ�������Ҫ���й̼�����
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) ����ֵ:�ڲ�����, ����������ʹ��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) ˵ ��:�ϵ�ֻ�����һ�γ�ʼ������
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) extern int FtlInit(unsigned int nandcBaseAddr,unsigned char pageRemapEn);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) extern int FTLInit_WithoutPageRemap(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) extern int FTLInit(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) ��������:��ȡFLASH��������
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) ��ڲ���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) DISK_NAND_CODE:�̼���
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) DISK_NAND_DATA:ϵͳ������
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) DISK_NAND_USER:�û���
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) ���ڲ���:������������
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) ˵ ��:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) extern unsigned int FtlGetCapacity(unsigned char LUN);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) ��������:�������ӿ�
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) ��ڲ���:LUN=��������, Index=��ʼ������ַ, buf=���ݻ�����, nSec=������
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) ���ڲ���:0=��ȡ��ȷ; ��0=��ȡ����, ���ݲ�����
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) ���ú���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) ˵ ��:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) extern int FtlRead(unsigned char LUN, unsigned int Index, unsigned int nSec, void *buf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) ��������:д�����ӿ�
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) ��ڲ���:LUN=��������, Index=��ʼ������ַ, buf=���ݻ�����, nSec=������
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) ���ڲ���:0=��ȷд��; ��0=д����ʧ��, ����û�б���ȷд��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) ���ú���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) ˵ ��:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) extern int FtlWrite(unsigned char LUN, unsigned int Index, unsigned int nSec, void *buf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) ��������:MLC FLASH����ˢ��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) ��ڲ���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) ���ڲ���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) ���ú���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) ˵ ��:��ϵͳIDLE/�ڱȽϼ��ж�����ʱ(��A-B���š�Ƶ������Դ��)���øú���,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) �ܼ�ʱ������Ƶ�����ж���������,����ִ��ʱ����ܽϳ�(����ms������s)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) extern void FlashRefreshHook(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) ��������:AHB��Ƶ����ʱ��Ҫ���ô˽ӿ�������FLASHʱ��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) ��ڲ���:AHBnKHz=��Ƶ(AHB)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) ���ڲ���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) ���ú���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) extern void FlashTimingCfg(unsigned int AHBnKHz);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) ��������:FTL �رգ��ػ�ʱ����
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) ��ڲ���:��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) ���ڲ���:��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) ˵ ��:�ػ�ʱ��������д�ļ��������������
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) extern void FtlClose(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) ��������:FTL ��ʱ�ص�������ϵͳ1S���ҵ���һ��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92) ��ڲ���:��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) ���ڲ���:��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) ˵ ��:FTL��һЩCACHE�ڶ�ʱ�л�дflash
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) extern void FtlTimeHook(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99) ��������:��ȡ flash page ��С���Ա����濪����,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) ��ڲ���:��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) ���ڲ���:page��С��sector��λ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) ���ú���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) ˵��: ��Ҫ��FTLInit��ſ���
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) extern int FlashGetPageSize(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) ��������:AHB��Ƶ����ʱ��Ҫ���ô˽ӿ�������FLASHʱ��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) ��ڲ���:AHBnMHz=��Ƶ(AHB)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) ���ڲ���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) ���ú���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) extern void FlashTimingCfg(unsigned int AHBnKHz);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) ��������:ϵͳ��д������
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) ��ڲ���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) ���ڲ���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) ���ú���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) extern void FtlFlashSysProtSetOn(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) ��������:ϵͳ��д����
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) ��ڲ���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) ���ڲ���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) ���ú���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) extern void FtlFlashSysProtSetOff(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) ��������:����ϵͳ�̣�����ʱʹ��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) ��ڲ���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) ���ڲ���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) ���ú���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) extern void FtlLowFormatSysDisk(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) extern int FtlWriteImage(unsigned int Index, unsigned int nSec, void *buf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141) ��������:��������cache �cache ��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) ��ڲ���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) ���ڲ���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144) ���ú���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) extern void FtlCacheDelayWriteALL(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) ��������:���ô���д������ַ��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150) ��ڲ���:LBA��ַ��С��LBA�ĵ�ַд����
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) ���ڲ���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) ���ú���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) void FtlSetSysProtAddr(int LBA);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 156)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 157) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 158) ��������:��ȡFLASH��������
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 159) ��ڲ���:�̷�
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 160) ���ڲ���:����,������Ϊ��λ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 161) ���ú���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 162) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 163) int FtlGetPageZoneCapacity(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 164)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 165) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 166) ��������:��������
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 167) ��ڲ���:Index=������, nSec=������
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 168) ���ڲ���:�����������ڻ�����buf��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 169) ���ú���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 170) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 171) int FtlPageWrite(int Index, int nSec, void *buf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 172)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 173)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 174) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 175) ��������:��������
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 176) ��ڲ���:Index=������, nSec=������
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 177) ���ڲ���:�����������ڻ�����buf��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 178) ���ú���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 179) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 180) int FtlPageRead(int Index, int nSec, void *buf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 181)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 182)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 183) /***************************************************************************
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 184) ��������:��ȡ SN sector��Ϣ
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 185) ��ڲ���:pbuf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 186) ���ڲ���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 187) ���ú���:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 188) ע����Ϣ����Ҫ��flash �������غ���ܵ��ã�pbuf��С��Ҫ���ڵ���512 bytes��������ϢΪ512
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 189) bytes��
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 190) ***************************************************************************/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 191) char GetSNSectorInfo(char * pbuf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 192)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 193)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 194) extern int NandInit(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 195) extern int NandRead(unsigned int Index, unsigned int nSec, void * buf) ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 196) extern int NandWriteImage(unsigned int Index, unsigned int nSec, void * buf);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 197) extern int NandWrite(unsigned int Index, unsigned int nSec, void * buf) ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 198) extern int NandDeInit(void) ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 199) extern int NandForceDeInit(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 200) extern unsigned int NandGetCapacity(void);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 201) extern void NandSetSysProtAddr(unsigned int SysImageWriteEndAdd);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 202) extern void FtlDelayWriteCacheEn(unsigned int en);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 203) #endif