diff options
author | Daniel Ribeiro <drwyrm@gmail.com> | 2009-05-17 08:02:08 -0300 |
---|---|---|
committer | David Woodhouse <David.Woodhouse@intel.com> | 2009-06-05 17:55:10 +0100 |
commit | e1b158abc532f5a9d355c187583038c4f75ab11d (patch) | |
tree | 044577ee0b160950c7e8d61eb25a66593b96daf6 | |
parent | ec2d0d842577854eee18f0dc06bd48fe17189b54 (diff) | |
download | kernel_samsung_smdk4412-e1b158abc532f5a9d355c187583038c4f75ab11d.zip kernel_samsung_smdk4412-e1b158abc532f5a9d355c187583038c4f75ab11d.tar.gz kernel_samsung_smdk4412-e1b158abc532f5a9d355c187583038c4f75ab11d.tar.bz2 |
mtd: CFI 1.0 and CFI 1.1
This patch allows otpinfo for CFI >= 1.0 and burst read for CFI >= 1.1.
references:
1.0: http://www.datasheetcatalog.org/datasheets2/81/816884_1.pdf
1.1: http://milkymist.org/doc/MT28F640J3.pdf
http://www.delorie.com/agenda/specs/29066709.pdf
Signed-off-by: Daniel Ribeiro <drwyrm@gmail.com>
Acked-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Artem Bityutskiy <Artem.Bityutskiy@nokia.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
-rw-r--r-- | drivers/mtd/chips/cfi_cmdset_0001.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/drivers/mtd/chips/cfi_cmdset_0001.c b/drivers/mtd/chips/cfi_cmdset_0001.c index e772803..8664fee 100644 --- a/drivers/mtd/chips/cfi_cmdset_0001.c +++ b/drivers/mtd/chips/cfi_cmdset_0001.c @@ -329,6 +329,7 @@ read_pri_intelext(struct map_info *map, __u16 adr) { struct cfi_private *cfi = map->fldrv_priv; struct cfi_pri_intelext *extp; + unsigned int extra_size = 0; unsigned int extp_size = sizeof(*extp); again: @@ -352,19 +353,24 @@ read_pri_intelext(struct map_info *map, __u16 adr) extp->BlkStatusRegMask = le16_to_cpu(extp->BlkStatusRegMask); extp->ProtRegAddr = le16_to_cpu(extp->ProtRegAddr); - if (extp->MajorVersion == '1' && extp->MinorVersion >= '3') { - unsigned int extra_size = 0; - int nb_parts, i; + if (extp->MinorVersion >= '0') { + extra_size = 0; /* Protection Register info */ extra_size += (extp->NumProtectionFields - 1) * sizeof(struct cfi_intelext_otpinfo); + } + if (extp->MinorVersion >= '1') { /* Burst Read info */ extra_size += 2; if (extp_size < sizeof(*extp) + extra_size) goto need_more; - extra_size += extp->extra[extra_size-1]; + extra_size += extp->extra[extra_size - 1]; + } + + if (extp->MinorVersion >= '3') { + int nb_parts, i; /* Number of hardware-partitions */ extra_size += 1; |