drivers/flash: Add API call returning flash parameters
Adds flash_get_parameters call to API that returns pointer to structure describing flash parameters. Currently only erase_value parameter is provided via the structure. Signed-off-by: Dominik Ermel <dominik.ermel@nordicsemi.no>
This commit is contained in:
parent
72ebf70543
commit
18deb5423e
1 changed files with 33 additions and 0 deletions
|
@ -36,12 +36,22 @@ struct flash_pages_layout {
|
|||
};
|
||||
#endif /* CONFIG_FLASH_PAGE_LAYOUT */
|
||||
|
||||
/**
|
||||
* Flash memory parameters. Contents of this structure suppose to be
|
||||
* filled in during flash device initialization and stay constant
|
||||
* through a runtime.
|
||||
*/
|
||||
struct flash_parameters {
|
||||
uint8_t erase_value; /* Byte value of erased flash */
|
||||
};
|
||||
|
||||
typedef int (*flash_api_read)(struct device *dev, off_t offset, void *data,
|
||||
size_t len);
|
||||
typedef int (*flash_api_write)(struct device *dev, off_t offset,
|
||||
const void *data, size_t len);
|
||||
typedef int (*flash_api_erase)(struct device *dev, off_t offset, size_t size);
|
||||
typedef int (*flash_api_write_protection)(struct device *dev, bool enable);
|
||||
typedef const struct flash_parameters* (*flash_api_get_parameters)(const struct device *dev);
|
||||
|
||||
#if defined(CONFIG_FLASH_PAGE_LAYOUT)
|
||||
/**
|
||||
|
@ -75,6 +85,7 @@ __subsystem struct flash_driver_api {
|
|||
flash_api_write write;
|
||||
flash_api_erase erase;
|
||||
flash_api_write_protection write_protection;
|
||||
flash_api_get_parameters get_parameters;
|
||||
#if defined(CONFIG_FLASH_PAGE_LAYOUT)
|
||||
flash_api_pages_layout page_layout;
|
||||
#endif /* CONFIG_FLASH_PAGE_LAYOUT */
|
||||
|
@ -296,6 +307,28 @@ static inline size_t z_impl_flash_get_write_block_size(struct device *dev)
|
|||
return api->write_block_size;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @brief Get pointer to flash_parameters structure
|
||||
*
|
||||
* Returned pointer points to a structure that should be considered
|
||||
* constant through a runtime, regardless if it is defined in RAM or
|
||||
* Flash.
|
||||
* Developer is free to cache the structure pointer or copy its contents.
|
||||
*
|
||||
* @return pointer to flash_parameters structure characteristic for
|
||||
* the device.
|
||||
*/
|
||||
__syscall const struct flash_parameters *flash_get_parameters(const struct device *dev);
|
||||
|
||||
static inline const struct flash_parameters *z_impl_flash_get_parameters(const struct device *dev)
|
||||
{
|
||||
const struct flash_driver_api *api =
|
||||
(const struct flash_driver_api *)dev->driver_api;
|
||||
|
||||
return api->get_parameters(dev);
|
||||
}
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue