diff --git a/include/libopencm3/stm32/common/flash_common_f24.h b/include/libopencm3/stm32/common/flash_common_f24.h index 4f9c4a88..92494bfb 100644 --- a/include/libopencm3/stm32/common/flash_common_f24.h +++ b/include/libopencm3/stm32/common/flash_common_f24.h @@ -41,6 +41,7 @@ /**@{*/ #include +#include /* --- FLASH registers ----------------------------------------------------- */ @@ -49,10 +50,6 @@ /* --- FLASH_ACR values ---------------------------------------------------- */ -#define FLASH_ACR_DCRST (1 << 12) -#define FLASH_ACR_ICRST (1 << 11) -#define FLASH_ACR_DCEN (1 << 10) -#define FLASH_ACR_ICEN (1 << 9) #define FLASH_ACR_PRFTEN (1 << 8) /* --- FLASH_SR values ----------------------------------------------------- */ @@ -120,12 +117,6 @@ void flash_lock_option_bytes(void); void flash_clear_pgserr_flag(void); void flash_clear_wrperr_flag(void); void flash_clear_pgaerr_flag(void); -void flash_dcache_enable(void); -void flash_dcache_disable(void); -void flash_icache_enable(void); -void flash_icache_disable(void); -void flash_dcache_reset(void); -void flash_icache_reset(void); void flash_erase_all_sectors(uint32_t program_size); void flash_erase_sector(uint8_t sector, uint32_t program_size); void flash_program_double_word(uint32_t address, uint64_t data); diff --git a/include/libopencm3/stm32/common/flash_common_idcache.h b/include/libopencm3/stm32/common/flash_common_idcache.h new file mode 100644 index 00000000..ac4ecc96 --- /dev/null +++ b/include/libopencm3/stm32/common/flash_common_idcache.h @@ -0,0 +1,57 @@ +/** @addtogroup flash_defines + */ +/* + * This file is part of the libopencm3 project. + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library. If not, see . + */ + +#pragma once + +#include + +/**@{*/ +#define FLASH_ACR_DCRST (1 << 12) +#define FLASH_ACR_ICRST (1 << 11) +#define FLASH_ACR_DCEN (1 << 10) +#define FLASH_ACR_ICEN (1 << 9) + + +BEGIN_DECLS + +/** Enable the data cache */ +void flash_dcache_enable(void); + +/** Disable the data cache */ +void flash_dcache_disable(void); + +/** Enable the Instruction Cache */ +void flash_icache_enable(void); + +/** Disable the Instruction Cache */ +void flash_icache_disable(void); + +/** Reset the Data Cache. + * The data cache must be disabled for this to have effect. + */ +void flash_dcache_reset(void); + +/** Reset the Instruction Cache. + * The instruction cache must be disabled for this to have effect. + */ +void flash_icache_reset(void); + +END_DECLS +/**@}*/ + diff --git a/include/libopencm3/stm32/l4/flash.h b/include/libopencm3/stm32/l4/flash.h index 88332a2f..c92e95cc 100644 --- a/include/libopencm3/stm32/l4/flash.h +++ b/include/libopencm3/stm32/l4/flash.h @@ -43,6 +43,7 @@ #include #include +#include /* --- FLASH registers ----------------------------------------------------- */ @@ -67,10 +68,6 @@ #define FLASH_ACR_SLEEP_PD (1 << 14) #define FLASH_ACR_RUN_PD (1 << 13) -#define FLASH_ACR_DCRST (1 << 12) -#define FLASH_ACR_ICRST (1 << 11) -#define FLASH_ACR_DCEN (1 << 10) -#define FLASH_ACR_ICEN (1 << 9) #define FLASH_ACR_PRFTEN (1 << 8) #define FLASH_ACR_LATENCY_SHIFT 0 @@ -227,12 +224,6 @@ BEGIN_DECLS void flash_clear_pgperr_flag(void); void flash_wait_for_last_operation(void); -void flash_dcache_enable(void); -void flash_dcache_disable(void); -void flash_icache_enable(void); -void flash_icache_disable(void); -void flash_dcache_reset(void); -void flash_icache_reset(void); void flash_clear_pgserr_flag(void); void flash_clear_pgaerr_flag(void); void flash_clear_wrperr_flag(void); diff --git a/lib/stm32/common/flash_common_f24.c b/lib/stm32/common/flash_common_f24.c index 7ec520ce..443d9833 100644 --- a/lib/stm32/common/flash_common_f24.c +++ b/lib/stm32/common/flash_common_f24.c @@ -41,69 +41,6 @@ static inline void flash_set_program_size(uint32_t psize) FLASH_CR |= psize << FLASH_CR_PROGRAM_SHIFT; } -/*---------------------------------------------------------------------------*/ -/** @brief Enable the Data Cache - -*/ - -void flash_dcache_enable(void) -{ - FLASH_ACR |= FLASH_ACR_DCEN; -} - -/*---------------------------------------------------------------------------*/ -/** @brief Disable the Data Cache - -*/ - -void flash_dcache_disable(void) -{ - FLASH_ACR &= ~FLASH_ACR_DCEN; -} - -/*---------------------------------------------------------------------------*/ -/** @brief Enable the Instruction Cache - -*/ - -void flash_icache_enable(void) -{ - FLASH_ACR |= FLASH_ACR_ICEN; -} - -/*---------------------------------------------------------------------------*/ -/** @brief Disable the Instruction Cache - -*/ - -void flash_icache_disable(void) -{ - FLASH_ACR &= ~FLASH_ACR_ICEN; -} - - -/*---------------------------------------------------------------------------*/ -/** @brief Reset the Data Cache - -The data cache must be disabled for this to have effect. -*/ - -void flash_dcache_reset(void) -{ - FLASH_ACR |= FLASH_ACR_DCRST; -} - -/*---------------------------------------------------------------------------*/ -/** @brief Reset the Instruction Cache - -The instruction cache must be disabled for this to have effect. -*/ - -void flash_icache_reset(void) -{ - FLASH_ACR |= FLASH_ACR_ICRST; -} - /*---------------------------------------------------------------------------*/ /** @brief Clear the Programming Sequence Error Flag diff --git a/lib/stm32/common/flash_common_idcache.c b/lib/stm32/common/flash_common_idcache.c new file mode 100644 index 00000000..ebfdd0ad --- /dev/null +++ b/lib/stm32/common/flash_common_idcache.c @@ -0,0 +1,58 @@ +/** @addtogroup flash_file + * + */ + +/* + * This file is part of the libopencm3 project. + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public License + * along with this library. If not, see . + */ + +/**@{*/ + +#include +#include + +void flash_dcache_enable(void) +{ + FLASH_ACR |= FLASH_ACR_DCEN; +} + +void flash_dcache_disable(void) +{ + FLASH_ACR &= ~FLASH_ACR_DCEN; +} + +void flash_icache_enable(void) +{ + FLASH_ACR |= FLASH_ACR_ICEN; +} + +void flash_icache_disable(void) +{ + FLASH_ACR &= ~FLASH_ACR_ICEN; +} + + +void flash_dcache_reset(void) +{ + FLASH_ACR |= FLASH_ACR_DCRST; +} + +void flash_icache_reset(void) +{ + FLASH_ACR |= FLASH_ACR_ICRST; +} + + diff --git a/lib/stm32/f2/Makefile b/lib/stm32/f2/Makefile index edb92278..f6236aea 100644 --- a/lib/stm32/f2/Makefile +++ b/lib/stm32/f2/Makefile @@ -46,6 +46,7 @@ OBJS += crc_common_all.o dac_common_all.o dma_common_f24.o \ hash_common_f24.o \ crypto_common_f24.o exti_common_all.o rcc_common_all.o OBJS += flash_common_all.o flash_common_f.o flash_common_f234.o flash_common_f24.o +OBJS += flash_common_idcache.o OBJS += rng_common_v1.o OBJS += spi_common_all.o spi_common_v1.o spi_common_v1_frf.o diff --git a/lib/stm32/f4/Makefile b/lib/stm32/f4/Makefile index 4c60d9c6..f0f34d5e 100644 --- a/lib/stm32/f4/Makefile +++ b/lib/stm32/f4/Makefile @@ -51,6 +51,7 @@ OBJS += crc_common_all.o dac_common_all.o dma_common_f24.o \ hash_common_f24.o crypto_common_f24.o exti_common_all.o \ rcc_common_all.o OBJS += flash_common_all.o flash_common_f.o flash_common_f234.o flash_common_f24.o +OBJS += flash_common_idcache.o OBJS += rng_common_v1.o OBJS += spi_common_all.o spi_common_v1.o spi_common_v1_frf.o diff --git a/lib/stm32/l4/Makefile b/lib/stm32/l4/Makefile index 99dfe791..a2748535 100644 --- a/lib/stm32/l4/Makefile +++ b/lib/stm32/l4/Makefile @@ -47,7 +47,7 @@ OBJS += exti_common_all.o OBJS += adc_common_v2.o adc_common_v2_multi.o OBJS += crc_common_all.o crc_v2.o OBJS += crs_common_all.o -OBJS += flash_common_all.o flash_common_f.o +OBJS += flash_common_all.o flash_common_f.o flash_common_idcache.o OBJS += rng_common_v1.o OBJS += timer_common_all.o OBJS += i2c_common_v2.o diff --git a/lib/stm32/l4/flash.c b/lib/stm32/l4/flash.c index 71ebffeb..d1fa4663 100644 --- a/lib/stm32/l4/flash.c +++ b/lib/stm32/l4/flash.c @@ -58,51 +58,6 @@ void flash_wait_for_last_operation(void) while ((FLASH_SR & FLASH_SR_BSY) == FLASH_SR_BSY); } -/** @brief Enable the Data Cache - */ -void flash_dcache_enable(void) -{ - FLASH_ACR |= FLASH_ACR_DCEN; -} - -/** @brief Disable the Data Cache - */ -void flash_dcache_disable(void) -{ - FLASH_ACR &= ~FLASH_ACR_DCEN; -} - -/** @brief Enable the Instruction Cache - */ -void flash_icache_enable(void) -{ - FLASH_ACR |= FLASH_ACR_ICEN; -} - -/** @brief Disable the Instruction Cache - */ -void flash_icache_disable(void) -{ - FLASH_ACR &= ~FLASH_ACR_ICEN; -} - - -/** @brief Reset the Data Cache - * The data cache must be disabled for this to have effect. - */ -void flash_dcache_reset(void) -{ - FLASH_ACR |= FLASH_ACR_DCRST; -} - -/** @brief Reset the Instruction Cache - * The instruction cache must be disabled for this to have effect. - */ -void flash_icache_reset(void) -{ - FLASH_ACR |= FLASH_ACR_ICRST; -} - /** @brief Clear the Programming Sequence Error Flag * This flag is set when incorrect programming configuration has been made. */