|
@@ -1073,9 +1073,9 @@ static int __devinit omap_nand_probe(struct platform_device *pdev)
|
|
|
/* DIP switches on some boards change between 8 and 16 bit
|
|
|
* bus widths for flash. Try the other width if the first try fails.
|
|
|
*/
|
|
|
- if (nand_scan(&info->mtd, 1)) {
|
|
|
+ if (nand_scan_ident(&info->mtd, 1, NULL)) {
|
|
|
info->nand.options ^= NAND_BUSWIDTH_16;
|
|
|
- if (nand_scan(&info->mtd, 1)) {
|
|
|
+ if (nand_scan_ident(&info->mtd, 1, NULL)) {
|
|
|
err = -ENXIO;
|
|
|
goto out_release_mem_region;
|
|
|
}
|
|
@@ -1101,6 +1101,12 @@ static int __devinit omap_nand_probe(struct platform_device *pdev)
|
|
|
info->nand.ecc.layout = &omap_oobinfo;
|
|
|
}
|
|
|
|
|
|
+ /* second phase scan */
|
|
|
+ if (nand_scan_tail(&info->mtd)) {
|
|
|
+ err = -ENXIO;
|
|
|
+ goto out_release_mem_region;
|
|
|
+ }
|
|
|
+
|
|
|
#ifdef CONFIG_MTD_PARTITIONS
|
|
|
err = parse_mtd_partitions(&info->mtd, part_probes, &info->parts, 0);
|
|
|
if (err > 0)
|