diff mbox

[U-Boot] nand: Extending the nand_ecclayout struct based on Linux 3.5

Message ID 1348780718-1082-1-git-send-email-ckhardin@exablox.com
State Accepted
Delegated to: Scott Wood
Headers show

Commit Message

Charles Hardin Sept. 27, 2012, 9:18 p.m. UTC
NANDs with large page sizes are getting oob ares of 218 and 224
so the eccpos field needs to support these larger areas since
BCH ECC correction with 24-bit over 1024 bytes will use 168 bytes
of the oob for ECC and is required for current MLC NAND parts
circa 2012.

Signed-off-by: Charles Hardin <ckhardin@exablox.com>

Comments

Scott Wood Nov. 16, 2012, 12:05 a.m. UTC | #1
On Thu, Sep 27, 2012 at 11:18:38AM -0000, Charles Hardin wrote:
> NANDs with large page sizes are getting oob ares of 218 and 224
> so the eccpos field needs to support these larger areas since
> BCH ECC correction with 24-bit over 1024 bytes will use 168 bytes
> of the oob for ECC and is required for current MLC NAND parts
> circa 2012.
> 
> Signed-off-by: Charles Hardin <ckhardin@exablox.com>

Applied to u-boot-nand-flash

-Scott
Scott Wood Nov. 16, 2012, 1:44 a.m. UTC | #2
On 11/15/2012 06:05:35 PM, Scott Wood wrote:
> On Thu, Sep 27, 2012 at 11:18:38AM -0000, Charles Hardin wrote:
> > NANDs with large page sizes are getting oob ares of 218 and 224
> > so the eccpos field needs to support these larger areas since
> > BCH ECC correction with 24-bit over 1024 bytes will use 168 bytes
> > of the oob for ECC and is required for current MLC NAND parts
> > circa 2012.
> >
> > Signed-off-by: Charles Hardin <ckhardin@exablox.com>
> 
> Applied to u-boot-nand-flash

Unapplied.

It breaks cam_enc_4xx by making the BSS too large (please work with the  
maintainer of this board, Heiko Schocher, to find a solution).

It breaks various onenand boards (such as nhk8815) because they refer  
to MTD_MAX_OOBFREE_ENTRIES but you didn't fix the users.

-Scott
diff mbox

Patch

diff --git a/include/linux/mtd/mtd-abi.h b/include/linux/mtd/mtd-abi.h
index 1e7a18f..c321d6b 100644
--- a/include/linux/mtd/mtd-abi.h
+++ b/include/linux/mtd/mtd-abi.h
@@ -116,16 +116,17 @@  struct nand_oobfree {
 	uint32_t length;
 };
 
-#define MTD_MAX_OOBFREE_ENTRIES	8
+#define MTD_MAX_OOBFREE_ENTRIES_LARGE   32
+#define MTD_MAX_ECCPOS_ENTRIES_LARGE    448
 /*
  * ECC layout control structure. Exported to userspace for
  * diagnosis and to allow creation of raw images
  */
 struct nand_ecclayout {
 	uint32_t eccbytes;
-	uint32_t eccpos[128];
+	uint32_t eccpos[MTD_MAX_ECCPOS_ENTRIES_LARGE];
 	uint32_t oobavail;
-	struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES];
+	struct nand_oobfree oobfree[MTD_MAX_OOBFREE_ENTRIES_LARGE];
 };
 
 /**