drivers: flash: spi_nor: support serial flash API
Expose the internal JESD216 function used to read data from the SFDP region, and another function to read the JEDEC ID. Signed-off-by: Peter A. Bigot <pab@pabigot.com>
This commit is contained in:
parent
6a1a246825
commit
368cf2fc45
2 changed files with 24 additions and 1 deletions
|
@ -25,6 +25,7 @@ config FLASH_JESD216
|
||||||
|
|
||||||
config FLASH_JESD216_API
|
config FLASH_JESD216_API
|
||||||
bool "Provide API to read JESD216 flash parameters"
|
bool "Provide API to read JESD216 flash parameters"
|
||||||
|
depends on FLASH_JESD216
|
||||||
help
|
help
|
||||||
This option extends the Zephyr flash API with the ability
|
This option extends the Zephyr flash API with the ability
|
||||||
to access the Serial Flash Discoverable Parameter section
|
to access the Serial Flash Discoverable Parameter section
|
||||||
|
|
|
@ -304,7 +304,7 @@ static int spi_nor_access(const struct device *const dev,
|
||||||
#define spi_nor_cmd_addr_write(dev, opcode, addr, src, length) \
|
#define spi_nor_cmd_addr_write(dev, opcode, addr, src, length) \
|
||||||
spi_nor_access(dev, opcode, true, addr, (void *)src, length, true)
|
spi_nor_access(dev, opcode, true, addr, (void *)src, length, true)
|
||||||
|
|
||||||
#if CONFIG_SPI_NOR_SFDP_RUNTIME
|
#if defined(CONFIG_SPI_NOR_SFDP_RUNTIME) || defined(CONFIG_FLASH_JESD216_API)
|
||||||
/*
|
/*
|
||||||
* @brief Read content from the SFDP hierarchy
|
* @brief Read content from the SFDP hierarchy
|
||||||
*
|
*
|
||||||
|
@ -599,6 +599,24 @@ static int spi_nor_write_protection_set(struct device *dev, bool write_protect)
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(CONFIG_FLASH_JESD216_API)
|
||||||
|
|
||||||
|
static int spi_nor_sfdp_read(struct device *dev, off_t addr,
|
||||||
|
void *dest, size_t size)
|
||||||
|
{
|
||||||
|
acquire_device(dev);
|
||||||
|
|
||||||
|
spi_nor_wait_until_ready(dev);
|
||||||
|
|
||||||
|
int ret = read_sfdp(dev, addr, dest, size);
|
||||||
|
|
||||||
|
release_device(dev);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* CONFIG_FLASH_JESD216_API */
|
||||||
|
|
||||||
static int spi_nor_read_jedec_id(struct device *dev,
|
static int spi_nor_read_jedec_id(struct device *dev,
|
||||||
uint8_t *id)
|
uint8_t *id)
|
||||||
{
|
{
|
||||||
|
@ -948,6 +966,10 @@ static const struct flash_driver_api spi_nor_api = {
|
||||||
#if defined(CONFIG_FLASH_PAGE_LAYOUT)
|
#if defined(CONFIG_FLASH_PAGE_LAYOUT)
|
||||||
.page_layout = spi_nor_pages_layout,
|
.page_layout = spi_nor_pages_layout,
|
||||||
#endif
|
#endif
|
||||||
|
#if defined(CONFIG_FLASH_JESD216_API)
|
||||||
|
.sfdp_read = spi_nor_sfdp_read,
|
||||||
|
.read_jedec_id = spi_nor_read_jedec_id,
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef CONFIG_SPI_NOR_SFDP_RUNTIME
|
#ifndef CONFIG_SPI_NOR_SFDP_RUNTIME
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue