flash: implement a default function for copying data
This commit is contained in:
parent
1ba4e77dd6
commit
a8beb53fa0
2 changed files with 28 additions and 0 deletions
|
@ -24,6 +24,8 @@ struct flash_dev {
|
|||
};
|
||||
|
||||
int default_flash_is_erased(struct flash_dev *dev, uint32_t addr);
|
||||
size_t default_flash_copy(struct flash_dev *dev, uint32_t dst, uint32_t src,
|
||||
size_t len);
|
||||
|
||||
struct flash_dev *flash_probe(void);
|
||||
void flash_release(struct flash_dev *dev);
|
||||
|
|
|
@ -29,6 +29,32 @@ int default_flash_is_erased(struct flash_dev *dev, uint32_t addr)
|
|||
return 1;
|
||||
}
|
||||
|
||||
size_t default_flash_copy(struct flash_dev *dev, uint32_t dst, uint32_t src,
|
||||
size_t len)
|
||||
{
|
||||
uint8_t data[32];
|
||||
size_t nbytes, ret = 0;
|
||||
|
||||
while (len) {
|
||||
nbytes = min(sizeof data, len);
|
||||
|
||||
if (flash_read(dev, src, data, nbytes) == 0)
|
||||
return -1;
|
||||
|
||||
if (flash_write(dev, dst, data, nbytes) == 0)
|
||||
return -1;
|
||||
|
||||
dst += nbytes;
|
||||
src += nbytes;
|
||||
len -= nbytes;
|
||||
ret += nbytes;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
void flash_release(struct flash_dev *dev)
|
||||
{
|
||||
if (!dev)
|
||||
|
|
Loading…
Add table
Reference in a new issue