core: flash: implement flash_sync() to sync buffered data

This commit is contained in:
S.J.R. van Schaik 2017-07-24 15:05:16 +02:00
parent f7b11a8726
commit ac3d198004
2 changed files with 13 additions and 0 deletions

View file

@ -15,6 +15,7 @@ struct flash_ops {
size_t (* copy)(struct flash_dev *dev, uint32_t dst, uint32_t src, size_t len);
int (* is_erased)(struct flash_dev *dev, uint32_t addr);
int (* erase)(struct flash_dev *dev, uint32_t addr);
int (* sync)(struct flash_dev *dev);
};
struct flash_dev {
@ -38,3 +39,4 @@ size_t flash_write0(struct flash_dev *dev, uint32_t addr, size_t len);
size_t flash_copy(struct flash_dev *dev, uint32_t dst, uint32_t src, size_t len);
int flash_is_erased(struct flash_dev *dev, uint32_t addr, size_t len);
int flash_erase(struct flash_dev *dev, uint32_t addr, size_t len);
int flash_sync(struct flash_dev *dev);

View file

@ -153,3 +153,14 @@ int flash_erase(struct flash_dev *dev, uint32_t addr, size_t len)
return 0;
}
int flash_sync(struct flash_dev *dev)
{
if (!dev)
return -1;
if (!dev->ops->sync)
return 0;
return dev->ops->sync(dev);
}