flash: implement flash driver model

tags/0.1.0
S.J.R. van Schaik 7 years ago
parent a078de7c9f
commit 92b3c1108b
  1. 2
      Makefile
  2. 20
      include/flash.h
  3. 29
      source/core/flash.c

@ -22,6 +22,8 @@ obj-y += source/shell.o
obj-y += source/spi_flash.o
obj-y += source/usart.o
obj-y += source/core/flash.o
obj = $(addprefix $(BUILD)/, $(obj-y))
# Include the dependencies.

@ -0,0 +1,20 @@
#pragma once
struct flash_dev;
struct flash_ops {
int (* read)(struct flash_dev *dev, uint32_t addr, void *data, size_t len);
int (* write)(struct flash_dev *dev, uint32_t addr, const void *data,
size_t len);
int (* erase)(struct flash_dev *dev, uint32_t addr, size_t len);
};
struct flash_dev {
struct flash_ops *ops;
void *priv;
};
int flash_read(struct flash_dev *dev, uint32_t addr, void *data, size_t len);
int flash_write(struct flash_dev *dev, uint32_t addr, const void *data,
size_t len);
int flash_erase(struct flash_dev *dev, uint32_t addr, size_t len);

@ -0,0 +1,29 @@
#include <stdint.h>
#include <stdlib.h>
#include <flash.h>
int flash_read(struct flash_dev *dev, uint32_t addr, void *data, size_t len)
{
if (!dev)
return -1;
return dev->ops->read(dev, addr, data, len);
}
int flash_write(struct flash_dev *dev, uint32_t addr, const void *data,
size_t len)
{
if (!dev)
return -1;
return dev->ops->write(dev, addr, data, len);
}
int flash_erase(struct flash_dev *dev, uint32_t addr, size_t len)
{
if (!dev)
return -1;
return dev->ops->erase(dev, addr, len);
}
Loading…
Cancel
Save