|
@@ -3329,6 +3329,8 @@ int nand_scan_ident(struct mtd_info *mtd, int maxchips,
|
|
|
return PTR_ERR(type);
|
|
|
}
|
|
|
|
|
|
+ chip->select_chip(mtd, -1);
|
|
|
+
|
|
|
/* Check for a chip array */
|
|
|
for (i = 1; i < maxchips; i++) {
|
|
|
chip->select_chip(mtd, i);
|
|
@@ -3338,8 +3340,11 @@ int nand_scan_ident(struct mtd_info *mtd, int maxchips,
|
|
|
chip->cmdfunc(mtd, NAND_CMD_READID, 0x00, -1);
|
|
|
/* Read manufacturer and device IDs */
|
|
|
if (nand_maf_id != chip->read_byte(mtd) ||
|
|
|
- nand_dev_id != chip->read_byte(mtd))
|
|
|
+ nand_dev_id != chip->read_byte(mtd)) {
|
|
|
+ chip->select_chip(mtd, -1);
|
|
|
break;
|
|
|
+ }
|
|
|
+ chip->select_chip(mtd, -1);
|
|
|
}
|
|
|
if (i > 1)
|
|
|
pr_info("%d NAND chips detected\n", i);
|
|
@@ -3598,9 +3603,6 @@ int nand_scan_tail(struct mtd_info *mtd)
|
|
|
/* Initialize state */
|
|
|
chip->state = FL_READY;
|
|
|
|
|
|
- /* De-select the device */
|
|
|
- chip->select_chip(mtd, -1);
|
|
|
-
|
|
|
/* Invalidate the pagebuffer reference */
|
|
|
chip->pagebuf = -1;
|
|
|
|