Root/nandprog/include/include.h

1#ifndef __INCLUDE_H__
2#define __INCLUDE_H__
3//#include "nand_ecc.h"
4
5#define u32 unsigned int
6#define u16 unsigned short
7#define u8 unsigned char
8#define MAX_PAGE 0xffffffff
9#define PAGE_SIZE np->ps
10#define OOB_SIZE np->os
11#define OOBPAGE_SIZE (PAGE_SIZE + OOB_SIZE)
12#define MAX_BUF_PAGE np->ppb
13#define MAX_BUF_SIZE OOBPAGE_SIZE*MAX_BUF_PAGE
14#define MAX_RETRY 3
15#define LAST_PAGE 65536
16#define LOG_FILENAME "nprog.log"
17#define NUM_FILENAME "number.log"
18
19enum
20{
21    JZ4730CPU,
22    LINUXHM,
23    JZ4740CPU,
24    LINUXRS,
25    USERSPEC,
26};
27
28struct nand_oobinfo
29{
30    int eccname;
31    unsigned int eccbytes;
32    unsigned int eccpos[64];
33};
34
35enum
36{
37    SOFTHM,
38    SOFTRS,
39    HARDHM,
40    HARDRS
41};
42
43enum
44{
45    JZ4730,
46    JZ4740,
47    JZ4760
48};
49
50enum
51{
52    READ_FLASH,
53    WRITE_FLASH
54};
55
56typedef struct _NP_DATA
57{
58    u8 pt; //processor type jz4730/jz4740/jz4760....
59    u8 et; //ECC type software HM/RS or hardware HM/RS
60    u8 ep; //ECC position index
61    u8 ops; //opration type read/write
62    u8 cs; //chip select index number
63     u8 *fname; //Source or object file name
64    u32 spage; //opration start page number of nand flash
65    u32 epage; //opration end page number of nand flash
66
67    u32 bw; //nand flash bus width
68    u32 ps; //nand flash page size
69    u32 os; //nand flash oob size
70    u32 ppb; //nand flash page per block
71    u32 rc; //nand flash row syscle
72    u32 bbp; //nand flash bad block ID position
73    u32 bba; //nand flash bad block ID page position
74
75    u32 ebase; //EMC base PHY address
76    void *base_map; //EMC base mapped address
77    u32 bm_ms; // EMC base mapped size
78
79    u32 dport; //Nand flash port base PHY address
80    void *port_map; //nand port mapped address
81    u32 pm_ms; // EMC base mapped size
82
83    u32 gport; //GPIO base PHY address
84    void *gpio_map; //GPIO mapped address
85    u32 gm_ms; // EMC base mapped size
86
87    u32 ap_offset; //addrport offset
88    u32 cp_offset; //cmdportoffset
89
90    int (*nand_init)(struct _NP_DATA *);
91    int (*nand_fini)(void);
92    u32 (*nand_query)(void);
93    int (*nand_erase)(int, int, int);
94    int (*nand_program)(u8 *, int, int );
95    int (*nand_read)(u8 *, u32, u32);
96    int (*nand_read_raw)(u8 *, u32, u32);
97    int (*nand_read_oob)(u8 *, u32, u32);
98    int (*nand_check_block) (u32);
99    int (*nand_check) (u8 *,u8 *,u32 );
100    void (*nand_block_markbad) (u32);
101    int (*nand_select) (u8);
102
103}np_data;
104
105//jz4730 functions
106extern int nand_init_4730(np_data *);
107extern int nand_fini_4730(void);
108extern unsigned int nand_query_4730(void);
109extern int nand_erase_4730(int blk_num, int sblk, int force);
110extern int nand_program_4730(u8 *buf, int startpage, int pagenum);
111extern int nand_read_4730(u8 *buf, u32 startpage, u32 pagenum);
112extern int nand_read_raw_4730(u8 *buf, u32 startpage, u32 pagenum);
113extern int nand_read_oob_4730(u8 *buf, u32 startpage, u32 pagenum);
114extern int nand_check_block(u32);
115extern void nand_block_markbad(u32);
116extern int chip_select_4730(u8 cs);
117
118//jz4740 functions
119extern int nand_init_4740(np_data *);
120extern int nand_fini_4740(void);
121extern unsigned int nand_query_4740(void);
122extern int nand_erase_4740(int blk_num, int sblk, int force);
123extern int nand_program_4740(u8 *buf, int startpage, int pagenum);
124extern int nand_read_4740_hm(u8 *buf, u32 startpage, u32 pagenum);
125extern int nand_read_4740_rs(u8 *buf, u32 startpage, u32 pagenum);
126extern int nand_read_raw_4740(u8 *buf, u32 startpage, u32 pagenum);
127extern int nand_read_oob_4740(u8 *buf, u32 startpage, u32 pagenum);
128extern int nand_check_block_4740(u32);
129extern void nand_block_markbad_4740(u32);
130extern int chip_select_4740(u8 cs);
131
132//common functions
133extern int cmdline(int,char **,np_data *);
134extern np_data * cmdinit();
135extern int cmdexcute(np_data *);
136extern int cmdexit(np_data *);
137extern int nand_check_cmp(u8 *buf1,u8 *buf2,u32 len);
138extern np_data * load_cfg();
139
140#endif
141

Archive Download this file



interactive