summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@cruncher.tec.linutronix.de>2006-05-27 01:02:13 +0200
committerThomas Gleixner <tglx@cruncher.tec.linutronix.de>2006-05-27 01:02:13 +0200
commitba0251fe87ea560eb377917e06ba0b5b9ab89094 (patch)
tree9f01452bb883ddcbd2ef1047638f9aeefeb4c89f
parentcca3b837bbb4c984165f9f9c7c06846bc0425791 (diff)
downloadlinux-ba0251fe87ea560eb377917e06ba0b5b9ab89094.tar.gz
linux-ba0251fe87ea560eb377917e06ba0b5b9ab89094.tar.bz2
linux-ba0251fe87ea560eb377917e06ba0b5b9ab89094.zip
[MTD] NAND Consolidate references and add back default name setting
We have a type pointer. Make use of it instead of the error prone nand_ids[i] reference. The NAND driver used to set default name settings from the chip ID string for the device. The feature got lost during the rework. Add it back. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r--drivers/mtd/nand/nand_base.c17
1 files changed, 10 insertions, 7 deletions
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 0c8da8fab89d..023224dd12eb 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -1954,10 +1954,13 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd,
if (!type)
return ERR_PTR(-ENODEV);
- chip->chipsize = nand_flash_ids[i].chipsize << 20;
+ if (!mtd->name)
+ mtd->name = type->name;
+
+ chip->chipsize = type->chipsize << 20;
/* Newer devices have all the information in additional id bytes */
- if (!nand_flash_ids[i].pagesize) {
+ if (!type->pagesize) {
int extid;
/* The 3rd id byte contains non relevant data ATM */
extid = chip->read_byte(mtd);
@@ -1979,10 +1982,10 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd,
/*
* Old devices have chip data hardcoded in the device id table
*/
- mtd->erasesize = nand_flash_ids[i].erasesize;
- mtd->writesize = nand_flash_ids[i].pagesize;
+ mtd->erasesize = type->erasesize;
+ mtd->writesize = type->pagesize;
mtd->oobsize = mtd->writesize / 32;
- busw = nand_flash_ids[i].options & NAND_BUSWIDTH_16;
+ busw = type->options & NAND_BUSWIDTH_16;
}
/* Try to identify manufacturer */
@@ -2020,7 +2023,7 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd,
/* Get chip options, preserve non chip based options */
chip->options &= ~NAND_CHIPOPTIONS_MSK;
- chip->options |= nand_flash_ids[i].options & NAND_CHIPOPTIONS_MSK;
+ chip->options |= type->options & NAND_CHIPOPTIONS_MSK;
/*
* Set chip as a default. Board drivers can override it, if necessary
@@ -2030,7 +2033,7 @@ static struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd,
/* Check if chip is a not a samsung device. Do not clear the
* options for chips which are not having an extended id.
*/
- if (*maf_id != NAND_MFR_SAMSUNG && !nand_flash_ids[i].pagesize)
+ if (*maf_id != NAND_MFR_SAMSUNG && !type->pagesize)
chip->options &= ~NAND_SAMSUNG_LP_OPTIONS;
/* Check for AND chips with 4 page planes */