Author: stuge Date: 2008-12-03 22:39:56 +0100 (Wed, 03 Dec 2008) New Revision: 3791
Modified: trunk/util/flashrom/flashrom.c Log: flashrom: Fix bug in r3790
If flashbase was set before probe_flash() it would only ever be used once, for the very first flash chip probe.
Signed-off-by: Peter Stuge peter@stuge.se Acked-by: Peter Stuge peter@stuge.se
Modified: trunk/util/flashrom/flashrom.c =================================================================== --- trunk/util/flashrom/flashrom.c 2008-12-03 21:24:40 UTC (rev 3790) +++ trunk/util/flashrom/flashrom.c 2008-12-03 21:39:56 UTC (rev 3791) @@ -105,7 +105,7 @@ { volatile uint8_t *bios; struct flashchip *flash; - unsigned long size; + unsigned long base, size;
for (flash = first_flash; flash && flash->name; flash++) { if (chip_to_probe && strcmp(flash->name, chip_to_probe) != 0) @@ -133,11 +133,10 @@ */ size = getpagesize(); } - if (!flashbase) - flashbase = (0xffffffff - size + 1);
+ base = flashbase ? flashbase : (0xffffffff - size + 1); bios = mmap(0, size, PROT_WRITE | PROT_READ, MAP_SHARED, - fd_mem, (off_t) flashbase); + fd_mem, (off_t) base); if (bios == MAP_FAILED) { perror("Can't mmap memory using " MEM_DEV); exit(1); @@ -162,7 +161,8 @@ return NULL;
printf("Found chip "%s %s" (%d KB) at physical address 0x%lx.\n", - flash->vendor, flash->name, flash->total_size, flashbase); + flash->vendor, flash->name, flash->total_size, base); + flashbase = base; return flash; }