baytrail: nvm: use proper types for checking erase

The current byte value was being converted to an int
when checking against literal 0xff. As the type of
the current pointer was char (signed) it was sign
extending the value leading to 0xffffffff != 0xff.
Fix this by using an unsigned type and using a
constant type for expected erase value.

BUG=chrome-os-partner:24916
BRANCH=baytrail
TEST=Booted after chromeos-firmwareupdate. Noted that MRC
     cache doesn't think the erased region isn't erased.

Change-Id: If95425fe26da050acb25f52bea060e288ad3633c
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/182154
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: http://review.coreboot.org/5044
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
This commit is contained in:
Aaron Durbin 2014-01-13 11:39:04 -06:00 committed by Kyösti Mälkki
parent 931e590745
commit b013fff5a3
1 changed files with 3 additions and 2 deletions

View File

@ -54,10 +54,11 @@ static inline uint32_t to_flash_offset(void *p)
int nvm_is_erased(const void *start, size_t size) int nvm_is_erased(const void *start, size_t size)
{ {
const char *cur = start; const uint8_t *cur = start;
const uint8_t erased_value = 0xff;
while (size > 0) { while (size > 0) {
if (*cur != 0xff) if (*cur != erased_value)
return 0; return 0;
cur++; cur++;
size--; size--;