2017-03-11 12:42:32 +00:00
|
|
|
#pragma once
|
|
|
|
|
2017-03-17 15:26:14 +00:00
|
|
|
#include <stdint.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
2017-03-11 12:42:32 +00:00
|
|
|
struct flash_dev;
|
|
|
|
|
|
|
|
struct flash_ops {
|
2017-05-19 17:26:00 +02:00
|
|
|
void (* release)(struct flash_dev *dev);
|
2017-04-07 19:35:51 +02:00
|
|
|
size_t (* get_size)(struct flash_dev *dev);
|
2017-05-19 15:09:25 +02:00
|
|
|
size_t (* get_capacity)(struct flash_dev *dev);
|
2017-05-19 18:20:50 +02:00
|
|
|
size_t (* read)(struct flash_dev *dev, uint32_t addr, void *data, size_t len);
|
|
|
|
size_t (* write)(struct flash_dev *dev, uint32_t addr, const void *data,
|
2017-03-11 12:42:32 +00:00
|
|
|
size_t len);
|
2017-05-15 16:07:13 +02:00
|
|
|
int (* copy)(struct flash_dev *dev, uint32_t dst, uint32_t src, size_t len);
|
2017-05-19 17:16:01 +02:00
|
|
|
int (* is_erased)(struct flash_dev *dev, uint32_t addr);
|
2017-05-19 17:04:45 +02:00
|
|
|
int (* erase)(struct flash_dev *dev, uint32_t addr);
|
2017-03-11 12:42:32 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
struct flash_dev {
|
|
|
|
struct flash_ops *ops;
|
|
|
|
void *priv;
|
2017-05-19 17:04:45 +02:00
|
|
|
uint8_t log2_block_size;
|
2017-03-11 12:42:32 +00:00
|
|
|
};
|
|
|
|
|
2017-05-19 17:16:01 +02:00
|
|
|
int default_flash_is_erased(struct flash_dev *dev, uint32_t addr);
|
|
|
|
|
2017-03-11 12:56:46 +00:00
|
|
|
struct flash_dev *flash_probe(void);
|
2017-03-31 15:54:11 +02:00
|
|
|
void flash_release(struct flash_dev *dev);
|
2017-04-07 19:35:51 +02:00
|
|
|
size_t flash_get_size(struct flash_dev *dev);
|
2017-05-19 15:09:25 +02:00
|
|
|
size_t flash_get_capacity(struct flash_dev *dev);
|
2017-05-19 18:20:50 +02:00
|
|
|
size_t flash_read(struct flash_dev *dev, uint32_t addr, void *data, size_t len);
|
|
|
|
size_t flash_write(struct flash_dev *dev, uint32_t addr, const void *data,
|
2017-03-11 12:42:32 +00:00
|
|
|
size_t len);
|
2017-05-15 16:07:13 +02:00
|
|
|
int flash_copy(struct flash_dev *dev, uint32_t dst, uint32_t src, size_t len);
|
2017-05-19 17:16:01 +02:00
|
|
|
int flash_is_erased(struct flash_dev *dev, uint32_t addr, size_t len);
|
2017-05-19 17:04:45 +02:00
|
|
|
int flash_erase(struct flash_dev *dev, uint32_t addr, size_t len);
|