tree 1e71cbc8cb0fd495d2c4383ea40d7b045b3d6da6
parent 81dba488792b29cc8cb2b3d49407be05303dde16
author Nicolas Pitre <[EMAIL PROTECTED]> Fri, 01 Apr 2005 17:36:29 +0100
committer Thomas Gleixner <[EMAIL PROTECTED]> Mon, 23 May 2005 13:07:50 +0200

[MTD] Fix OTP for top-parameter devices

Signed-off-by: Nicolas Pitre <[EMAIL PROTECTED]>
Signed-off-by: Thomas Gleixner <[EMAIL PROTECTED]>

 drivers/mtd/chips/cfi_cmdset_0001.c |   16 ++++++++++++++--
 1 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/chips/cfi_cmdset_0001.c 
b/drivers/mtd/chips/cfi_cmdset_0001.c
--- a/drivers/mtd/chips/cfi_cmdset_0001.c
+++ b/drivers/mtd/chips/cfi_cmdset_0001.c
@@ -4,7 +4,7 @@
  *
  * (C) 2000 Red Hat. GPL'd
  *
- * $Id: cfi_cmdset_0001.c,v 1.174 2005/04/01 01:59:52 nico Exp $
+ * $Id: cfi_cmdset_0001.c,v 1.175 2005/04/01 16:36:25 nico Exp $
  *
  * 
  * 10/10/2000  Nicolas Pitre <[EMAIL PROTECTED]>
@@ -2062,8 +2062,20 @@ static int cfi_intelext_otp_walk(struct 
        /* we need real chips here not virtual ones */
        devsize = (1 << cfi->cfiq->DevSize) * cfi->interleave;
        chip_step = devsize >> cfi->chipshift;
+       chip_num = 0;
 
-       for (chip_num = 0; chip_num < cfi->numchips; chip_num += chip_step) {
+       /* Some chips have OTP located in the _top_ partition only.
+          For example: Intel 28F256L18T (T means top-parameter device) */
+       if (cfi->mfr == MANUFACTURER_INTEL) {
+               switch (cfi->id) {
+               case 0x880b:
+               case 0x880c:
+               case 0x880d:
+                       chip_num = chip_step - 1;
+               }
+       }
+
+       for ( ; chip_num < cfi->numchips; chip_num += chip_step) {
                chip = &cfi->chips[chip_num];
                otp = (struct cfi_intelext_otpinfo *)&extp->extra[0];
 
-
To unsubscribe from this list: send the line "unsubscribe bk-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to