1c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner/****************************************************************************
2c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ****************************************************************************
3c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***
4c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   This header was automatically generated from a Linux kernel header
5c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   of the same name, to make information necessary for userspace to
6c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   call into the kernel available to libc.  It contains only constants,
7c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   structures, and macros generated from the original header, and thus,
8c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***   contains no copyrightable information.
9c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ***
10c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ****************************************************************************
11c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner ****************************************************************************/
12c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#ifndef __LINUX_MTD_BBM_H
13c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define __LINUX_MTD_BBM_H
14c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
15c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define NAND_MAX_CHIPS 8
16c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
17c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerstruct nand_bbt_descr {
18c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner int options;
19c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner int pages[NAND_MAX_CHIPS];
20c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner int offs;
21c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner int veroffs;
22c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner uint8_t version[NAND_MAX_CHIPS];
23c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner int len;
24c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner int maxblocks;
25c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner int reserved_block_code;
26c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner uint8_t *pattern;
27c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner};
28c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
29c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define NAND_BBT_NRBITS_MSK 0x0000000F
30c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define NAND_BBT_1BIT 0x00000001
31c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define NAND_BBT_2BIT 0x00000002
32c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define NAND_BBT_4BIT 0x00000004
33c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define NAND_BBT_8BIT 0x00000008
34c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
35c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define NAND_BBT_LASTBLOCK 0x00000010
36c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
37c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define NAND_BBT_ABSPAGE 0x00000020
38c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
39c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define NAND_BBT_SEARCH 0x00000040
40c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
41c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define NAND_BBT_PERCHIP 0x00000080
42c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
43c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define NAND_BBT_VERSION 0x00000100
44c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
45c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define NAND_BBT_CREATE 0x00000200
46c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
47c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define NAND_BBT_SCANALLPAGES 0x00000400
48c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
49c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define NAND_BBT_SCANEMPTY 0x00000800
50c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
51c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define NAND_BBT_WRITE 0x00001000
52c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
53c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define NAND_BBT_SAVECONTENT 0x00002000
54c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
55c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define NAND_BBT_SCAN2NDPAGE 0x00004000
56c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
57c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define NAND_BBT_SCAN_MAXBLOCKS 4
58c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
59c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#define ONENAND_BADBLOCK_POS 0
60c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
61c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turnerstruct bbm_info {
62c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner int bbt_erase_shift;
63c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner int badblockpos;
64c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner int options;
65c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
66c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner uint8_t *bbt;
67c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
68c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner int (*isbad_bbt)(struct mtd_info *mtd, loff_t ofs, int allowbbt);
69c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
70c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner struct nand_bbt_descr *badblock_pattern;
71c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
72c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner void *priv;
73c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner};
74c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner
75c817c5210e4207908b83faaf08a2c5b95251f871David 'Digit' Turner#endif
76