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 */
|
#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,
|
typedef int (*flash_api_read)(struct device *dev, off_t offset, void *data,
|
||||||
size_t len);
|
size_t len);
|
||||||
typedef int (*flash_api_write)(struct device *dev, off_t offset,
|
typedef int (*flash_api_write)(struct device *dev, off_t offset,
|
||||||
const void *data, size_t len);
|
const void *data, size_t len);
|
||||||
typedef int (*flash_api_erase)(struct device *dev, off_t offset, size_t size);
|
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 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)
|
#if defined(CONFIG_FLASH_PAGE_LAYOUT)
|
||||||
/**
|
/**
|
||||||
|
@ -75,6 +85,7 @@ __subsystem struct flash_driver_api {
|
||||||
flash_api_write write;
|
flash_api_write write;
|
||||||
flash_api_erase erase;
|
flash_api_erase erase;
|
||||||
flash_api_write_protection write_protection;
|
flash_api_write_protection write_protection;
|
||||||
|
flash_api_get_parameters get_parameters;
|
||||||
#if defined(CONFIG_FLASH_PAGE_LAYOUT)
|
#if defined(CONFIG_FLASH_PAGE_LAYOUT)
|
||||||
flash_api_pages_layout page_layout;
|
flash_api_pages_layout page_layout;
|
||||||
#endif /* CONFIG_FLASH_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;
|
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
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue