2 * linux/drivers/mtd/rknand/rknand_base.c
\r
4 * Copyright (C) 2005-2009 Fuzhou Rockchip Electronics
\r
5 * ZYF <zyf@rock-chips.com>
\r
9 #ifndef _RKNAND_BASE_H
\r
10 #define _RKNAND_BASE_H
\r
11 //#include "api_flash.h"
\r
13 #define DRIVER_NAME "rk29xxnand"
\r
15 #define NAND_DEBUG_LEVEL0 0
\r
16 #define NAND_DEBUG_LEVEL1 1
\r
17 #define NAND_DEBUG_LEVEL2 2
\r
18 #define NAND_DEBUG_LEVEL3 3
\r
19 //#define PAGE_REMAP
\r
21 #ifndef CONFIG_RKFTL_PAGECACHE_SIZE
\r
22 #define CONFIG_RKFTL_PAGECACHE_SIZE 64 //¶¨ÒåpageÓ³ÉäÇø´óС£¬µ¥Î»ÎªMB,mount ÔÚ/data/dataÏ¡£
\r
25 extern unsigned long SysImageWriteEndAdd;
\r
26 extern int g_num_partitions;
\r
29 * rknand_state_t - chip states
\r
30 * Enumeration for Rknand flash chip state
\r
41 struct rknand_chip {
\r
42 wait_queue_head_t wq;
\r
43 rknand_state_t state;
\r
44 int rknand_schedule_enable;//1 enable ,0 disable
\r
45 void (*pFlashCallBack)(void);//call back funtion
\r
48 struct rknand_info {
\r
52 unsigned int SysImageWriteEndAdd;
\r
53 unsigned int nandCapacity;
\r
54 struct rknand_chip rknand;
\r
55 int (*ftl_cache_en)(int en);
\r
56 int (*ftl_read) (int Index, int nSec, void *buf);
\r
57 int (*ftl_write) (int Index, int nSec, void *buf ,int mode);
\r
58 int (*ftl_write_panic) (int Index, int nSec, void *buf);
\r
59 int (*ftl_close)(void);
\r
60 int (*ftl_sync)(void);
\r
61 int (*proc_bufread)(char *page);
\r
62 int (*proc_ftlread)(char *page);
\r
63 int (*rknand_schedule_enable)(int en);
\r
64 int (*add_rknand_device)(struct rknand_info * prknand_Info);
\r
65 int (*get_rknand_device)(struct rknand_info ** prknand_Info);
\r
66 void (*rknand_buffer_shutdown)(void);
\r
67 int (*GetIdBlockSysData)(char * buf, int Sector);
\r
68 char (*GetSNSectorInfo)(char * pbuf);
\r
69 char (*GetChipSectorInfo)(char * pbuf);
\r
70 int emmc_clk_power_save_en;
\r
72 void (*nand_timing_config)(unsigned long AHBnKHz);
\r
73 void (*rknand_suspend)(void);
\r
74 void (*rknand_resume)(void);
\r
75 int (*rknand_re_init)(void);
\r
76 void (*rknand_dev_cache_flush)(void);
\r
77 int (*ftl_discard) (int Index, int nSec);
\r
81 extern int rknand_queue_read(int Index, int nSec, void *buf);
\r
82 extern int rknand_queue_write(int Index, int nSec, void *buf,int mode);
\r
83 extern int rknand_buffer_init(char * pbuf,int size);
\r
84 extern void rknand_buffer_data_init(void);
\r
85 extern void rknand_buffer_shutdown(void);
\r
86 extern int add_rknand_device(struct rknand_info * prknand_Info);
\r
87 extern int get_rknand_device(struct rknand_info ** prknand_Info);
\r
88 extern int rknand_buffer_sync(void);
\r
89 extern void rknand_cache_flush(void);
\r
90 extern void rknand_dev_cache_flush(void);
\r