[MTD] [NOR] AT49BV6416 has swapped erase regions
The CFI information read from AT49BV6416 lists the erase regions in the wrong order, causing problems when trying to erase or update the first or last 64KiB block. Work around this by inverting the "top boot" flag, which will effectively reverse the order of the erase regions. This chip is obsolete, but it's used in some existing designs. Signed-off-by: Håvard Skinnemoen <haavard.skinnemoen@atmel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
This commit is contained in:
parent
aaf7ea2000
commit
be8f78b8e8
1 changed files with 12 additions and 4 deletions
|
@ -213,10 +213,18 @@ static void fixup_convert_atmel_pri(struct mtd_info *mtd, void *param)
|
|||
if (atmel_pri.Features & 0x02)
|
||||
extp->EraseSuspend = 2;
|
||||
|
||||
if (atmel_pri.BottomBoot)
|
||||
extp->TopBottom = 2;
|
||||
else
|
||||
extp->TopBottom = 3;
|
||||
/* Some chips got it backwards... */
|
||||
if (cfi->id == AT49BV6416) {
|
||||
if (atmel_pri.BottomBoot)
|
||||
extp->TopBottom = 3;
|
||||
else
|
||||
extp->TopBottom = 2;
|
||||
} else {
|
||||
if (atmel_pri.BottomBoot)
|
||||
extp->TopBottom = 2;
|
||||
else
|
||||
extp->TopBottom = 3;
|
||||
}
|
||||
|
||||
/* burst write mode not supported */
|
||||
cfi->cfiq->BufWriteTimeoutTyp = 0;
|
||||
|
|
Loading…
Reference in a new issue