From 5636ce0f070dee85c1b1203fe436a89648d25d06 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Mon, 21 May 2012 22:59:27 +0200 Subject: mtd: gpmi-nand: define ecc.strength Fix an issue which was introduced by the recent addition of ecc.strength. The ecc.strength wasn't set in gpmi-nand, resulting in the following crash: [ 2.550000] kernel BUG at drivers/mtd/nand/nand_base.c:3347! ... [ 2.550000] [] (nand_scan_tail+0x328/0x650) from [] (gpmi_nand_probe+0x43c/0x5a4) [ 2.550000] [] (gpmi_nand_probe+0x43c/0x5a4) from [] (platform_drv_probe+0x14/0x18) [ 2.550000] [] (platform_drv_probe+0x14/0x18) from [] (driver_probe_device+0x74/0x1fc) [ 2.550000] [] (driver_probe_device+0x74/0x1fc) from [] (__driver_attach+0x94/0x98) [ 2.550000] [] (__driver_attach+0x94/0x98) from [] (bus_for_each_dev+0x50/0x80) [ 2.550000] [] (bus_for_each_dev+0x50/0x80) from [] (bus_add_driver+0x188/0x25c) [ 2.550000] [] (bus_add_driver+0x188/0x25c) from [] (driver_register+0x78/0x138) [ 2.550000] [] (driver_register+0x78/0x138) from [] (gpmi_nand_init+0xc/0x30) [ 2.550000] [] (gpmi_nand_init+0xc/0x30) from [] (do_one_initcall+0x108/0x17c) [ 2.550000] [] (do_one_initcall+0x108/0x17c) from [] (kernel_init+0xfc/0x1bc) [ 2.550000] [] (kernel_init+0xfc/0x1bc) from [] (kernel_thread_exit+0x0/0x8) Signed-off-by: Marek Vasut Signed-off-by: Artem Bityutskiy Signed-off-by: David Woodhouse --- drivers/mtd/nand/gpmi-nand/gpmi-nand.c | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'drivers/mtd/nand/gpmi-nand/gpmi-nand.c') diff --git a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c index 95f2af848ff..3eafc68154e 100644 --- a/drivers/mtd/nand/gpmi-nand/gpmi-nand.c +++ b/drivers/mtd/nand/gpmi-nand/gpmi-nand.c @@ -1424,6 +1424,10 @@ static int gpmi_pre_bbt_scan(struct gpmi_nand_data *this) if (ret) return ret; + /* Adjust the ECC strength according to the chip. */ + this->nand.ecc.strength = this->bch_geometry.ecc_strength; + this->mtd.ecc_strength = this->bch_geometry.ecc_strength; + /* NAND boot init, depends on the gpmi_set_geometry(). */ return nand_boot_init(this); } @@ -1482,6 +1486,7 @@ static int __devinit gpmi_nfc_init(struct gpmi_nand_data *this) chip->options |= NAND_NO_SUBPAGE_WRITE; chip->ecc.mode = NAND_ECC_HW; chip->ecc.size = 1; + chip->ecc.strength = 8; chip->ecc.layout = &gpmi_hw_ecclayout; /* Allocate a temporary DMA buffer for reading ID in the nand_scan() */ -- cgit v1.2.3