xref: /OK3568_Linux_fs/kernel/drivers/mtd/rknand/rknand_base.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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