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.

Signed-off-by: Ed Swierk <eswierk@arastra.com>
Acked-by: Peter Stuge <peter@stuge.se>


git-svn-id: svn://svn.coreboot.org/coreboot/trunk@2744 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Ed Swierk 2007-08-13 04:10:32 +00:00 committed by Peter Stuge
parent 4d43255bef
commit 3436698b6a
1 changed files with 1 additions and 6 deletions

View File

@ -106,10 +106,7 @@ static __inline__ int write_sector_28sf040(volatile uint8_t *bios,
int probe_28sf040(struct flashchip *flash)
{
volatile uint8_t *bios = flash->virtual_memory;
uint8_t id1, id2, tmp;
/* save the value at the beginning of the Flash */
tmp = *bios;
uint8_t id1, id2;
*bios = RESET;
myusec_delay(10);
@ -127,8 +124,6 @@ int probe_28sf040(struct flashchip *flash)
if (id1 == flash->manufacture_id && id2 == flash->model_id)
return 1;
/* if there is no SST28SF040, restore the original value */
*bios = tmp;
return 0;
}