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:
Andrzej Puzdrowski 2021-03-12 14:56:42 +01:00 committed by Anas Nashif
commit 0172cc159d

View file

@ -78,7 +78,6 @@ struct flash_stm32_qspi_data {
struct jesd216_erase_type erase_types[JESD216_NUM_ERASE_TYPES];
/* Number of bytes per page */
uint16_t page_size;
bool write_protection;
int cmd_status;
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,
const void *data, size_t size)
{
struct flash_stm32_qspi_data *dev_data = DEV_DATA(dev);
int ret = 0;
if (dev_data->write_protection) {
return -EACCES;
}
if (!qspi_address_is_valid(dev, addr, size)) {
LOG_DBG("Error: address or size exceeds expected values: "
"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);
int ret = 0;
if (dev_data->write_protection) {
return -EACCES;
}
if (!qspi_address_is_valid(dev, addr, size)) {
LOG_DBG("Error: address or size exceeds expected values: "
"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,
bool write_protect)
{
struct flash_stm32_qspi_data *dev_data = DEV_DATA(dev);
dev_data->write_protection = write_protect;
ARG_UNUSED(dev);
ARG_UNUSED(write_protect);
return 0;
}