arm: dts: rk3288-android: use secure efuse
[firefly-linux-kernel-4.4.55.git] / drivers / mtd / rknand / rknand_base.h
1 /*\r
2  *  linux/drivers/mtd/rknand/rknand_base.c\r
3  *\r
4  *  Copyright (C) 2005-2009 Fuzhou Rockchip Electronics\r
5  *  ZYF <zyf@rock-chips.com>\r
6  *\r
7  *   \r
8  */\r
9 #ifndef _RKNAND_BASE_H\r
10 #define _RKNAND_BASE_H\r
11 //#include "api_flash.h"\r
12 \r
13 #define DRIVER_NAME     "rk29xxnand"\r
14 \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
20 \r
21 #ifndef CONFIG_RKFTL_PAGECACHE_SIZE\r
22 #define CONFIG_RKFTL_PAGECACHE_SIZE  64 //¶¨ÒåpageÓ³ÉäÇø´óС£¬µ¥Î»ÎªMB,mount ÔÚ/data/dataÏ¡£\r
23 #endif\r
24 \r
25 extern unsigned long SysImageWriteEndAdd;\r
26 extern int g_num_partitions;\r
27 \r
28 /*\r
29  * rknand_state_t - chip states\r
30  * Enumeration for Rknand flash chip state\r
31  */\r
32 typedef enum {\r
33     FL_READY,\r
34     FL_READING,\r
35     FL_WRITING,\r
36     FL_ERASING,\r
37     FL_SYNCING,\r
38     FL_UNVALID,\r
39 } rknand_state_t;\r
40 \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
46 };\r
47 \r
48 struct rknand_info {\r
49     int enable;\r
50     char *pbuf;\r
51     int bufSize;\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
71     char *pdmaBuf;\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
78     int reserved[20];\r
79 };\r
80 \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
91 \r
92 #endif\r