summaryrefslogtreecommitdiffstats
path: root/drivers/mtd
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2005-02-22 21:48:25 +0000
committerThomas Gleixner <tglx@mtd.linutronix.de>2005-05-23 12:42:18 +0200
commitdfd61294403cce7ca2263674f420c3417093cb56 (patch)
treeb96b4aa8524df5104c10ab480eeb9355ff9c2dbf /drivers/mtd
parentfdf2fd52746bbffeffa19e24cb0608abc5429bc2 (diff)
[MTD] DiskOnChip: Wait for the command to finish.
Do not use the ready function here, as it might hang for ever. The result will show, whether the chip is there or not Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'drivers/mtd')
-rw-r--r--drivers/mtd/nand/diskonchip.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/mtd/nand/diskonchip.c b/drivers/mtd/nand/diskonchip.c
index d5927674f28..a9b1da40ad3 100644
--- a/drivers/mtd/nand/diskonchip.c
+++ b/drivers/mtd/nand/diskonchip.c
@@ -16,7 +16,7 @@
*
* Interface to generic NAND code for M-Systems DiskOnChip devices
*
- * $Id: diskonchip.c,v 1.48 2005/01/31 22:22:21 gleixner Exp $
+ * $Id: diskonchip.c,v 1.49 2005/02/22 21:48:21 gleixner Exp $
*/
#include <linux/kernel.h>
@@ -410,7 +410,12 @@ static uint16_t __init doc200x_ident_chip(struct mtd_info *mtd, int nr)
doc200x_hwcontrol(mtd, NAND_CTL_SETALE);
this->write_byte(mtd, 0);
doc200x_hwcontrol(mtd, NAND_CTL_CLRALE);
-
+
+ /* We cant' use dev_ready here, but at least we wait for the
+ * command to complete
+ */
+ udelay(50);
+
ret = this->read_byte(mtd) << 8;
ret |= this->read_byte(mtd);
@@ -429,6 +434,8 @@ static uint16_t __init doc200x_ident_chip(struct mtd_info *mtd, int nr)
doc2000_write_byte(mtd, 0);
doc200x_hwcontrol(mtd, NAND_CTL_CLRALE);
+ udelay(50);
+
ident.dword = readl(docptr + DoC_2k_CDSN_IO);
if (((ident.byte[0] << 8) | ident.byte[1]) == ret) {
printk(KERN_INFO "DiskOnChip 2000 responds to DWORD access\n");