mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-27 23:22:37 +02:00
Fix bug in probe_28sf040() causing flash corruption on SST49LF160C verify
The first byte of the flash chip was read at the start of the function and later written back to address 0 if the flash chip was not identified as SST28SF040, which means most of the time. This write caused corruption of flash contents when verifying a SST49LF160C part. Corresponding to flashrom svn r126 and coreboot v2 svn r2744. Signed-off-by: Ed Swierk <eswierk@arastra.com> Acked-by: Peter Stuge <peter@stuge.se>
This commit is contained in:
parent
fdd0c58115
commit
966dc20cc3
@ -106,10 +106,7 @@ static __inline__ int write_sector_28sf040(volatile uint8_t *bios,
|
|||||||
int probe_28sf040(struct flashchip *flash)
|
int probe_28sf040(struct flashchip *flash)
|
||||||
{
|
{
|
||||||
volatile uint8_t *bios = flash->virtual_memory;
|
volatile uint8_t *bios = flash->virtual_memory;
|
||||||
uint8_t id1, id2, tmp;
|
uint8_t id1, id2;
|
||||||
|
|
||||||
/* save the value at the beginning of the Flash */
|
|
||||||
tmp = *bios;
|
|
||||||
|
|
||||||
*bios = RESET;
|
*bios = RESET;
|
||||||
myusec_delay(10);
|
myusec_delay(10);
|
||||||
@ -127,8 +124,6 @@ int probe_28sf040(struct flashchip *flash)
|
|||||||
if (id1 == flash->manufacture_id && id2 == flash->model_id)
|
if (id1 == flash->manufacture_id && id2 == flash->model_id)
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
/* if there is no SST28SF040, restore the original value */
|
|
||||||
*bios = tmp;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user