From: Huang Shijie <b32955@freescale.com>
To: <dwmw2@infradead.org>
Cc: <dedekind1@gmail.com>, <computersforpeace@gmail.com>,
<linux-mtd@lists.infradead.org>, <linux-kernel@vger.kernel.org>,
Huang Shijie <b32955@freescale.com>
Subject: [PATCH v5 01/11] mtd: add datasheet's ECC information to nand_chip{}
Date: Wed, 15 May 2013 16:40:24 +0800 [thread overview]
Message-ID: <1368607232-2210-2-git-send-email-b32955@freescale.com> (raw)
In-Reply-To: <1368607232-2210-1-git-send-email-b32955@freescale.com>
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
8k page size, 744 bytes oob size and it requires 40bit ECC per 1K bytes.
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 1K bytes 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 stands for the ecc bits needed within the @ecc_step.
Both of the new fields should be set which conform to the datasheet.
For example:
"4bit ECC for each 512Byte" could be:
@ecc_strength = 4, @ecc_step = 512.
"40bit ECC for each 1024Byte" could be:
@ecc_strength = 40, @ecc_step = 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 and @ecc_step are get from the datasheet.
Signed-off-by: Huang Shijie <b32955@freescale.com>
---
include/linux/mtd/nand.h | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
index 50c5ea0..134d470 100644
--- 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: [INTERN] ECC correctability from the datasheet.
+ * Minimum amount of bit errors per @ecc_step guaranteed to
+ * be correctable. If unknown, set to zero.
+ * @ecc_step: [INTERN] ECC step required by the @ecc_strength,
+ * 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;
+ uint16_t ecc_step;
int badblockpos;
int badblockbits;
--
1.7.1
next prev parent reply other threads:[~2013-05-15 8:56 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-15 8:40 [PATCH v5 00/11] " Huang Shijie
2013-05-15 8:40 ` Huang Shijie [this message]
2013-05-15 12:11 ` [PATCH v5 01/11] " Artem Bityutskiy
2013-05-16 2:16 ` Huang Shijie
2013-05-16 7:14 ` Artem Bityutskiy
2013-05-16 8:06 ` Huang Shijie
2013-05-16 9:36 ` Artem Bityutskiy
2013-05-16 10:46 ` Huang Shijie
2013-05-15 8:40 ` [PATCH v5 02/11] mtd: increase max OOB size to 744 Huang Shijie
2013-05-15 12:12 ` Artem Bityutskiy
2013-05-15 8:40 ` [PATCH v5 03/11] mtd: get the ECC info from the parameter page for ONFI nand Huang Shijie
2013-05-15 8:40 ` [PATCH v5 04/11] mtd: add data structures for Extended Parameter Page Huang Shijie
2013-05-15 8:40 ` [PATCH v5 05/11] mtd: add a helper to get the supported features for ONFI nand Huang Shijie
2013-05-15 8:40 ` [PATCH v5 06/11] mtd: get the ECC info from the Extended Parameter Page Huang Shijie
2013-05-15 8:40 ` [PATCH v5 07/11] mtd: replace the hardcode with the onfi_feature() Huang Shijie
2013-05-15 8:40 ` [PATCH v5 08/11] mtd: add ECC info for nand_flash_dev{} Huang Shijie
2013-05-15 8:40 ` [PATCH v5 09/11] mtd: parse out the ECC info for the full-id nand chips Huang Shijie
2013-05-15 8:54 ` [PATCH v5 10/11] mtd: add the ecc info for some " Huang Shijie
2013-05-15 8:54 ` [PATCH v5 11/11] mtd: gpmi: set the BCH's geometry with the ecc info Huang Shijie
2013-05-15 10:05 ` [PATCH v5 00/11] mtd: add datasheet's ECC information to nand_chip{} Artem Bityutskiy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1368607232-2210-2-git-send-email-b32955@freescale.com \
--to=b32955@freescale.com \
--cc=computersforpeace@gmail.com \
--cc=dedekind1@gmail.com \
--cc=dwmw2@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mtd@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®