drivers/flash/flash_stm32_qspi: integrate WP service into write/erase
Flash write protection services were integrated into erase and write procedures. This is step required for fixing following issue: Multi-threading flash access is not supported by flash_write_protection_set(). flash_write_protection_set() will be deprecated Signed-off-by: Andrzej Puzdrowski <andrzej.puzdrowski@nordicsemi.no>
This commit is contained in:
parent
14e7c5a5aa
commit
0172cc159d
1 changed files with 2 additions and 13 deletions
|
@ -78,7 +78,6 @@ struct flash_stm32_qspi_data {
|
||||||
struct jesd216_erase_type erase_types[JESD216_NUM_ERASE_TYPES];
|
struct jesd216_erase_type erase_types[JESD216_NUM_ERASE_TYPES];
|
||||||
/* Number of bytes per page */
|
/* Number of bytes per page */
|
||||||
uint16_t page_size;
|
uint16_t page_size;
|
||||||
bool write_protection;
|
|
||||||
int cmd_status;
|
int cmd_status;
|
||||||
struct stream dma;
|
struct stream dma;
|
||||||
};
|
};
|
||||||
|
@ -285,13 +284,8 @@ static int qspi_wait_until_ready(const struct device *dev)
|
||||||
static int flash_stm32_qspi_write(const struct device *dev, off_t addr,
|
static int flash_stm32_qspi_write(const struct device *dev, off_t addr,
|
||||||
const void *data, size_t size)
|
const void *data, size_t size)
|
||||||
{
|
{
|
||||||
struct flash_stm32_qspi_data *dev_data = DEV_DATA(dev);
|
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (dev_data->write_protection) {
|
|
||||||
return -EACCES;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!qspi_address_is_valid(dev, addr, size)) {
|
if (!qspi_address_is_valid(dev, addr, size)) {
|
||||||
LOG_DBG("Error: address or size exceeds expected values: "
|
LOG_DBG("Error: address or size exceeds expected values: "
|
||||||
"addr 0x%lx, size %zu", (long)addr, size);
|
"addr 0x%lx, size %zu", (long)addr, size);
|
||||||
|
@ -361,10 +355,6 @@ static int flash_stm32_qspi_erase(const struct device *dev, off_t addr,
|
||||||
struct flash_stm32_qspi_data *dev_data = DEV_DATA(dev);
|
struct flash_stm32_qspi_data *dev_data = DEV_DATA(dev);
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
if (dev_data->write_protection) {
|
|
||||||
return -EACCES;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!qspi_address_is_valid(dev, addr, size)) {
|
if (!qspi_address_is_valid(dev, addr, size)) {
|
||||||
LOG_DBG("Error: address or size exceeds expected values: "
|
LOG_DBG("Error: address or size exceeds expected values: "
|
||||||
"addr 0x%lx, size %zu", (long)addr, size);
|
"addr 0x%lx, size %zu", (long)addr, size);
|
||||||
|
@ -435,9 +425,8 @@ static int flash_stm32_qspi_erase(const struct device *dev, off_t addr,
|
||||||
static int flash_stm32_qspi_write_protection_set(const struct device *dev,
|
static int flash_stm32_qspi_write_protection_set(const struct device *dev,
|
||||||
bool write_protect)
|
bool write_protect)
|
||||||
{
|
{
|
||||||
struct flash_stm32_qspi_data *dev_data = DEV_DATA(dev);
|
ARG_UNUSED(dev);
|
||||||
|
ARG_UNUSED(write_protect);
|
||||||
dev_data->write_protection = write_protect;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue