diff options
Diffstat (limited to 'drivers/mtd')
-rw-r--r-- | drivers/mtd/nand/fsmc_nand.c | 7 |
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(®s->bank_regs[bank].ecc1); | 466 | ecc_tmp = readl(®s->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 | ||