diff --git a/components/spi_flash/spi_flash_os_func_noos.c b/components/spi_flash/spi_flash_os_func_noos.c index 78bdc4bc85..6843269e15 100644 --- a/components/spi_flash/spi_flash_os_func_noos.c +++ b/components/spi_flash/spi_flash_os_func_noos.c @@ -8,76 +8,21 @@ #include "sdkconfig.h" #include "esp_flash.h" #include "esp_attr.h" - #include "esp_rom_sys.h" -#if CONFIG_IDF_TARGET_ESP32 -#include "esp32/rom/cache.h" -#elif CONFIG_IDF_TARGET_ESP32S2 -#include "esp32s2/rom/cache.h" -#elif CONFIG_IDF_TARGET_ESP32S3 -#include "esp32s3/rom/ets_sys.h" -#include "esp32s3/rom/cache.h" -#elif CONFIG_IDF_TARGET_ESP32C3 -#include "esp32c3/rom/ets_sys.h" -#include "esp32c3/rom/cache.h" -#elif CONFIG_IDF_TARGET_ESP32C2 -#include "esp32c2/rom/ets_sys.h" -#include "esp32c2/rom/cache.h" -#elif CONFIG_IDF_TARGET_ESP32C6 -#include "esp32c6/rom/ets_sys.h" -#include "esp32c6/rom/cache.h" -#elif CONFIG_IDF_TARGET_ESP32C61 //TODO: IDF-9526, refactor this -#include "esp32c61/rom/ets_sys.h" -#include "esp32c61/rom/cache.h" -#elif CONFIG_IDF_TARGET_ESP32C5 -#include "esp32c5/rom/ets_sys.h" -#include "esp32c5/rom/cache.h" -#elif CONFIG_IDF_TARGET_ESP32H2 -#include "esp32h2/rom/ets_sys.h" -#include "esp32h2/rom/cache.h" -#elif CONFIG_IDF_TARGET_ESP32P4 -#include "esp32p4/rom/ets_sys.h" -#include "esp32p4/rom/cache.h" -#endif - -#include "esp_attr.h" - -#if CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 -typedef struct { - uint32_t icache_autoload; - uint32_t dcache_autoload; -} spi_noos_arg_t; - -static DRAM_ATTR spi_noos_arg_t spi_arg = { 0 }; -#elif CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32H2 || CONFIG_IDF_TARGET_ESP32P4 || CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C61 -typedef struct { - uint32_t icache_autoload; -} spi_noos_arg_t; - -static DRAM_ATTR spi_noos_arg_t spi_arg = { 0 }; -#endif +#include "rom/cache.h" +#include "hal/cache_hal.h" +#include "hal/cache_ll.h" +#include "soc/soc_caps.h" static IRAM_ATTR esp_err_t start(void *arg) { #if CONFIG_IDF_TARGET_ESP32 Cache_Read_Disable(0); Cache_Read_Disable(1); -#elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 - spi_noos_arg_t *spi_arg = arg; - spi_arg->icache_autoload = Cache_Suspend_ICache(); - spi_arg->dcache_autoload = Cache_Suspend_DCache(); -#elif CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32H2 - spi_noos_arg_t *spi_arg = arg; - spi_arg->icache_autoload = Cache_Suspend_ICache(); -#elif CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32C5 - spi_noos_arg_t *spi_arg = arg; - spi_arg->icache_autoload = Cache_Suspend_Cache(); -#elif CONFIG_IDF_TARGET_ESP32P4 - spi_noos_arg_t *spi_arg = arg; - spi_arg->icache_autoload = Cache_Suspend_L2_Cache(); #else - abort(); + cache_hal_suspend(CACHE_LL_LEVEL_EXT_MEM, CACHE_TYPE_ALL); #endif + return ESP_OK; } @@ -86,26 +31,10 @@ static IRAM_ATTR esp_err_t end(void *arg) #if CONFIG_IDF_TARGET_ESP32 Cache_Read_Enable(0); Cache_Read_Enable(1); -#elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 - spi_noos_arg_t *spi_arg = arg; - Cache_Invalidate_ICache_All(); - Cache_Resume_ICache(spi_arg->icache_autoload); - Cache_Resume_DCache(spi_arg->dcache_autoload); -#elif CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C6 || CONFIG_IDF_TARGET_ESP32H2 - spi_noos_arg_t *spi_arg = arg; - Cache_Invalidate_ICache_All(); - Cache_Resume_ICache(spi_arg->icache_autoload); -#elif CONFIG_IDF_TARGET_ESP32C61 || CONFIG_IDF_TARGET_ESP32C5 - spi_noos_arg_t *spi_arg = arg; - Cache_Invalidate_All(); - Cache_Resume_Cache(spi_arg->icache_autoload); -#elif CONFIG_IDF_TARGET_ESP32P4 - spi_noos_arg_t *spi_arg = arg; - Cache_Invalidate_All(CACHE_MAP_L2_CACHE); - Cache_Resume_L2_Cache(spi_arg->icache_autoload); #else - abort(); + cache_hal_resume(CACHE_LL_LEVEL_EXT_MEM, CACHE_TYPE_ALL); #endif + return ESP_OK; } @@ -137,9 +66,5 @@ esp_err_t IRAM_ATTR esp_flash_app_disable_os_functions(esp_flash_t* chip) { chip->os_func = &esp_flash_noos_functions; -#if !CONFIG_IDF_TARGET_ESP32 - chip->os_func_data = &spi_arg; -#endif - return ESP_OK; }