aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd/nand/diskonchip.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2005-02-22 16:48:25 -0500
committerThomas Gleixner <tglx@mtd.linutronix.de>2005-05-23 06:42:18 -0400
commitdfd61294403cce7ca2263674f420c3417093cb56 (patch)
treeb96b4aa8524df5104c10ab480eeb9355ff9c2dbf /drivers/mtd/nand/diskonchip.c
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/nand/diskonchip.c')
-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 d5927674f283..a9b1da40ad32 100644
--- a/drivers/mtd/nand/diskonchip.c
+++ b/drivers/mtd/nand/diskonchip.c
@@ -16,7 +16,7 @@
16 * 16 *
17 * Interface to generic NAND code for M-Systems DiskOnChip devices 17 * Interface to generic NAND code for M-Systems DiskOnChip devices
18 * 18 *
19 * $Id: diskonchip.c,v 1.48 2005/01/31 22:22:21 gleixner Exp $ 19 * $Id: diskonchip.c,v 1.49 2005/02/22 21:48:21 gleixner Exp $
20 */ 20 */
21 21
22#include <linux/kernel.h> 22#include <linux/kernel.h>
@@ -410,7 +410,12 @@ static uint16_t __init doc200x_ident_chip(struct mtd_info *mtd, int nr)
410 doc200x_hwcontrol(mtd, NAND_CTL_SETALE); 410 doc200x_hwcontrol(mtd, NAND_CTL_SETALE);
411 this->write_byte(mtd, 0); 411 this->write_byte(mtd, 0);
412 doc200x_hwcontrol(mtd, NAND_CTL_CLRALE); 412 doc200x_hwcontrol(mtd, NAND_CTL_CLRALE);
413 413
414 /* We cant' use dev_ready here, but at least we wait for the
415 * command to complete
416 */
417 udelay(50);
418
414 ret = this->read_byte(mtd) << 8; 419 ret = this->read_byte(mtd) << 8;
415 ret |= this->read_byte(mtd); 420 ret |= this->read_byte(mtd);
416 421
@@ -429,6 +434,8 @@ static uint16_t __init doc200x_ident_chip(struct mtd_info *mtd, int nr)
429 doc2000_write_byte(mtd, 0); 434 doc2000_write_byte(mtd, 0);
430 doc200x_hwcontrol(mtd, NAND_CTL_CLRALE); 435 doc200x_hwcontrol(mtd, NAND_CTL_CLRALE);
431 436
437 udelay(50);
438
432 ident.dword = readl(docptr + DoC_2k_CDSN_IO); 439 ident.dword = readl(docptr + DoC_2k_CDSN_IO);
433 if (((ident.byte[0] << 8) | ident.byte[1]) == ret) { 440 if (((ident.byte[0] << 8) | ident.byte[1]) == ret) {
434 printk(KERN_INFO "DiskOnChip 2000 responds to DWORD access\n"); 441 printk(KERN_INFO "DiskOnChip 2000 responds to DWORD access\n");