diff options
Diffstat (limited to 'drivers/nand')
-rw-r--r-- | drivers/nand/diskonchip.c | 3 | ||||
-rw-r--r-- | drivers/nand/nand.c | 13 | ||||
-rw-r--r-- | drivers/nand/nand_base.c | 16 | ||||
-rw-r--r-- | drivers/nand/nand_bbt.c | 7 | ||||
-rw-r--r-- | drivers/nand/nand_ecc.c | 4 | ||||
-rw-r--r-- | drivers/nand/nand_ids.c | 4 |
6 files changed, 34 insertions, 13 deletions
diff --git a/drivers/nand/diskonchip.c b/drivers/nand/diskonchip.c index b421d4c1c36..07e2549352c 100644 --- a/drivers/nand/diskonchip.c +++ b/drivers/nand/diskonchip.c @@ -19,6 +19,8 @@ * $Id: diskonchip.c,v 1.45 2005/01/05 18:05:14 dwmw2 Exp $ */ +#include <common.h> +#ifdef CONFIG_NEW_NAND_CODE #include <linux/kernel.h> #include <linux/init.h> #include <linux/sched.h> @@ -1780,3 +1782,4 @@ module_exit(cleanup_nanddoc); MODULE_LICENSE("GPL"); MODULE_AUTHOR("David Woodhouse <dwmw2@infradead.org>"); MODULE_DESCRIPTION("M-Systems DiskOnChip 2000, Millennium and Millennium Plus device driver\n"); +#endif /* CONFIG_NEW_NAND_CODE */ diff --git a/drivers/nand/nand.c b/drivers/nand/nand.c index d187c89ea13..bc85005b2af 100644 --- a/drivers/nand/nand.c +++ b/drivers/nand/nand.c @@ -23,6 +23,7 @@ #include <common.h> +#ifdef CONFIG_NEW_NAND_CODE #if (CONFIG_COMMANDS & CFG_CMD_NAND) #include <nand.h> @@ -46,12 +47,12 @@ static void nand_init_chip(struct mtd_info *mtd, struct nand_chip *nand, { mtd->priv = nand; - nand->IO_ADDR_R = nand->IO_ADDR_W = base_addr; + nand->IO_ADDR_R = nand->IO_ADDR_W = (void __iomem *)base_addr; board_nand_init(nand); if (nand_scan(mtd, 1) == 0) { if (!mtd->name) - mtd->name = default_nand_name; + mtd->name = (char *)default_nand_name; } else mtd->name = NULL; @@ -60,12 +61,16 @@ static void nand_init_chip(struct mtd_info *mtd, struct nand_chip *nand, void nand_init(void) { int i; - + unsigned int size = 0; for (i = 0; i < CFG_MAX_NAND_DEVICE; i++) { nand_init_chip(&nand_info[i], &nand_chip[i], base_address[i]); + size += nand_info[i].size; if (nand_curr_device == -1) nand_curr_device = i; - } +} + printf("%lu MiB\n", size / (1024 * 1024)); } #endif +#endif /* CONFIG_NEW_NAND_CODE */ + diff --git a/drivers/nand/nand_base.c b/drivers/nand/nand_base.c index 9ec5af9d714..b039c3cd8c1 100644 --- a/drivers/nand/nand_base.c +++ b/drivers/nand/nand_base.c @@ -71,6 +71,7 @@ #endif #include <common.h> +#ifdef CONFIG_NEW_NAND_CODE #if (CONFIG_COMMANDS & CFG_CMD_NAND) @@ -847,11 +848,13 @@ static int nand_wait(struct mtd_info *mtd, struct nand_chip *this, int state) else this->cmdfunc(mtd, NAND_CMD_STATUS, -1, -1); - reset_timer_masked(); + reset_timer(); while (1) { - if (get_timer_masked() > timeo) + if (get_timer(0) > timeo) { + printf("Timeout!"); return 0; + } if (this->dev_ready) { if (this->dev_ready(mtd)) @@ -862,6 +865,10 @@ static int nand_wait(struct mtd_info *mtd, struct nand_chip *this, int state) } } + /* XXX nand device 1 on dave (PPChameleonEVB) needs more time */ + reset_timer(); + while (get_timer(0) < 10); + return this->read_byte(mtd); } #endif @@ -2393,9 +2400,6 @@ int nand_scan (struct mtd_info *mtd, int maxchips) if (nand_manuf_ids[j].id == nand_maf_id) break; } - printk (KERN_INFO "NAND device: Manufacturer ID:" - " 0x%02x, Chip ID: 0x%02x (%s %s)\n", nand_maf_id, nand_dev_id, - nand_manuf_ids[j].name , nand_flash_ids[i].name); break; } @@ -2656,3 +2660,5 @@ void nand_release (struct mtd_info *mtd) } #endif +#endif /* CONFIG_NEW_NAND_CODE */ + diff --git a/drivers/nand/nand_bbt.c b/drivers/nand/nand_bbt.c index dfa88a3af6f..f4813088b5e 100644 --- a/drivers/nand/nand_bbt.c +++ b/drivers/nand/nand_bbt.c @@ -54,6 +54,7 @@ #include <common.h> +#ifdef CONFIG_NEW_NAND_CODE #if (CONFIG_COMMANDS & CFG_CMD_NAND) #include <malloc.h> @@ -261,8 +262,6 @@ static void create_bbt (struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_desc loff_t from; size_t readlen, ooblen; - printk (KERN_INFO "Scanning device for bad blocks\n"); - if (bd->options & NAND_BBT_SCANALLPAGES) len = 1 << (this->bbt_erase_shift - this->page_shift); else { @@ -298,8 +297,6 @@ static void create_bbt (struct mtd_info *mtd, uint8_t *buf, struct nand_bbt_desc for (j = 0; j < len; j++) { if (check_pattern (&buf[j * scanlen], scanlen, mtd->oobblock, bd)) { this->bbt[i >> 3] |= 0x03 << (i & 0x6); - printk (KERN_WARNING "Bad eraseblock %d at 0x%08x\n", - i >> 1, (unsigned int) from); break; } } @@ -1054,3 +1051,5 @@ int nand_isbad_bbt (struct mtd_info *mtd, loff_t offs, int allowbbt) } #endif +#endif /* CONFIG_NEW_NAND_CODE */ + diff --git a/drivers/nand/nand_ecc.c b/drivers/nand/nand_ecc.c index 6e11c22858c..4e610c1123e 100644 --- a/drivers/nand/nand_ecc.c +++ b/drivers/nand/nand_ecc.c @@ -37,8 +37,10 @@ #include <common.h> +#ifdef CONFIG_NEW_NAND_CODE #if (CONFIG_COMMANDS & CFG_CMD_NAND) +#include<linux/mtd/mtd.h> /* * Pre-calculated 256-way 1 byte column parity */ @@ -241,3 +243,5 @@ int nand_correct_data(struct mtd_info *mtd, u_char *dat, u_char *read_ecc, u_cha } #endif /* CONFIG_COMMANDS & CFG_CMD_NAND */ +#endif /* CONFIG_NEW_NAND_CODE */ + diff --git a/drivers/nand/nand_ids.c b/drivers/nand/nand_ids.c index 39882cc76b2..d3553261073 100644 --- a/drivers/nand/nand_ids.c +++ b/drivers/nand/nand_ids.c @@ -10,8 +10,10 @@ * published by the Free Software Foundation. * */ + #include <common.h> +#ifdef CONFIG_NEW_NAND_CODE #if (CONFIG_COMMANDS & CFG_CMD_NAND) #include <linux/mtd/nand.h> @@ -125,3 +127,5 @@ struct nand_manufacturers nand_manuf_ids[] = { {0x0, "Unknown"} }; #endif +#endif /* CONFIG_NEW_NAND_CODE */ + |