aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/mtd')
-rw-r--r--drivers/mtd/nand/fsmc_nand.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/mtd/nand/fsmc_nand.c b/drivers/mtd/nand/fsmc_nand.c
index 56b661972122..c41f45faa09e 100644
--- a/drivers/mtd/nand/fsmc_nand.c
+++ b/drivers/mtd/nand/fsmc_nand.c
@@ -296,6 +296,7 @@ struct fsmc_nand_data {
296 296
297 struct fsmc_eccplace *ecc_place; 297 struct fsmc_eccplace *ecc_place;
298 unsigned int bank; 298 unsigned int bank;
299 struct device *dev;
299 struct clk *clk; 300 struct clk *clk;
300 301
301 struct fsmc_nand_timings *dev_timings; 302 struct fsmc_nand_timings *dev_timings;
@@ -457,6 +458,11 @@ static int fsmc_read_hwecc_ecc4(struct mtd_info *mtd, const uint8_t *data,
457 cond_resched(); 458 cond_resched();
458 } while (!time_after_eq(jiffies, deadline)); 459 } while (!time_after_eq(jiffies, deadline));
459 460
461 if (time_after_eq(jiffies, deadline)) {
462 dev_err(host->dev, "calculate ecc timed out\n");
463 return -ETIMEDOUT;
464 }
465
460 ecc_tmp = readl(&regs->bank_regs[bank].ecc1); 466 ecc_tmp = readl(&regs->bank_regs[bank].ecc1);
461 ecc[0] = (uint8_t) (ecc_tmp >> 0); 467 ecc[0] = (uint8_t) (ecc_tmp >> 0);
462 ecc[1] = (uint8_t) (ecc_tmp >> 8); 468 ecc[1] = (uint8_t) (ecc_tmp >> 8);
@@ -793,6 +799,7 @@ static int __init fsmc_nand_probe(struct platform_device *pdev)
793 host->select_chip = pdata->select_bank; 799 host->select_chip = pdata->select_bank;
794 host->partitions = pdata->partitions; 800 host->partitions = pdata->partitions;
795 host->nr_partitions = pdata->nr_partitions; 801 host->nr_partitions = pdata->nr_partitions;
802 host->dev = &pdev->dev;
796 host->dev_timings = pdata->nand_timings; 803 host->dev_timings = pdata->nand_timings;
797 regs = host->regs_va; 804 regs = host->regs_va;
798 805