diff --git a/components/spi_flash/esp_flash_api.c b/components/spi_flash/esp_flash_api.c index 19e7f466ea..1ade196b5b 100644 --- a/components/spi_flash/esp_flash_api.c +++ b/components/spi_flash/esp_flash_api.c @@ -512,31 +512,15 @@ esp_err_t IRAM_ATTR esp_flash_get_size(esp_flash_t *chip, uint32_t *out_size) esp_err_t IRAM_ATTR esp_flash_erase_chip(esp_flash_t *chip) { - esp_err_t err = rom_spiflash_api_funcs->chip_check(&chip); - VERIFY_CHIP_OP(erase_chip); - CHECK_WRITE_ADDRESS(chip, 0, chip->size); - - //check before the operation, in case this is called too close to the last operation - if (chip->chip_drv->yield) { - err = chip->chip_drv->yield(chip, 0); - if (err != ESP_OK) { - return err; - } - } - - err = rom_spiflash_api_funcs->start(chip); + esp_err_t err = ESP_OK; + uint32_t size = 0; + err = esp_flash_get_size(chip, &size); if (err != ESP_OK) { + ESP_LOGE(TAG, "esp_flash_get_size failed, flash error code: %d", err); return err; } - - err = chip->chip_drv->erase_chip(chip); - if (chip->host->driver->flush_cache) { - esp_err_t flush_cache_err = chip->host->driver->flush_cache(chip->host, 0, chip->size); - if (err == ESP_OK) { - err = flush_cache_err; - } - } - return rom_spiflash_api_funcs->end(chip, err); + err = esp_flash_erase_region(chip, 0, size); + return err; } esp_err_t IRAM_ATTR esp_flash_erase_region(esp_flash_t *chip, uint32_t start, uint32_t len) diff --git a/components/spi_flash/spi_flash_os_func_app.c b/components/spi_flash/spi_flash_os_func_app.c index dcea41619b..c361963248 100644 --- a/components/spi_flash/spi_flash_os_func_app.c +++ b/components/spi_flash/spi_flash_os_func_app.c @@ -245,6 +245,8 @@ static bool use_bus_lock(int host_id) #endif } +// This function is only called by users usually via `spi_bus_add_flash_device` to initialise os functions. +// System will initialise them via `esp_flash_app_enable_os_functions` esp_err_t esp_flash_init_os_functions(esp_flash_t *chip, int host_id, spi_bus_lock_dev_handle_t dev_handle) { if (use_bus_lock(host_id) && !dev_handle) { @@ -317,7 +319,7 @@ esp_err_t esp_flash_app_enable_os_functions(esp_flash_t* chip) { main_flash_arg = (app_func_arg_t) { .dev_lock = g_spi_lock_main_flash_dev, - .no_protect = false, + .no_protect = false, // Required for the main flash chip }; chip->os_func = &esp_flash_spi1_default_os_functions; chip->os_func_data = &main_flash_arg;