drivers: flash: spi_nor: Enable Flash Page Layout and Map

This patch enables the support for FLASH_PAGE_LAYOUT and
FLASH_MAP for the generic spin nor flash driver.

Signed-off-by: Rajavardhan Gundi <rajavardhan.gundi@intel.com>
This commit is contained in:
Rajavardhan Gundi 2018-11-29 12:00:36 +05:30 committed by Anas Nashif
commit 75f6f1b279
3 changed files with 31 additions and 8 deletions

View file

@ -382,16 +382,30 @@ static int spi_nor_init(struct device *dev)
return spi_nor_configure(dev);
}
#if defined(CONFIG_FLASH_PAGE_LAYOUT)
static const struct flash_pages_layout dev_layout = {
.pages_count = KB(CONFIG_FLASH_SIZE) / FLASH_ERASE_BLOCK_SIZE,
.pages_size = FLASH_ERASE_BLOCK_SIZE,
};
static void spi_nor_pages_layout(struct device *dev,
const struct flash_pages_layout **layout,
size_t *layout_size)
{
*layout = &dev_layout;
*layout_size = 1;
}
#endif /* CONFIG_FLASH_PAGE_LAYOUT */
static const struct flash_driver_api spi_nor_api = {
.read = spi_nor_read,
.write = spi_nor_write,
.erase = spi_nor_erase,
.write_protection = spi_nor_write_protection_set,
#if defined(CONFIG_FLASH_PAGE_LAYOUT)
.page_layout = (flash_api_pages_layout)
flash_page_layout_not_implemented,
.page_layout = spi_nor_pages_layout,
#endif
.write_block_size = 1,
.write_block_size = FLASH_WRITE_BLOCK_SIZE,
};
static const struct spi_nor_config flash_id = {

View file

@ -38,6 +38,9 @@ static const struct driver_map_entry flash_drivers_map[] = {
#ifdef CONFIG_SPI_FLASH_W25QXXDV
{SPI_FLASH_0_ID, CONFIG_SPI_FLASH_W25QXXDV_DRV_NAME},
#endif
#ifdef DT_SPI_NOR_DRV_NAME
{SPI_FLASH_0_ID, DT_SPI_NOR_DRV_NAME},
#endif
};
extern const struct flash_area *flash_map;

View file

@ -8,11 +8,17 @@
#include <zephyr.h>
#include <flash_map.h>
#if defined(DT_FLASH_DEV_NAME)
#define FA_DEV_ID SOC_FLASH_0_ID
#elif defined(CONFIG_SPI_FLASH_W25QXXDV) || defined(DT_SPI_NOR_DRV_NAME)
#define FA_DEV_ID SPI_FLASH_0_ID
#endif
const struct flash_area default_flash_map[] = {
/* FLASH_AREA_BOOTLOADER */
{
.fa_id = 0,
.fa_device_id = SOC_FLASH_0_ID,
.fa_device_id = FA_DEV_ID,
.fa_off = FLASH_AREA_MCUBOOT_OFFSET,
.fa_size = FLASH_AREA_MCUBOOT_SIZE,
},
@ -20,7 +26,7 @@ const struct flash_area default_flash_map[] = {
/* FLASH_AREA_IMAGE_0 */
{
.fa_id = 1,
.fa_device_id = SOC_FLASH_0_ID,
.fa_device_id = FA_DEV_ID,
.fa_off = FLASH_AREA_IMAGE_0_OFFSET,
.fa_size = FLASH_AREA_IMAGE_0_SIZE,
},
@ -28,7 +34,7 @@ const struct flash_area default_flash_map[] = {
/* FLASH_AREA_IMAGE_1 */
{
.fa_id = 2,
.fa_device_id = SOC_FLASH_0_ID,
.fa_device_id = FA_DEV_ID,
.fa_off = FLASH_AREA_IMAGE_1_OFFSET,
.fa_size = FLASH_AREA_IMAGE_1_SIZE,
},
@ -36,7 +42,7 @@ const struct flash_area default_flash_map[] = {
/* FLASH_AREA_IMAGE_SCRATCH */
{
.fa_id = 3,
.fa_device_id = SOC_FLASH_0_ID,
.fa_device_id = FA_DEV_ID,
.fa_off = FLASH_AREA_IMAGE_SCRATCH_OFFSET,
.fa_size = FLASH_AREA_IMAGE_SCRATCH_SIZE,
},
@ -45,7 +51,7 @@ const struct flash_area default_flash_map[] = {
/* FLASH_AREA_STORAGE */
{
.fa_id = 4,
.fa_device_id = SOC_FLASH_0_ID,
.fa_device_id = FA_DEV_ID,
.fa_off = FLASH_AREA_STORAGE_OFFSET,
.fa_size = FLASH_AREA_STORAGE_SIZE,
},