mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
feat(spi_flash): Add suspend support on esp32c5, esp32c61
This commit is contained in:
parent
f0a2091e4d
commit
9e864ffe26
@ -1007,6 +1007,34 @@ config SOC_SPI_MAX_PRE_DIVIDER
|
|||||||
int
|
int
|
||||||
default 16
|
default 16
|
||||||
|
|
||||||
|
config SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SOC_SPI_MEM_SUPPORT_AUTO_RESUME
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SOC_SPI_MEM_SUPPORT_IDLE_INTR
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SOC_SPI_MEM_SUPPORT_SW_SUSPEND
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SOC_SPI_MEM_SUPPORT_CHECK_SUS
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
|
config SOC_SPI_MEM_SUPPORT_WRAP
|
||||||
|
bool
|
||||||
|
default y
|
||||||
|
|
||||||
config SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED
|
config SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
@ -427,13 +427,13 @@
|
|||||||
#define SOC_SPI_MAX_PRE_DIVIDER 16
|
#define SOC_SPI_MAX_PRE_DIVIDER 16
|
||||||
|
|
||||||
/*-------------------------- SPI MEM CAPS ---------------------------------------*/
|
/*-------------------------- SPI MEM CAPS ---------------------------------------*/
|
||||||
// #define SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE (1)
|
#define SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE (1)
|
||||||
// #define SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND (1)
|
#define SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND (1)
|
||||||
// #define SOC_SPI_MEM_SUPPORT_AUTO_RESUME (1)
|
#define SOC_SPI_MEM_SUPPORT_AUTO_RESUME (1)
|
||||||
// #define SOC_SPI_MEM_SUPPORT_IDLE_INTR (1)
|
#define SOC_SPI_MEM_SUPPORT_IDLE_INTR (1)
|
||||||
// #define SOC_SPI_MEM_SUPPORT_SW_SUSPEND (1)
|
#define SOC_SPI_MEM_SUPPORT_SW_SUSPEND (1)
|
||||||
// #define SOC_SPI_MEM_SUPPORT_CHECK_SUS (1)
|
#define SOC_SPI_MEM_SUPPORT_CHECK_SUS (1)
|
||||||
// #define SOC_SPI_MEM_SUPPORT_WRAP (1)
|
#define SOC_SPI_MEM_SUPPORT_WRAP (1)
|
||||||
|
|
||||||
#define SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED 1
|
#define SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED 1
|
||||||
#define SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED 1
|
#define SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED 1
|
||||||
|
@ -308,7 +308,7 @@
|
|||||||
|
|
||||||
/*-------------------------- SPI MEM CAPS ---------------------------------------*/
|
/*-------------------------- SPI MEM CAPS ---------------------------------------*/
|
||||||
#define SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE (1)
|
#define SOC_SPI_MEM_SUPPORT_AUTO_WAIT_IDLE (1)
|
||||||
#define SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND (1) //TODO: [ESP32C61] IDF-9255
|
#define SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND (1)
|
||||||
#define SOC_SPI_MEM_SUPPORT_AUTO_RESUME (1)
|
#define SOC_SPI_MEM_SUPPORT_AUTO_RESUME (1)
|
||||||
#define SOC_SPI_MEM_SUPPORT_IDLE_INTR (1)
|
#define SOC_SPI_MEM_SUPPORT_IDLE_INTR (1)
|
||||||
#define SOC_SPI_MEM_SUPPORT_SW_SUSPEND (1)
|
#define SOC_SPI_MEM_SUPPORT_SW_SUSPEND (1)
|
||||||
|
@ -40,7 +40,7 @@ menu "Main Flash configuration"
|
|||||||
default SPI_FLASH_HPM_AUTO
|
default SPI_FLASH_HPM_AUTO
|
||||||
help
|
help
|
||||||
Whether the High Performance Mode of Flash is enabled. As an optional feature, user needs to manually
|
Whether the High Performance Mode of Flash is enabled. As an optional feature, user needs to manually
|
||||||
enable this option as a confirmation. To be back-compatible with earlier IDF versionn, this option is
|
enable this option as a confirmation. To be back-compatible with earlier IDF version, this option is
|
||||||
automatically enabled with warning when Flash running > 80Mhz.
|
automatically enabled with warning when Flash running > 80Mhz.
|
||||||
|
|
||||||
config SPI_FLASH_HPM_ENA
|
config SPI_FLASH_HPM_ENA
|
||||||
@ -83,17 +83,10 @@ menu "Main Flash configuration"
|
|||||||
This is a helper config for HPM. Whether HPM-DC is enabled is also determined by bootloader.
|
This is a helper config for HPM. Whether HPM-DC is enabled is also determined by bootloader.
|
||||||
Invisible for users.
|
Invisible for users.
|
||||||
|
|
||||||
config SPI_FLASH_SUSPEND_QVL_SUPPORTED
|
|
||||||
bool
|
|
||||||
default y if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3 || IDF_TARGET_ESP32C2
|
|
||||||
default n
|
|
||||||
help
|
|
||||||
This is a helper config. Invisible for users.
|
|
||||||
|
|
||||||
config SPI_FLASH_AUTO_SUSPEND
|
config SPI_FLASH_AUTO_SUSPEND
|
||||||
bool "Auto suspend long erase/write operations (READ DOCS FIRST)"
|
bool "Auto suspend long erase/write operations (READ DOCS FIRST)"
|
||||||
default n
|
default n
|
||||||
depends on SPI_FLASH_SUSPEND_QVL_SUPPORTED && !SPI_FLASH_ROM_IMPL
|
depends on SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND && !SPI_FLASH_ROM_IMPL
|
||||||
help
|
help
|
||||||
This option is disabled by default because it is supported only
|
This option is disabled by default because it is supported only
|
||||||
for specific flash chips and for specific Espressif chips.
|
for specific flash chips and for specific Espressif chips.
|
||||||
@ -250,7 +243,7 @@ menu "SPI Flash driver"
|
|||||||
Please use this configuration together with ``SPI_FLASH_ERASE_YIELD_DURATION_MS`` and
|
Please use this configuration together with ``SPI_FLASH_ERASE_YIELD_DURATION_MS`` and
|
||||||
``SPI_FLASH_ERASE_YIELD_TICKS`` after carefully checking flash datasheet to avoid a
|
``SPI_FLASH_ERASE_YIELD_TICKS`` after carefully checking flash datasheet to avoid a
|
||||||
watchdog timeout.
|
watchdog timeout.
|
||||||
For more information, please check `SPI Flash API` reference documenation
|
For more information, please check `SPI Flash API` reference documentation
|
||||||
under section `OS Function`.
|
under section `OS Function`.
|
||||||
|
|
||||||
config SPI_FLASH_ERASE_YIELD_DURATION_MS
|
config SPI_FLASH_ERASE_YIELD_DURATION_MS
|
||||||
@ -352,7 +345,7 @@ menu "SPI Flash driver"
|
|||||||
|
|
||||||
config SPI_FLASH_SUPPORT_BOYA_CHIP
|
config SPI_FLASH_SUPPORT_BOYA_CHIP
|
||||||
bool "BOYA"
|
bool "BOYA"
|
||||||
# ESP32 doens't usually use this chip, default n to save iram.
|
# ESP32 doesn't usually use this chip, default n to save iram.
|
||||||
default y if SPI_FLASH_VENDOR_BOYA_SUPPORTED
|
default y if SPI_FLASH_VENDOR_BOYA_SUPPORTED
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
@ -362,7 +355,7 @@ menu "SPI Flash driver"
|
|||||||
|
|
||||||
config SPI_FLASH_SUPPORT_TH_CHIP
|
config SPI_FLASH_SUPPORT_TH_CHIP
|
||||||
bool "TH"
|
bool "TH"
|
||||||
# ESP32 doens't usually use this chip, default n to save iram.
|
# ESP32 doesn't usually use this chip, default n to save iram.
|
||||||
default y if SPI_FLASH_VENDOR_TH_SUPPORTED
|
default y if SPI_FLASH_VENDOR_TH_SUPPORTED
|
||||||
default n
|
default n
|
||||||
help
|
help
|
||||||
|
@ -510,7 +510,7 @@ esp_err_t spi_flash_chip_generic_write_encrypted(esp_flash_t *chip, const void *
|
|||||||
return ESP_ERR_NOT_SUPPORTED;
|
return ESP_ERR_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if the buffer and length can qualify the requirments */
|
/* Check if the buffer and length can qualify the requirements */
|
||||||
if (esp_flash_encryption->flash_encryption_check(address, length) != true) {
|
if (esp_flash_encryption->flash_encryption_check(address, length) != true) {
|
||||||
return ESP_ERR_NOT_SUPPORTED;
|
return ESP_ERR_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
@ -600,7 +600,7 @@ spi_flash_caps_t spi_flash_chip_generic_get_caps(esp_flash_t *chip)
|
|||||||
|
|
||||||
// flash suspend support
|
// flash suspend support
|
||||||
// XMC support suspend
|
// XMC support suspend
|
||||||
if (chip->chip_id >> 16 == 0x20) {
|
if (chip->chip_id >> 16 == 0x20 || chip->chip_id >> 16 == 0x46) {
|
||||||
caps_flags |= SPI_FLASH_CHIP_CAP_SUSPEND;
|
caps_flags |= SPI_FLASH_CHIP_CAP_SUSPEND;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -799,7 +799,7 @@ esp_err_t spi_flash_common_set_io_mode(esp_flash_t *chip, esp_flash_wrsr_func_t
|
|||||||
esp_err_t spi_flash_chip_generic_suspend_cmd_conf(esp_flash_t *chip)
|
esp_err_t spi_flash_chip_generic_suspend_cmd_conf(esp_flash_t *chip)
|
||||||
{
|
{
|
||||||
// chips which support auto-suspend
|
// chips which support auto-suspend
|
||||||
if (chip->chip_id >> 16 != 0x20 && chip->chip_id >> 16 != 0xa1) {
|
if (chip->chip_id >> 16 != 0x20 && chip->chip_id >> 16 != 0xa1 && chip->chip_id >> 16 != 0x46) {
|
||||||
ESP_EARLY_LOGE(TAG, "The flash you use doesn't support auto suspend, only \'XMC\' is supported");
|
ESP_EARLY_LOGE(TAG, "The flash you use doesn't support auto suspend, only \'XMC\' is supported");
|
||||||
return ESP_ERR_NOT_SUPPORTED;
|
return ESP_ERR_NOT_SUPPORTED;
|
||||||
}
|
}
|
||||||
|
@ -34,9 +34,6 @@ components/spi_flash/test_apps/flash_mmap:
|
|||||||
components/spi_flash/test_apps/flash_suspend:
|
components/spi_flash/test_apps/flash_suspend:
|
||||||
disable:
|
disable:
|
||||||
- if: SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND != 1
|
- if: SOC_SPI_MEM_SUPPORT_AUTO_SUSPEND != 1
|
||||||
- if: IDF_TARGET == "esp32c61"
|
|
||||||
temporary: true
|
|
||||||
reason: not support yet # TODO: [ESP32C61] IDF-9255
|
|
||||||
disable_test:
|
disable_test:
|
||||||
- if: IDF_TARGET != "esp32c3"
|
- if: IDF_TARGET != "esp32c3"
|
||||||
temporary: true
|
temporary: true
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
| Supported Targets | ESP32-C2 | ESP32-C3 | ESP32-C6 | ESP32-H2 | ESP32-P4 | ESP32-S3 |
|
| Supported Targets | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-H2 | ESP32-P4 | ESP32-S3 |
|
||||||
| ----------------- | -------- | -------- | -------- | -------- | -------- | -------- |
|
| ----------------- | -------- | -------- | -------- | -------- | --------- | -------- | -------- | -------- |
|
||||||
|
@ -77,6 +77,8 @@ static bool IRAM_ATTR gptimer_alarm_suspend_cb(gptimer_handle_t timer, const gpt
|
|||||||
#endif
|
#endif
|
||||||
#if CONFIG_IDF_TARGET_ESP32P4
|
#if CONFIG_IDF_TARGET_ESP32P4
|
||||||
Cache_Invalidate_All(CACHE_MAP_L2_CACHE);
|
Cache_Invalidate_All(CACHE_MAP_L2_CACHE);
|
||||||
|
#elif CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C61
|
||||||
|
Cache_Invalidate_All();
|
||||||
#else
|
#else
|
||||||
Cache_Invalidate_ICache_All();
|
Cache_Invalidate_ICache_All();
|
||||||
#endif
|
#endif
|
||||||
|
@ -63,11 +63,6 @@ api-reference/peripherals/touch_element.rst
|
|||||||
api-reference/peripherals/lcd.rst
|
api-reference/peripherals/lcd.rst
|
||||||
api-reference/peripherals/ana_cmpr.rst
|
api-reference/peripherals/ana_cmpr.rst
|
||||||
api-reference/peripherals/spi_features.rst
|
api-reference/peripherals/spi_features.rst
|
||||||
api-reference/peripherals/spi_flash/spi_flash_concurrency.rst
|
|
||||||
api-reference/peripherals/spi_flash/spi_flash_override_driver.rst
|
|
||||||
api-reference/peripherals/spi_flash/spi_flash_optional_feature.rst
|
|
||||||
api-reference/peripherals/spi_flash/spi_flash_idf_vs_rom.rst
|
|
||||||
api-reference/peripherals/spi_flash/index.rst
|
|
||||||
api-reference/peripherals/touch_pad.rst
|
api-reference/peripherals/touch_pad.rst
|
||||||
api-reference/peripherals/adc_calibration.rst
|
api-reference/peripherals/adc_calibration.rst
|
||||||
api-reference/peripherals/sd_pullup_requirements.rst
|
api-reference/peripherals/sd_pullup_requirements.rst
|
||||||
|
@ -96,11 +96,6 @@ api-reference/peripherals/camera_driver.rst
|
|||||||
api-reference/peripherals/temp_sensor.rst
|
api-reference/peripherals/temp_sensor.rst
|
||||||
api-reference/peripherals/spi_features.rst
|
api-reference/peripherals/spi_features.rst
|
||||||
api-reference/peripherals/sdio_slave.rst
|
api-reference/peripherals/sdio_slave.rst
|
||||||
api-reference/peripherals/spi_flash/spi_flash_concurrency.rst
|
|
||||||
api-reference/peripherals/spi_flash/spi_flash_override_driver.rst
|
|
||||||
api-reference/peripherals/spi_flash/spi_flash_optional_feature.rst
|
|
||||||
api-reference/peripherals/spi_flash/spi_flash_idf_vs_rom.rst
|
|
||||||
api-reference/peripherals/spi_flash/index.rst
|
|
||||||
api-reference/peripherals/touch_pad.rst
|
api-reference/peripherals/touch_pad.rst
|
||||||
api-reference/peripherals/lcd/i80_lcd.rst
|
api-reference/peripherals/lcd/i80_lcd.rst
|
||||||
api-reference/peripherals/lcd/spi_lcd.rst
|
api-reference/peripherals/lcd/spi_lcd.rst
|
||||||
|
Loading…
Reference in New Issue
Block a user