From 81430df971fa0135bef4840db9c89717c9adb76c Mon Sep 17 00:00:00 2001 From: "S.J.R. van Schaik" Date: Mon, 9 Oct 2017 17:17:47 +0200 Subject: [PATCH] core: spi: flash: implement flash_get_jedec_id() --- include/flash.h | 2 ++ source/core/flash.c | 8 ++++++++ source/platform/spi_flash.c | 3 +++ 3 files changed, 13 insertions(+) diff --git a/include/flash.h b/include/flash.h index 5d1002b..3ee278e 100644 --- a/include/flash.h +++ b/include/flash.h @@ -7,6 +7,7 @@ struct flash_dev; struct flash_ops { void (* release)(struct flash_dev *dev); + size_t (* get_jedec_id)(struct flash_dev *dev, char *jedec_id, size_t len); size_t (* get_size)(struct flash_dev *dev); size_t (* get_capacity)(struct flash_dev *dev); size_t (* read)(struct flash_dev *dev, uint32_t addr, void *data, size_t len); @@ -31,6 +32,7 @@ size_t default_flash_copy(struct flash_dev *dev, uint32_t dst, uint32_t src, struct flash_dev *flash_probe(void); void flash_release(struct flash_dev *dev); +size_t flash_get_jedec_id(struct flash_dev *dev, char *jedec_id, size_t len); size_t flash_get_size(struct flash_dev *dev); size_t flash_get_capacity(struct flash_dev *dev); size_t flash_read(struct flash_dev *dev, uint32_t addr, void *data, size_t len); diff --git a/source/core/flash.c b/source/core/flash.c index d1ab66b..1b713dc 100644 --- a/source/core/flash.c +++ b/source/core/flash.c @@ -72,6 +72,14 @@ void flash_release(struct flash_dev *dev) dev->ops->release(dev); } +size_t flash_get_jedec_id(struct flash_dev *dev, char *jedec_id, size_t len) +{ + if (!dev || !dev->ops->get_jedec_id) + return 0; + + return dev->ops->get_jedec_id(dev, jedec_id, len); +} + size_t flash_get_size(struct flash_dev *dev) { if (!dev) diff --git a/source/platform/spi_flash.c b/source/platform/spi_flash.c index 1bee04d..fbd3ecf 100644 --- a/source/platform/spi_flash.c +++ b/source/platform/spi_flash.c @@ -9,6 +9,8 @@ #include #include +static size_t spi_flash_get_jedec_id(struct flash_dev *dev, char *jedec_id, + size_t len); static size_t spi_flash_get_size(struct flash_dev *dev); static size_t spi_flash_read(struct flash_dev *dev, uint32_t addr, void *data, size_t len); @@ -21,6 +23,7 @@ static struct flash_ops spi_flash_ops = { .release = spi_flash_release, .get_size = spi_flash_get_size, .get_capacity = spi_flash_get_size, + .get_jedec_id = spi_flash_get_jedec_id, .read = spi_flash_read, .write = spi_flash_write, .copy = default_flash_copy,