aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/mtd/nand
diff options
context:
space:
mode:
authorKyungmin Park <kyungmin.aprk@samsung.com>2005-02-16 04:39:39 -0500
committerThomas Gleixner <tglx@mtd.linutronix.de>2005-05-23 06:36:30 -0400
commit0ea4a7558f3c5b894e46da4b2be120edf002a86d (patch)
tree494c30b92e8170437e50cb26bba28da2d9add209 /drivers/mtd/nand
parent88ec7c50bfeb5447d96fba55021bec2a274ea021 (diff)
[MTD] NAND: Early Manufacturer ID lookup
Move manufacturer ID search to display correct ID in case of buswidth mismatch. Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'drivers/mtd/nand')
-rw-r--r--drivers/mtd/nand/nand_base.c19
-rw-r--r--drivers/mtd/nand/nand_ids.c4
2 files changed, 11 insertions, 12 deletions
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 1806ffae2452..acd5ec193ff1 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -59,7 +59,7 @@
59 * The AG-AND chips have nice features for speed improvement, 59 * The AG-AND chips have nice features for speed improvement,
60 * which are not supported yet. Read / program 4 pages in one go. 60 * which are not supported yet. Read / program 4 pages in one go.
61 * 61 *
62 * $Id: nand_base.c,v 1.132 2005/02/09 14:49:56 dedekind Exp $ 62 * $Id: nand_base.c,v 1.133 2005/02/16 09:39:35 gleixner Exp $
63 * 63 *
64 * This program is free software; you can redistribute it and/or modify 64 * This program is free software; you can redistribute it and/or modify
65 * it under the terms of the GNU General Public License version 2 as 65 * it under the terms of the GNU General Public License version 2 as
@@ -2276,7 +2276,7 @@ static int nand_block_markbad (struct mtd_info *mtd, loff_t ofs)
2276 */ 2276 */
2277int nand_scan (struct mtd_info *mtd, int maxchips) 2277int nand_scan (struct mtd_info *mtd, int maxchips)
2278{ 2278{
2279 int i, j, nand_maf_id, nand_dev_id, busw; 2279 int i, j, nand_maf_id, nand_dev_id, busw, maf_id;
2280 struct nand_chip *this = mtd->priv; 2280 struct nand_chip *this = mtd->priv;
2281 2281
2282 /* Get buswidth to select the correct functions*/ 2282 /* Get buswidth to select the correct functions*/
@@ -2364,12 +2364,18 @@ int nand_scan (struct mtd_info *mtd, int maxchips)
2364 busw = nand_flash_ids[i].options & NAND_BUSWIDTH_16; 2364 busw = nand_flash_ids[i].options & NAND_BUSWIDTH_16;
2365 } 2365 }
2366 2366
2367 /* Try to identify manufacturer */
2368 for (maf_id = 0; nand_manuf_ids[maf_id].id != 0x0; maf_id++) {
2369 if (nand_manuf_ids[maf_id].id == nand_maf_id)
2370 break;
2371 }
2372
2367 /* Check, if buswidth is correct. Hardware drivers should set 2373 /* Check, if buswidth is correct. Hardware drivers should set
2368 * this correct ! */ 2374 * this correct ! */
2369 if (busw != (this->options & NAND_BUSWIDTH_16)) { 2375 if (busw != (this->options & NAND_BUSWIDTH_16)) {
2370 printk (KERN_INFO "NAND device: Manufacturer ID:" 2376 printk (KERN_INFO "NAND device: Manufacturer ID:"
2371 " 0x%02x, Chip ID: 0x%02x (%s %s)\n", nand_maf_id, nand_dev_id, 2377 " 0x%02x, Chip ID: 0x%02x (%s %s)\n", nand_maf_id, nand_dev_id,
2372 nand_manuf_ids[i].name , mtd->name); 2378 nand_manuf_ids[maf_id].name , mtd->name);
2373 printk (KERN_WARNING 2379 printk (KERN_WARNING
2374 "NAND bus width %d instead %d bit\n", 2380 "NAND bus width %d instead %d bit\n",
2375 (this->options & NAND_BUSWIDTH_16) ? 16 : 8, 2381 (this->options & NAND_BUSWIDTH_16) ? 16 : 8,
@@ -2408,14 +2414,9 @@ int nand_scan (struct mtd_info *mtd, int maxchips)
2408 if (mtd->oobblock > 512 && this->cmdfunc == nand_command) 2414 if (mtd->oobblock > 512 && this->cmdfunc == nand_command)
2409 this->cmdfunc = nand_command_lp; 2415 this->cmdfunc = nand_command_lp;
2410 2416
2411 /* Try to identify manufacturer */
2412 for (j = 0; nand_manuf_ids[j].id != 0x0; j++) {
2413 if (nand_manuf_ids[j].id == nand_maf_id)
2414 break;
2415 }
2416 printk (KERN_INFO "NAND device: Manufacturer ID:" 2417 printk (KERN_INFO "NAND device: Manufacturer ID:"
2417 " 0x%02x, Chip ID: 0x%02x (%s %s)\n", nand_maf_id, nand_dev_id, 2418 " 0x%02x, Chip ID: 0x%02x (%s %s)\n", nand_maf_id, nand_dev_id,
2418 nand_manuf_ids[j].name , nand_flash_ids[i].name); 2419 nand_manuf_ids[maf_id].name , nand_flash_ids[i].name);
2419 break; 2420 break;
2420 } 2421 }
2421 2422
diff --git a/drivers/mtd/nand/nand_ids.c b/drivers/mtd/nand/nand_ids.c
index 9756797c92f8..79945e6ce2b9 100644
--- a/drivers/mtd/nand/nand_ids.c
+++ b/drivers/mtd/nand/nand_ids.c
@@ -3,7 +3,7 @@
3 * 3 *
4 * Copyright (C) 2002 Thomas Gleixner (tglx@linutronix.de) 4 * Copyright (C) 2002 Thomas Gleixner (tglx@linutronix.de)
5 * 5 *
6 * $Id: nand_ids.c,v 1.11 2005/01/17 18:26:27 dmarlin Exp $ 6 * $Id: nand_ids.c,v 1.12 2005/02/16 09:33:27 gleixner Exp $
7 * 7 *
8 * This program is free software; you can redistribute it and/or modify 8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License version 2 as 9 * it under the terms of the GNU General Public License version 2 as
@@ -62,8 +62,6 @@ struct nand_flash_dev nand_flash_ids[] = {
62 62
63 {"NAND 256MiB 3,3V 8-bit", 0x71, 512, 256, 0x4000, 0}, 63 {"NAND 256MiB 3,3V 8-bit", 0x71, 512, 256, 0x4000, 0},
64 64
65 {"NAND 512MiB 3,3V 8-bit", 0xDC, 512, 512, 0x4000, 0},
66
67 /* These are the new chips with large page size. The pagesize 65 /* These are the new chips with large page size. The pagesize
68 * and the erasesize is determined from the extended id bytes 66 * and the erasesize is determined from the extended id bytes
69 */ 67 */