|
|
|
@ -2,18 +2,28 @@ |
|
|
|
|
#include <stdlib.h> |
|
|
|
|
|
|
|
|
|
#include <flash.h> |
|
|
|
|
#include <macros.h> |
|
|
|
|
|
|
|
|
|
int default_flash_is_erased(struct flash_dev *dev, uint32_t addr) |
|
|
|
|
{ |
|
|
|
|
uint8_t data[1 << dev->log2_block_size]; |
|
|
|
|
size_t i; |
|
|
|
|
uint8_t data[32]; |
|
|
|
|
size_t i, nbytes, len = 1 << dev->log2_block_size; |
|
|
|
|
|
|
|
|
|
if (flash_read(dev, addr << dev->log2_block_size, data, sizeof(data)) == 0) |
|
|
|
|
return 0; |
|
|
|
|
addr <<= dev->log2_block_size; |
|
|
|
|
|
|
|
|
|
while (len) { |
|
|
|
|
nbytes = min(32, len); |
|
|
|
|
|
|
|
|
|
for (i = 0; i < sizeof(data); ++i) { |
|
|
|
|
if (data[i] != 0xff) |
|
|
|
|
if (flash_read(dev, addr, data, nbytes) == 0) |
|
|
|
|
return 0; |
|
|
|
|
|
|
|
|
|
for (i = 0; i < sizeof(data); ++i) { |
|
|
|
|
if (data[i] != 0xff) |
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
addr += nbytes; |
|
|
|
|
len -= nbytes; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return 1; |
|
|
|
|