|
|
@ -1,8 +1,10 @@ |
|
|
|
#include <stdlib.h> |
|
|
|
#include <stdlib.h> |
|
|
|
#include <string.h> |
|
|
|
#include <string.h> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#include <bitops.h> |
|
|
|
#include <flash.h> |
|
|
|
#include <flash.h> |
|
|
|
#include <ftl.h> |
|
|
|
#include <ftl.h> |
|
|
|
|
|
|
|
#include <macros.h> |
|
|
|
|
|
|
|
|
|
|
|
static size_t ftl_flash_get_size(struct flash_dev *dev); |
|
|
|
static size_t ftl_flash_get_size(struct flash_dev *dev); |
|
|
|
static size_t ftl_flash_get_capacity(struct flash_dev *dev); |
|
|
|
static size_t ftl_flash_get_capacity(struct flash_dev *dev); |
|
|
@ -10,8 +12,7 @@ static int ftl_flash_read(struct flash_dev *dev, uint32_t addr, void *data, |
|
|
|
size_t len); |
|
|
|
size_t len); |
|
|
|
static int ftl_flash_write(struct flash_dev *dev, uint32_t addr, |
|
|
|
static int ftl_flash_write(struct flash_dev *dev, uint32_t addr, |
|
|
|
const void *data, size_t len); |
|
|
|
const void *data, size_t len); |
|
|
|
static int ftl_flash_erase(struct flash_dev *dev, uint32_t addr, |
|
|
|
static int ftl_flash_erase(struct flash_dev *dev, uint32_t addr); |
|
|
|
size_t block_size); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static struct flash_ops ftl_flash_ops = { |
|
|
|
static struct flash_ops ftl_flash_ops = { |
|
|
|
.get_size = ftl_flash_get_size, |
|
|
|
.get_size = ftl_flash_get_size, |
|
|
@ -56,14 +57,10 @@ static int ftl_flash_write(struct flash_dev *dev, uint32_t addr, |
|
|
|
return ftl_write(map, addr, data); |
|
|
|
return ftl_write(map, addr, data); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
static int ftl_flash_erase(struct flash_dev *dev, uint32_t addr, |
|
|
|
static int ftl_flash_erase(struct flash_dev *dev, uint32_t addr) |
|
|
|
size_t block_size) |
|
|
|
|
|
|
|
{ |
|
|
|
{ |
|
|
|
struct ftl_map *map = dev->priv; |
|
|
|
struct ftl_map *map = dev->priv; |
|
|
|
|
|
|
|
|
|
|
|
/* TODO */ |
|
|
|
|
|
|
|
(void)block_size; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return ftl_trim(map, addr); |
|
|
|
return ftl_trim(map, addr); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -86,6 +83,8 @@ struct flash_dev *ftl_mount(struct flash_dev *raw_dev) |
|
|
|
|
|
|
|
|
|
|
|
dev->ops = &ftl_flash_ops; |
|
|
|
dev->ops = &ftl_flash_ops; |
|
|
|
dev->priv = map; |
|
|
|
dev->priv = map; |
|
|
|
|
|
|
|
dev->log2_page_size = ilog2(4 * KIB); |
|
|
|
|
|
|
|
dev->log2_block_size = ilog2(4 * KIB); |
|
|
|
|
|
|
|
|
|
|
|
return dev; |
|
|
|
return dev; |
|
|
|
|
|
|
|
|
|
|
|