1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * linux/drivers/mtd/rknand/rknand_base.c 4 * 5 * Copyright (C) 2005-2009 Fuzhou Rockchip Electronics 6 * ZYF <zyf@rock-chips.com> 7 * 8 * 9 */ 10 #ifndef _RKNAND_BASE_H 11 #define _RKNAND_BASE_H 12 //#include "api_flash.h" 13 14 #define DRIVER_NAME "rk29xxnand" 15 16 #define NAND_DEBUG_LEVEL0 0 17 #define NAND_DEBUG_LEVEL1 1 18 #define NAND_DEBUG_LEVEL2 2 19 #define NAND_DEBUG_LEVEL3 3 20 //#define PAGE_REMAP 21 22 #ifndef CONFIG_RKFTL_PAGECACHE_SIZE 23 #define CONFIG_RKFTL_PAGECACHE_SIZE 64 //����pageӳ������С����λΪMB,mount ��/data/data�¡� 24 #endif 25 26 extern unsigned long SysImageWriteEndAdd; 27 extern int g_num_partitions; 28 29 /* 30 * rknand_state_t - chip states 31 * Enumeration for Rknand flash chip state 32 */ 33 typedef enum { 34 FL_READY, 35 FL_READING, 36 FL_WRITING, 37 FL_ERASING, 38 FL_SYNCING, 39 FL_UNVALID, 40 } rknand_state_t; 41 42 struct rknand_chip { 43 wait_queue_head_t wq; 44 rknand_state_t state; 45 int rknand_schedule_enable;//1 enable ,0 disable 46 void (*pFlashCallBack)(void);//call back funtion 47 }; 48 49 struct rknand_info { 50 int enable; 51 char *pbuf; 52 int bufSize; 53 unsigned int SysImageWriteEndAdd; 54 unsigned int nandCapacity; 55 struct rknand_chip rknand; 56 int (*ftl_cache_en)(int en); 57 int (*ftl_read) (int Index, int nSec, void *buf); 58 int (*ftl_write) (int Index, int nSec, void *buf ,int mode); 59 int (*ftl_write_panic) (int Index, int nSec, void *buf); 60 int (*ftl_close)(void); 61 int (*ftl_sync)(void); 62 int (*proc_bufread)(char *page); 63 int (*proc_ftlread)(char *page); 64 int (*rknand_schedule_enable)(int en); 65 int (*add_rknand_device)(struct rknand_info * prknand_Info); 66 int (*get_rknand_device)(struct rknand_info ** prknand_Info); 67 void (*rknand_buffer_shutdown)(void); 68 int (*GetIdBlockSysData)(char * buf, int Sector); 69 char (*GetSNSectorInfo)(char * pbuf); 70 char (*GetChipSectorInfo)(char * pbuf); 71 int emmc_clk_power_save_en; 72 char *pdmaBuf; 73 void (*nand_timing_config)(unsigned long AHBnKHz); 74 void (*rknand_suspend)(void); 75 void (*rknand_resume)(void); 76 int (*rknand_re_init)(void); 77 void (*rknand_dev_cache_flush)(void); 78 int (*ftl_discard) (int Index, int nSec); 79 int reserved[20]; 80 }; 81 82 extern int rknand_queue_read(int Index, int nSec, void *buf); 83 extern int rknand_queue_write(int Index, int nSec, void *buf,int mode); 84 extern int rknand_buffer_init(char * pbuf,int size); 85 extern void rknand_buffer_data_init(void); 86 extern void rknand_buffer_shutdown(void); 87 extern int add_rknand_device(struct rknand_info * prknand_Info); 88 extern int get_rknand_device(struct rknand_info ** prknand_Info); 89 extern int rknand_buffer_sync(void); 90 extern void rknand_cache_flush(void); 91 extern void rknand_dev_cache_flush(void); 92 93 #endif 94