diff options
Diffstat (limited to 'drivers/mtd/nand/davinci_nand.c')
-rw-r--r-- | drivers/mtd/nand/davinci_nand.c | 27 |
1 files changed, 11 insertions, 16 deletions
diff --git a/drivers/mtd/nand/davinci_nand.c b/drivers/mtd/nand/davinci_nand.c index 0119220de7d0..68b747584bc8 100644 --- a/drivers/mtd/nand/davinci_nand.c +++ b/drivers/mtd/nand/davinci_nand.c | |||
@@ -306,6 +306,10 @@ static int __init nand_davinci_probe(struct platform_device *pdev) | |||
306 | uint32_t val; | 306 | uint32_t val; |
307 | nand_ecc_modes_t ecc_mode; | 307 | nand_ecc_modes_t ecc_mode; |
308 | 308 | ||
309 | /* insist on board-specific configuration */ | ||
310 | if (!pdata) | ||
311 | return -ENODEV; | ||
312 | |||
309 | /* which external chipselect will we be managing? */ | 313 | /* which external chipselect will we be managing? */ |
310 | if (pdev->id < 0 || pdev->id > 3) | 314 | if (pdev->id < 0 || pdev->id > 3) |
311 | return -ENODEV; | 315 | return -ENODEV; |
@@ -351,7 +355,7 @@ static int __init nand_davinci_probe(struct platform_device *pdev) | |||
351 | info->chip.select_chip = nand_davinci_select_chip; | 355 | info->chip.select_chip = nand_davinci_select_chip; |
352 | 356 | ||
353 | /* options such as NAND_USE_FLASH_BBT or 16-bit widths */ | 357 | /* options such as NAND_USE_FLASH_BBT or 16-bit widths */ |
354 | info->chip.options = pdata ? pdata->options : 0; | 358 | info->chip.options = pdata->options; |
355 | 359 | ||
356 | info->ioaddr = (uint32_t __force) vaddr; | 360 | info->ioaddr = (uint32_t __force) vaddr; |
357 | 361 | ||
@@ -360,14 +364,8 @@ static int __init nand_davinci_probe(struct platform_device *pdev) | |||
360 | info->mask_chipsel = pdata->mask_chipsel; | 364 | info->mask_chipsel = pdata->mask_chipsel; |
361 | 365 | ||
362 | /* use nandboot-capable ALE/CLE masks by default */ | 366 | /* use nandboot-capable ALE/CLE masks by default */ |
363 | if (pdata && pdata->mask_ale) | 367 | info->mask_ale = pdata->mask_cle ? : MASK_ALE; |
364 | info->mask_ale = pdata->mask_cle; | 368 | info->mask_cle = pdata->mask_cle ? : MASK_CLE; |
365 | else | ||
366 | info->mask_ale = MASK_ALE; | ||
367 | if (pdata && pdata->mask_cle) | ||
368 | info->mask_cle = pdata->mask_cle; | ||
369 | else | ||
370 | info->mask_cle = MASK_CLE; | ||
371 | 369 | ||
372 | /* Set address of hardware control function */ | 370 | /* Set address of hardware control function */ |
373 | info->chip.cmd_ctrl = nand_davinci_hwcontrol; | 371 | info->chip.cmd_ctrl = nand_davinci_hwcontrol; |
@@ -377,11 +375,8 @@ static int __init nand_davinci_probe(struct platform_device *pdev) | |||
377 | info->chip.read_buf = nand_davinci_read_buf; | 375 | info->chip.read_buf = nand_davinci_read_buf; |
378 | info->chip.write_buf = nand_davinci_write_buf; | 376 | info->chip.write_buf = nand_davinci_write_buf; |
379 | 377 | ||
380 | /* use board-specific ECC config; else, the best available */ | 378 | /* Use board-specific ECC config */ |
381 | if (pdata) | 379 | ecc_mode = pdata->ecc_mode; |
382 | ecc_mode = pdata->ecc_mode; | ||
383 | else | ||
384 | ecc_mode = NAND_ECC_HW; | ||
385 | 380 | ||
386 | switch (ecc_mode) { | 381 | switch (ecc_mode) { |
387 | case NAND_ECC_NONE: | 382 | case NAND_ECC_NONE: |
@@ -469,7 +464,7 @@ static int __init nand_davinci_probe(struct platform_device *pdev) | |||
469 | info->mtd.name = master_name; | 464 | info->mtd.name = master_name; |
470 | } | 465 | } |
471 | 466 | ||
472 | if (mtd_parts_nb <= 0 && pdata) { | 467 | if (mtd_parts_nb <= 0) { |
473 | mtd_parts = pdata->parts; | 468 | mtd_parts = pdata->parts; |
474 | mtd_parts_nb = pdata->nr_parts; | 469 | mtd_parts_nb = pdata->nr_parts; |
475 | } | 470 | } |
@@ -482,7 +477,7 @@ static int __init nand_davinci_probe(struct platform_device *pdev) | |||
482 | info->partitioned = true; | 477 | info->partitioned = true; |
483 | } | 478 | } |
484 | 479 | ||
485 | } else if (pdata && pdata->nr_parts) { | 480 | } else if (pdata->nr_parts) { |
486 | dev_warn(&pdev->dev, "ignoring %d default partitions on %s\n", | 481 | dev_warn(&pdev->dev, "ignoring %d default partitions on %s\n", |
487 | pdata->nr_parts, info->mtd.name); | 482 | pdata->nr_parts, info->mtd.name); |
488 | } | 483 | } |