zephyr/drivers/flash
Florian Vaussard 2320973fea flash: stm32l4: disable dcache before writting
Disable the data cache before writing to Flash, in order to workaround
silicon errata 2.2.3: "Data cache might be corrupted during Flash memory
read-while-write operation". The data cache is conditionally re-enabled
once the write is completed.

This silicon bug has been encountered while stress testing the
implementation. Here are the events leading to the fault:
- Code is executing from Flash bank 1
- A write to Flash bank 2 is initiated
- The Cortex SysTick interrupt fires while waiting for Flash write
  completion

In that case, the Flash controller will perform a read-while-write
operation in order to execute the ISR code. As the data cache is enabled
by default after reset, a corruption occurs due to the silicon bug,
leading to bizarre data bus faults or unaligned access faults inside
_timer_int_handler() or one of the functions called by the ISR.

Applying the workaround devised by ST fixes the problem.

Signed-off-by: Florian Vaussard <florian.vaussard@gmail.com>
2019-03-19 09:56:01 -05:00
..
CMakeLists.txt drivers/flash: Rework CMakeLists.txt for stm32 drivers 2019-02-19 07:45:50 -06:00
flash_gecko.c flash: flash_gecko: Convert FLASH_WRITE_BLOCK_SIZE to DT_ 2019-02-08 22:39:07 -06:00
flash_handlers.c all: Update reserved function names 2019-03-11 13:48:42 -04:00
flash_page_layout.c all: Update reserved function names 2019-03-11 13:48:42 -04:00
flash_priv.h
flash_sam0.c drivers: Add 'U' to unsigned variable assignments 2018-12-04 22:51:56 -05:00
flash_sam.c include: misc: util.h: Rename min/max to MIN/MAX 2019-02-14 22:16:03 -05:00
flash_shell.c shell: Modify subcommands to use SHELL_STATIC_SUBCMD_SET_CREATE 2019-02-20 07:31:35 -05:00
flash_stm32.c drivers/flash: stm32f3/stm32f1: define flash registers as volatile 2019-03-15 06:43:24 -05:00
flash_stm32.h drivers/flash: Move STM32F3 to generic STM32 series driver 2019-02-19 07:45:50 -06:00
flash_stm32f0x.c drivers: flash: move to new logger 2018-10-10 10:22:01 -04:00
flash_stm32f3x.c drivers/flash: stm32f3/stm32f1: define flash registers as volatile 2019-03-15 06:43:24 -05:00
flash_stm32f4x.c
flash_stm32f7x.c drivers: flash: add driver for STM32F7x series 2018-12-17 08:15:59 -06:00
flash_stm32l4x.c flash: stm32l4: disable dcache before writting 2019-03-19 09:56:01 -05:00
Kconfig kconfig: Use depend on instead of select to avoid kconfig loop 2019-03-12 19:42:40 +01:00
Kconfig.gecko kconfig: drivers: flash: Remove redundant FLASH dependencies 2019-03-09 09:56:40 -05:00
Kconfig.mcux soc: nxp_kinetis: Add HAS_MCUX_FTFX to conditionalize mcux flash driver 2019-03-06 21:19:25 -06:00
Kconfig.nios2_qspi kconfig: flash: Move nios code into it's own file 2019-02-15 14:12:48 -05:00
Kconfig.nor kconfig: drivers: flash: Remove redundant FLASH dependencies 2019-03-09 09:56:40 -05:00
Kconfig.nrf drivers: nrf5: Don't force specific drivers from soc/arm/nordic_nrf 2019-03-12 19:42:40 +01:00
Kconfig.qmsi kconfig: drivers: flash: Remove redundant FLASH dependencies 2019-03-09 09:56:40 -05:00
Kconfig.sam drivers: flash: add flash driver support for Atmel SAM E70 2018-11-20 14:11:07 -05:00
Kconfig.sam0 drivers: flash: fix Kconfig dependencies 2018-10-10 10:22:01 -04:00
Kconfig.stm32 drivers/flash: Move STM32F3 to generic STM32 series driver 2019-02-19 07:45:50 -06:00
Kconfig.w25qxxdv dts: flash: w25qxxdv: Add Device Tree Support for SPI FLASH w25qxxdv 2019-01-09 10:26:10 -06:00
soc_flash_mcux.c flash: soc_flash_mcux: Convert FLASH_ERASE_BLOCK_SIZE to DT_ 2019-02-08 22:39:07 -06:00
soc_flash_nios2_qspi.c include: misc: util.h: Rename min/max to MIN/MAX 2019-02-14 22:16:03 -05:00
soc_flash_nrf.c drivers: Modify drivers to use DEVICE_AND_API_INIT() 2019-01-15 10:39:34 -08:00
soc_flash_qmsi.c device: Extend device_set_power_state API to support async requests 2019-03-14 14:26:15 +01:00
spi_flash_w25qxxdv_defs.h
spi_flash_w25qxxdv.c flash: w25qxxdv: Convert to new DT_<COMPAT>_<INSTANCE> defines 2019-01-28 10:40:31 -06:00
spi_flash_w25qxxdv.h
spi_nor.c drivers: flash: spi_nor.c: Correct the calculation of SECTORS_COUNT 2019-02-14 22:18:25 -05:00
spi_nor.h Kconfig: spi_nor: Remove Erase configuration from Kconfig 2019-01-16 21:22:56 -05:00