linux-kernel-test/drivers/mtd/devices
Robert Jarzmik c3de8a8a5a mtd: docg3: add fast mode
Docg3 chips can work in 3 modes : normal MLC mode, fast
mode and reliable mode. Normally, as docg3 is a MLC chip, it
should be configured to work in normal mode.

In both normal mode, each page is distinct. This
means that writing to page 12 of blocks 14,15 writes only to
that page, and reading from page 12 of blocks 14,15 reads
only from that page.

In reliable and fast modes, pages are coupled by pairs, and
are clones one of each other. This means that the available
capacity of the chip is halved. Pages are coupled in each
block, and page of index 2*n contains the same data as page
2*n+1 of the same block.

In fast mode, the reads occur a bit faster, but are a bit
less reliable that in normal mode.

When reading from page 2*n, the chip reads bytes from both
page 2*n and page 2*n+1, makes a logical and for each byte,
and returns the result. As programming a page means
"clearing bits", even if a bit was not cleared on one page
because the flash is worn out, the other page has the bit
cleared, and the result of the "AND" gives a correct result.

When writing to page 2*n, the chip writes data to both page
2*n and page 2*n+1.

Signed-off-by: Robert Jarzmik <robert.jarzmik@free.fr>
Reviewed-by: Ivan Djelic <ivan.djelic@parrot.com>
Reviewed-by: Mike Dunn <mikedunn@newsguy.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2012-01-09 18:07:29 +00:00
..
block2mtd.c mtd: convert remaining users to mtd_device_register() 2011-05-25 02:25:00 +01:00
doc2000.c mtd: rename MTD_OOB_* to MTD_OPS_* 2011-09-11 15:28:59 +03:00
doc2001.c mtd: rename MTD_OOB_* to MTD_OPS_* 2011-09-11 15:28:59 +03:00
doc2001plus.c mtd: rename MTD_OOB_* to MTD_OPS_* 2011-09-11 15:28:59 +03:00
docecc.c mtd: spelling, capitalization, uniformity 2011-09-11 15:02:13 +03:00
docg3.c mtd: docg3: add fast mode 2012-01-09 18:07:29 +00:00
docg3.h mtd: docg3: add fast mode 2012-01-09 18:07:29 +00:00
docprobe.c mtd: clean up usage of MTD_DOCPROBE_ADDRESS 2011-10-30 14:22:36 +02:00
Kconfig mtd: docg3: add ECC correction code 2012-01-09 18:07:26 +00:00
lart.c mtd: lart: cleanup: drop HAVE_PARTITIONS 2011-09-11 15:02:05 +03:00
m25p80.c mtd: m25p80: don't probe device which has status of 'disabled' 2011-10-16 14:51:04 +03:00
Makefile mtd: Add DiskOnChip G3 support 2011-10-14 12:03:47 +03:00
ms02-nv.c mtd: convert remaining users to mtd_device_register() 2011-05-25 02:25:00 +01:00
ms02-nv.h MTD/JFFS2: remove CVS keywords 2008-06-04 17:50:17 +01:00
mtd_dataflash.c mtd: cleanup style on pr_debug messages 2011-09-11 15:02:16 +03:00
mtdram.c mtd: convert remaining users to mtd_device_register() 2011-05-25 02:25:00 +01:00
phram.c mtd: convert remaining users to mtd_device_register() 2011-05-25 02:25:00 +01:00
pmc551.c mtd: convert remaining users to mtd_device_register() 2011-05-25 02:25:00 +01:00
slram.c mtd: convert remaining users to mtd_device_register() 2011-05-25 02:25:00 +01:00
sst25l.c mtd: replace DEBUG() with pr_debug() 2011-09-11 15:02:16 +03:00