summaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
authorflorian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73>2007-05-29 17:28:06 +0000
committerflorian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73>2007-05-29 17:28:06 +0000
commite85e700168edd32a6fc499ea9b23584f2678a46c (patch)
tree48909106abf464113573fdb5276dd470d8cd03a1 /target
parent60e97b82f7ee8c0c0b7e8a28136bc4a5b9cd6238 (diff)
Add the rbmipsnand fix from #1778
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@7388 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target')
-rw-r--r--target/linux/adm5120-2.6/files/drivers/mtd/nand/rbmipsnand.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/target/linux/adm5120-2.6/files/drivers/mtd/nand/rbmipsnand.c b/target/linux/adm5120-2.6/files/drivers/mtd/nand/rbmipsnand.c
index caecd50659..c687dcdd27 100644
--- a/target/linux/adm5120-2.6/files/drivers/mtd/nand/rbmipsnand.c
+++ b/target/linux/adm5120-2.6/files/drivers/mtd/nand/rbmipsnand.c
@@ -66,7 +66,17 @@ static struct mtd_partition partition_info[] = {
static struct mtd_info rmtd;
static struct nand_chip rnand;
-
+/*========================================================================*/
+/* We need to use the OLD Yaffs-1 OOB layout, otherwise the RB bootloader */
+/* will not be able to find the kernel that we load. So set the oobinfo */
+/* when creating the partitions. */
+/*========================================================================*/
+static struct nand_ecclayout rb_ecclayout = {
+ .eccbytes = 6,
+ .eccpos = { 8, 9, 10, 13, 14, 15 },
+ .oobavail = 9,
+ .oobfree = { { 0, 4 }, { 6, 2 }, { 11, 2 }, { 4, 1} }
+};
static unsigned init_ok = 0;
unsigned get_rbnand_block_size(void) {
@@ -93,6 +103,7 @@ int __init rbmips_init(void) {
return -ENXIO;
}
rnand.ecc.mode = NAND_ECC_SOFT;
+ rnand.ecc.layout = &rb_ecclayout;
rnand.chip_delay = 25;
rnand.options |= NAND_NO_AUTOINCR;
rmtd.priv = &rnand;