From b9f5658fa52187e7140f9ea32bce477e6bd167ce Mon Sep 17 00:00:00 2001 From: Nicolas Pitre Date: Fri, 1 Apr 2005 17:36:29 +0100 Subject: [PATCH] --- yaml --- r: 4533 b: refs/heads/master c: dce2b4da69a83635150a6535ebc23f680e200a8d h: refs/heads/master i: 4531: c8be4b2e55880e2416996362bb6698879ef9279b v: v3 --- [refs] | 2 +- trunk/drivers/mtd/chips/cfi_cmdset_0001.c | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 1f35129bb0f1..d2d92940158b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 81dba488792b29cc8cb2b3d49407be05303dde16 +refs/heads/master: dce2b4da69a83635150a6535ebc23f680e200a8d diff --git a/trunk/drivers/mtd/chips/cfi_cmdset_0001.c b/trunk/drivers/mtd/chips/cfi_cmdset_0001.c index dc257eb6932f..b99400f6e484 100644 --- a/trunk/drivers/mtd/chips/cfi_cmdset_0001.c +++ b/trunk/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 @@ -2062,8 +2062,20 @@ static int cfi_intelext_otp_walk(struct mtd_info *mtd, loff_t from, size_t len, /* we need real chips here not virtual ones */ devsize = (1 << cfi->cfiq->DevSize) * cfi->interleave; chip_step = devsize >> cfi->chipshift; + chip_num = 0; + + /* 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 = 0; chip_num < cfi->numchips; chip_num += chip_step) { + for ( ; chip_num < cfi->numchips; chip_num += chip_step) { chip = &cfi->chips[chip_num]; otp = (struct cfi_intelext_otpinfo *)&extp->extra[0];