mtd: introduce the mtd_pairing_scheme concept
authorBoris Brezillon <boris.brezillon@free-electrons.com>
Mon, 16 Nov 2015 14:53:13 +0000 (15:53 +0100)
committerBoris Brezillon <boris.brezillon@free-electrons.com>
Thu, 15 Sep 2016 14:47:56 +0000 (16:47 +0200)
commit477b0229ac9bc275f6f8d2c27a2d08b246fccd0e
tree578e6574229ac57723e64545a824a0aa50127340
parent29b4817d4018df78086157ea3a55c1d9424a7cfc
mtd: introduce the mtd_pairing_scheme concept

MLC and TLC NAND devices are using NAND cells exposing more than one bit,
but instead of attaching all the bits in a given cell to a single NAND
page, each bit is usually attached to a different page. This concept is
called 'page pairing', and has significant impacts on the flash storage
usage.
The main problem showed by these devices is that interrupting a page
program operation may not only corrupt the page we are programming
but also the page it is paired with, hence the need to expose to MTD
users the pairing scheme information.

The pairing APIs allows one to query pairing information attached to a
given page (here called wunit), or the other way around (the wunit
pointed by pairing information).
It also provides several helpers to help the conversion between absolute
offsets and wunits, and query the number of pairing groups.

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Reviewed-by: Brian Norris <computersforpeace@gmail.com>
drivers/mtd/mtdcore.c
drivers/mtd/mtdpart.c
include/linux/mtd/mtd.h