Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags   |
^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