Commit c62d81bc authored by Alessandro Rubini's avatar Alessandro Rubini Committed by David Woodhouse

mtd: use bbm.h in nand.h

This consolidates common code in nand.h and bbm.h. The
comments and data structures were the same, this keeps
the comment from nand.h as it fits 80 columns, while the one
in bbm.h did not.
Signed-off-by: default avatarAlessandro Rubini <rubini@unipv.it>
Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
parent ea60658a
...@@ -19,22 +19,21 @@ ...@@ -19,22 +19,21 @@
/** /**
* struct nand_bbt_descr - bad block table descriptor * struct nand_bbt_descr - bad block table descriptor
* @options: options for this descriptor * @options: options for this descriptor
* @pages: the page(s) where we find the bbt, used with * @pages: the page(s) where we find the bbt, used with option BBT_ABSPAGE
* option BBT_ABSPAGE when bbt is searched, * when bbt is searched, then we store the found bbts pages here.
* then we store the found bbts pages here. * Its an array and supports up to 8 chips now
* Its an array and supports up to 8 chips now * @offs: offset of the pattern in the oob area of the page
* @offs: offset of the pattern in the oob area of the page * @veroffs: offset of the bbt version counter in the oob are of the page
* @veroffs: offset of the bbt version counter in the oob area of the page * @version: version read from the bbt page during scan
* @version: version read from the bbt page during scan * @len: length of the pattern, if 0 no pattern check is performed
* @len: length of the pattern, if 0 no pattern check is performed * @maxblocks: maximum number of blocks to search for a bbt. This number of
* @maxblocks: maximum number of blocks to search for a bbt. This * blocks is reserved at the end of the device where the tables are
* number of blocks is reserved at the end of the device * written.
* where the tables are written. * @reserved_block_code: if non-0, this pattern denotes a reserved (rather than
* @reserved_block_code: if non-0, this pattern denotes a reserved * bad) block in the stored bbt
* (rather than bad) block in the stored bbt * @pattern: pattern to identify bad block table or factory marked good /
* @pattern: pattern to identify bad block table or factory marked * bad blocks, can be NULL, if len = 0
* good / bad blocks, can be NULL, if len = 0
* *
* Descriptor for the bad block table marker and the descriptor for the * Descriptor for the bad block table marker and the descriptor for the
* pattern which identifies good and bad blocks. The assumption is made * pattern which identifies good and bad blocks. The assumption is made
...@@ -90,7 +89,9 @@ struct nand_bbt_descr { ...@@ -90,7 +89,9 @@ struct nand_bbt_descr {
/* /*
* Constants for oob configuration * Constants for oob configuration
*/ */
#define ONENAND_BADBLOCK_POS 0 #define NAND_SMALL_BADBLOCK_POS 5
#define NAND_LARGE_BADBLOCK_POS 0
#define ONENAND_BADBLOCK_POS 0
/* /*
* Bad block scanning errors * Bad block scanning errors
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include <linux/wait.h> #include <linux/wait.h>
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/mtd/mtd.h> #include <linux/mtd/mtd.h>
#include <linux/mtd/bbm.h>
struct mtd_info; struct mtd_info;
/* Scan and identify a NAND device */ /* Scan and identify a NAND device */
...@@ -470,75 +471,6 @@ struct nand_manufacturers { ...@@ -470,75 +471,6 @@ struct nand_manufacturers {
extern struct nand_flash_dev nand_flash_ids[]; extern struct nand_flash_dev nand_flash_ids[];
extern struct nand_manufacturers nand_manuf_ids[]; extern struct nand_manufacturers nand_manuf_ids[];
/**
* struct nand_bbt_descr - bad block table descriptor
* @options: options for this descriptor
* @pages: the page(s) where we find the bbt, used with option BBT_ABSPAGE
* when bbt is searched, then we store the found bbts pages here.
* Its an array and supports up to 8 chips now
* @offs: offset of the pattern in the oob area of the page
* @veroffs: offset of the bbt version counter in the oob are of the page
* @version: version read from the bbt page during scan
* @len: length of the pattern, if 0 no pattern check is performed
* @maxblocks: maximum number of blocks to search for a bbt. This number of
* blocks is reserved at the end of the device where the tables are
* written.
* @reserved_block_code: if non-0, this pattern denotes a reserved (rather than
* bad) block in the stored bbt
* @pattern: pattern to identify bad block table or factory marked good /
* bad blocks, can be NULL, if len = 0
*
* Descriptor for the bad block table marker and the descriptor for the
* pattern which identifies good and bad blocks. The assumption is made
* that the pattern and the version count are always located in the oob area
* of the first block.
*/
struct nand_bbt_descr {
int options;
int pages[NAND_MAX_CHIPS];
int offs;
int veroffs;
uint8_t version[NAND_MAX_CHIPS];
int len;
int maxblocks;
int reserved_block_code;
uint8_t *pattern;
};
/* Options for the bad block table descriptors */
/* The number of bits used per block in the bbt on the device */
#define NAND_BBT_NRBITS_MSK 0x0000000F
#define NAND_BBT_1BIT 0x00000001
#define NAND_BBT_2BIT 0x00000002
#define NAND_BBT_4BIT 0x00000004
#define NAND_BBT_8BIT 0x00000008
/* The bad block table is in the last good block of the device */
#define NAND_BBT_LASTBLOCK 0x00000010
/* The bbt is at the given page, else we must scan for the bbt */
#define NAND_BBT_ABSPAGE 0x00000020
/* The bbt is at the given page, else we must scan for the bbt */
#define NAND_BBT_SEARCH 0x00000040
/* bbt is stored per chip on multichip devices */
#define NAND_BBT_PERCHIP 0x00000080
/* bbt has a version counter at offset veroffs */
#define NAND_BBT_VERSION 0x00000100
/* Create a bbt if none axists */
#define NAND_BBT_CREATE 0x00000200
/* Search good / bad pattern through all pages of a block */
#define NAND_BBT_SCANALLPAGES 0x00000400
/* Scan block empty during good / bad block scan */
#define NAND_BBT_SCANEMPTY 0x00000800
/* Write bbt if neccecary */
#define NAND_BBT_WRITE 0x00001000
/* Read and write back block contents when writing bbt */
#define NAND_BBT_SAVECONTENT 0x00002000
/* Search good / bad pattern on the first and the second page */
#define NAND_BBT_SCAN2NDPAGE 0x00004000
/* The maximum number of blocks to scan for a bbt */
#define NAND_BBT_SCAN_MAXBLOCKS 4
extern int nand_scan_bbt(struct mtd_info *mtd, struct nand_bbt_descr *bd); extern int nand_scan_bbt(struct mtd_info *mtd, struct nand_bbt_descr *bd);
extern int nand_update_bbt(struct mtd_info *mtd, loff_t offs); extern int nand_update_bbt(struct mtd_info *mtd, loff_t offs);
extern int nand_default_bbt(struct mtd_info *mtd); extern int nand_default_bbt(struct mtd_info *mtd);
...@@ -548,12 +480,6 @@ extern int nand_erase_nand(struct mtd_info *mtd, struct erase_info *instr, ...@@ -548,12 +480,6 @@ extern int nand_erase_nand(struct mtd_info *mtd, struct erase_info *instr,
extern int nand_do_read(struct mtd_info *mtd, loff_t from, size_t len, extern int nand_do_read(struct mtd_info *mtd, loff_t from, size_t len,
size_t * retlen, uint8_t * buf); size_t * retlen, uint8_t * buf);
/*
* Constants for oob configuration
*/
#define NAND_SMALL_BADBLOCK_POS 5
#define NAND_LARGE_BADBLOCK_POS 0
/** /**
* struct platform_nand_chip - chip level device structure * struct platform_nand_chip - chip level device structure
* @nr_chips: max. number of chips to scan for * @nr_chips: max. number of chips to scan for
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment