Commit d7b5bf3f authored by Carl-Daniel Hailfinger's avatar Carl-Daniel Hailfinger
Browse files

Flashrom did not use the read function for verifying, it used direct memory access instead


That fails if the flash chip is not mapped completely. If the read
function is set in struct flashchip, use it for verification as well.

This fixes verification of all SPI flash chips >512 kByte behind an
IT8716F flash translation chip.

"MX25L8005 found at physical address 0xfff00000. Flash part is MX25L8005
(1024 KB). Flash image seems to be a legacy BIOS. Disabling checks.
Verifying flash... VERIFIED."

Corresponding to flashrom svn r185 and coreboot v2 svn r3070.
Signed-off-by: default avatarCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: default avatarHarald Gutmann <harald.gutmann@gmx.net>
parent d3568adf
......@@ -159,7 +159,11 @@ int verify_flash(struct flashchip *flash, uint8_t *buf)
{
int idx;
int total_size = flash->total_size * 1024;
volatile uint8_t *bios = flash->virtual_memory;
uint8_t *buf2 = (uint8_t *) calloc(total_size, sizeof(char));
if (flash->read == NULL)
memcpy(buf2, (const char *)flash->virtual_memory, total_size);
else
flash->read(flash, buf2);
printf("Verifying flash... ");
......@@ -170,7 +174,7 @@ int verify_flash(struct flashchip *flash, uint8_t *buf)
if (verbose && ((idx & 0xfff) == 0xfff))
printf("0x%08x", idx);
if (*(bios + idx) != *(buf + idx)) {
if (*(buf2 + idx) != *(buf + idx)) {
if (verbose) {
printf("0x%08x ", idx);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment