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);
|
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);
|
struct flash_dev *flash_probe(void);
|
||||||
void flash_release(struct flash_dev *dev);
|
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;
|
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)
|
void flash_release(struct flash_dev *dev)
|
||||||
{
|
{
|
||||||
if (!dev)
|
if (!dev)
|
||||||
|
|
Loading…
Add table
Reference in a new issue