Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be8f78b8 authored by Haavard Skinnemoen's avatar Haavard Skinnemoen Committed by David Woodhouse
Browse files

[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: default avatarHåvard Skinnemoen <haavard.skinnemoen@atmel.com>
Signed-off-by: default avatarDavid Woodhouse <David.Woodhouse@intel.com>
parent aaf7ea20
Loading
Loading
Loading
Loading
+12 −4
Original line number Diff line number Diff line
@@ -213,10 +213,18 @@ static void fixup_convert_atmel_pri(struct mtd_info *mtd, void *param)
	if (atmel_pri.Features & 0x02)
		extp->EraseSuspend = 2;

	/* 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;