make use the chip_fixup function of the plat_nand driver
authorGabor Juhos <juhosg@openwrt.org>
Fri, 6 Jun 2008 09:03:35 +0000 (09:03 +0000)
committerGabor Juhos <juhosg@openwrt.org>
Fri, 6 Jun 2008 09:03:35 +0000 (09:03 +0000)
SVN-Revision: 11376

target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c

index 48ea92f22be8fd5784f29555ea54c06be7f17d4c..48a7272afd7efd4fd55407d66abd740fb6de4331 100644 (file)
@@ -213,6 +213,16 @@ static void __init rb1xx_mac_setup(void)
        }
 }
 
+static int rb1xx_nand_fixup(struct mtd_info *mtd)
+{
+       struct nand_chip *chip = mtd->priv;
+
+       if (mtd->writesize == 512)
+               chip->ecc.layout = &rb1xx_nand_ecclayout;
+
+       return 0;
+}
+
 static void __init rb1xx_flash_setup(void)
 {
        /* setup data for flash0 device */
@@ -223,9 +233,10 @@ static void __init rb1xx_flash_setup(void)
        adm5120_nand_data.chip.nr_chips = 1;
        adm5120_nand_data.chip.nr_partitions = ARRAY_SIZE(rb1xx_nand_parts);
        adm5120_nand_data.chip.partitions = rb1xx_nand_parts;
-       adm5120_nand_data.chip.ecclayout = &rb1xx_nand_ecclayout;
        adm5120_nand_data.chip.chip_delay = RB1XX_NAND_CHIP_DELAY;
        adm5120_nand_data.chip.options = NAND_NO_AUTOINCR;
+
+       adm5120_nand_data.chip.chip_fixup = &rb1xx_nand_fixup;
 }
 
 static void __init rb1xx_setup(void)