summaryrefslogtreecommitdiffstats
path: root/drivers/nand
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/nand')
-rw-r--r--drivers/nand/diskonchip.c3
-rw-r--r--drivers/nand/nand.c13
-rw-r--r--drivers/nand/nand_base.c16
-rw-r--r--drivers/nand/nand_bbt.c7
-rw-r--r--drivers/nand/nand_ecc.c4
-rw-r--r--drivers/nand/nand_ids.c4
6 files changed, 34 insertions, 13 deletions
diff --git a/drivers/nand/diskonchip.c b/drivers/nand/diskonchip.c
index b421d4c1c3..07e2549352 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 d187c89ea1..bc85005b2a 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 9ec5af9d71..b039c3cd8c 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 dfa88a3af6..f4813088b5 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 6e11c22858..4e610c1123 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 39882cc76b..d355326107 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 */
+
OpenPOWER on IntegriCloud