[PATCH 00/12] mtd: nand_bbt: introduce independent nand BBT

From: Peter Pan ææ (peterpandong)
Date: Fri Sep 25 2015 - 02:35:37 EST


Currently nand_bbt.c is tied with struct nand_chip, and it makes other
NAND family chips hard to use nand_bbt.c. Maybe it's the reason why
onenand has own bbt(onenand_bbt.c).

Separate struct nand_chip from BBT code can make current BBT shareable.
We create struct nand_bbt to take place of nand_chip in nand_bbt.c.
Struct nand_bbt contains all the information BBT needed from outside and
it should be embedded into NAND family chip struct (such as struct nand_chip).
NAND family driver should allocate, initialize and free struct nand_bbt.

Below is mtd folder structure we want:
mtd
âââ Kconfig
âââ Makefile
âââ ...
âââ nand_bbt.c
âââ nand
â âââ Kconfig
â âââ Makefile
â âââ nand_base.c
â âââ nand_ids.c
â âââ ...
â âââ xway_nand.c
âââ spi-nand
â âââ Kconfig
â âââ Makefile
â âââ spi-nand-base.c
â âââ ...
â âââ spi-nand-device.c
âââ ...

Most of the patch is borrowed from Brian Norris <computersforpeace@xxxxxxxxx>.
http://git.infradead.org/users/norris/linux-mtd.git/shortlog/refs/heads/nand-bbt
Based on Brian's suggestion, I make my previous BBT patch into 12 independent
patches. Previous patch is http://patchwork.ozlabs.org/patch/492066/
Beside the patch split, I also moved nand_bbt.c to mtd folder, which didn't in
previous patch.

Patch 3, 7, 8, 9, 10 and 11 are totally borrowed from Brian's git tree. I just
test and split the code into independent patch. Patch 1, 2, 5 and 6 are partial
borrowed. I make some changes from Brian's git tree and the changes are recorded
in commit log. Patch 4 and 12 are written by me.

The patch is tested on Zed board. This version of this series is based on master
branch of l2-mtd.git (commit e1305df1283cbe1aa57093f8766b2dfe650ed5ff).

Brian Norris (6):
mtd: nand_bbt: add new API definitions
mtd: nand: make nand_erase_nand() static
mtd: nand_bbt: remove struct nand_chip from nand_bbt.c
mtd: nand_bbt: remove old API definitions
mtd: nand_bbt: remove NAND_BBT_DYNAMICSTRUCT macro
mtd: nand: remove nand_chip.bbt
Brian Norris and Peter Pan (4):
mtd: nand_bbt: new header for nand family BBT
mtd: nand_bbt: introduce struct nand_bbt
mtd: nand: use new BBT API instead of old ones
mtd: nand_bbt: use erase() and is_bad_bbm() hook in BBT
Peter Pan (2):
mtd: nand_bbt: add nand_bbt_markbad_factory() interface
mtd: nand-bbt: move nand_bbt.c to mtd folder

---
drivers/mtd/Kconfig | 7 +
drivers/mtd/Makefile | 1 +
drivers/mtd/nand/Kconfig | 2 +-
drivers/mtd/nand/Makefile | 2 +-
drivers/mtd/nand/docg4.c | 6 +-
drivers/mtd/nand/nand_base.c | 145 ++++-
drivers/mtd/nand/nand_bbt.c | 1377 ------------------------------------------
drivers/mtd/nand_bbt.c | 1289 +++++++++++++++++++++++++++++++++++++++
include/linux/mtd/bbm.h | 96 +--
include/linux/mtd/nand.h | 16 +-
include/linux/mtd/nand_bbt.h | 177 ++++++
11 files changed, 1624 insertions(+), 1494 deletions(-)
delete mode 100644 drivers/mtd/nand/nand_bbt.c
create mode 100644 drivers/mtd/nand_bbt.c
create mode 100644 include/linux/mtd/nand_bbt.h
N‹§²æ¸›yú²X¬¶ÇvØ–)Þ{.nlj·¥Š{±‘êX§¶›¡Ü}©ž²ÆzÚj:+v‰¨¾«‘êZ+€Êzf£¢·hšˆ§~†­†Ûÿû®w¥¢¸?™¨è&¢)ßf”ùy§m…á«a¶Úÿ 0¶ìå