summaryrefslogtreecommitdiff
path: root/target/linux/mvebu/patches-3.10/0090-mtd-add-datasheet-s-ECC-information-to-nand_chip.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/mvebu/patches-3.10/0090-mtd-add-datasheet-s-ECC-information-to-nand_chip.patch')
-rw-r--r--target/linux/mvebu/patches-3.10/0090-mtd-add-datasheet-s-ECC-information-to-nand_chip.patch64
1 files changed, 0 insertions, 64 deletions
diff --git a/target/linux/mvebu/patches-3.10/0090-mtd-add-datasheet-s-ECC-information-to-nand_chip.patch b/target/linux/mvebu/patches-3.10/0090-mtd-add-datasheet-s-ECC-information-to-nand_chip.patch
deleted file mode 100644
index fcc3c92..0000000
--- a/target/linux/mvebu/patches-3.10/0090-mtd-add-datasheet-s-ECC-information-to-nand_chip.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-From 4aa571afd29f88898ef2fb954effcf53fec3264e Mon Sep 17 00:00:00 2001
-From: Huang Shijie <b32955@freescale.com>
-Date: Fri, 17 May 2013 11:17:25 +0800
-Subject: [PATCH 090/203] mtd: add datasheet's ECC information to nand_chip{}
-
-1.) Why add the ECC information to the nand_chip{} ?
- Each nand chip has its requirement for the ECC correctability, such as
- "4bit ECC for each 512Byte" or "40bit ECC for each 1024Byte".
- This ECC info is very important to the nand controller, such as gpmi.
-
- Take the Micron MT29F64G08CBABA for example, its geometry is
- 8KiB page size, 744 bytes oob size and it requires 40bit ECC per 1KiB.
- If we do not provide the ECC info to the gpmi nand driver, it has to
- calculate the ECC correctability itself. The gpmi driver will gets the 56bit
- ECC for per 1KiB which is beyond its BCH's 40bit ecc capibility.
- The gpmi will quits in this case. But in actually, the gpmi can supports
- this nand chip if it can get the right ECC info.
-
-2.) about the new fields.
- The @ecc_strength_ds stands for the ecc bits needed within the @ecc_step_ds.
- The two fields should be set from the nand chip's datasheets.
-
- For example:
- "4bit ECC for each 512Byte" could be:
- @ecc_strength_ds = 4, @ecc_step_ds = 512.
- "40bit ECC for each 1024Byte" could be:
- @ecc_strength_ds = 40, @ecc_step_ds = 1024.
-
-3.) Why do not re-use the @strength and @size in the nand_ecc_ctrl{}?
- The @strength and @size in nand_ecc_ctrl{} is used by the nand controller
- driver, while the @ecc_strength_ds and @ecc_step_ds are get from the datasheet.
-
-Signed-off-by: Huang Shijie <b32955@freescale.com>
-Reviewed-and-tested-by: Brian Norris <computersforpeace@gmail.com>
-Signed-off-by: Brian Norris <computersforpeace@gmail.com>
-Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
----
- include/linux/mtd/nand.h | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
---- a/include/linux/mtd/nand.h
-+++ b/include/linux/mtd/nand.h
-@@ -434,6 +434,12 @@ struct nand_buffers {
- * bad block marker position; i.e., BBM == 11110111b is
- * not bad when badblockbits == 7
- * @cellinfo: [INTERN] MLC/multichip data from chip ident
-+ * @ecc_strength_ds: [INTERN] ECC correctability from the datasheet.
-+ * Minimum amount of bit errors per @ecc_step_ds guaranteed
-+ * to be correctable. If unknown, set to zero.
-+ * @ecc_step_ds: [INTERN] ECC step required by the @ecc_strength_ds,
-+ * also from the datasheet. It is the recommended ECC step
-+ * size, if known; if unknown, set to zero.
- * @numchips: [INTERN] number of physical chips
- * @chipsize: [INTERN] the size of one chip for multichip arrays
- * @pagemask: [INTERN] page number mask = number of (pages / chip) - 1
-@@ -510,6 +516,8 @@ struct nand_chip {
- unsigned int pagebuf_bitflips;
- int subpagesize;
- uint8_t cellinfo;
-+ uint16_t ecc_strength_ds;
-+ uint16_t ecc_step_ds;
- int badblockpos;
- int badblockbits;
-