flash: implement release() as part of flash_ops

This commit is contained in:
S.J.R. van Schaik 2017-05-19 17:26:00 +02:00
parent 27cf8bb587
commit f53b072a65
3 changed files with 12 additions and 1 deletions

View file

@ -6,6 +6,7 @@
struct flash_dev; struct flash_dev;
struct flash_ops { struct flash_ops {
void (* release)(struct flash_dev *dev);
size_t (* get_size)(struct flash_dev *dev); size_t (* get_size)(struct flash_dev *dev);
size_t (* get_capacity)(struct flash_dev *dev); size_t (* get_capacity)(struct flash_dev *dev);
int (* read)(struct flash_dev *dev, uint32_t addr, void *data, size_t len); int (* read)(struct flash_dev *dev, uint32_t addr, void *data, size_t len);

View file

@ -19,6 +19,14 @@ int default_flash_is_erased(struct flash_dev *dev, uint32_t addr)
return 1; return 1;
} }
void flash_release(struct flash_dev *dev)
{
if (!dev)
return;
dev->ops->release(dev);
}
size_t flash_get_size(struct flash_dev *dev) size_t flash_get_size(struct flash_dev *dev)
{ {
if (!dev) if (!dev)

View file

@ -26,8 +26,10 @@ static int stdio_flash_write(struct flash_dev *dev, uint32_t addr,
static int stdio_flash_copy(struct flash_dev *dev, uint32_t dst, uint32_t src, static int stdio_flash_copy(struct flash_dev *dev, uint32_t dst, uint32_t src,
size_t len); size_t len);
static int stdio_flash_erase(struct flash_dev *dev, uint32_t addr); static int stdio_flash_erase(struct flash_dev *dev, uint32_t addr);
static void stdio_flash_release(struct flash_dev *dev);
static struct flash_ops stdio_flash_ops = { static struct flash_ops stdio_flash_ops = {
.release = stdio_flash_release,
.get_size = stdio_flash_get_size, .get_size = stdio_flash_get_size,
.read = stdio_flash_read, .read = stdio_flash_read,
.write = stdio_flash_write, .write = stdio_flash_write,
@ -150,7 +152,7 @@ err_free_dev:
return NULL; return NULL;
} }
void flash_release(struct flash_dev *dev) static void stdio_flash_release(struct flash_dev *dev)
{ {
struct stdio_flash_priv *priv; struct stdio_flash_priv *priv;