From 25114b716e4c6e03eaff0d4522fbf2caca9d4077 Mon Sep 17 00:00:00 2001 From: Armando Date: Fri, 9 Dec 2022 16:59:16 +0800 Subject: [PATCH] mspi_tuning: fix psram timing tuning bug Prior to this commit, when calling: - spi_timing_enter_mspi_low_speed_mode() - spi_timing_enter_mspi_high_speed_mode() psram timing is not tuned. This will lead to a stall during early startup. This bug is on S3, for 80MHz DDR PSRAM This commit will add psram timing tuning, in these two functions. --- .../test_apps/psram/sdkconfig.ci.esp32s3_octal_advanced | 1 + components/spi_flash/spi_flash_timing_tuning.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/components/esp_psram/test_apps/psram/sdkconfig.ci.esp32s3_octal_advanced b/components/esp_psram/test_apps/psram/sdkconfig.ci.esp32s3_octal_advanced index 20f43864877..4634cbb0615 100644 --- a/components/esp_psram/test_apps/psram/sdkconfig.ci.esp32s3_octal_advanced +++ b/components/esp_psram/test_apps/psram/sdkconfig.ci.esp32s3_octal_advanced @@ -2,6 +2,7 @@ CONFIG_IDF_TARGET="esp32s3" CONFIG_ESP32S3_SPIRAM_SUPPORT=y CONFIG_SPIRAM_MODE_OCT=y +CONFIG_SPIRAM_SPEED_80M=y CONFIG_SPIRAM_FETCH_INSTRUCTIONS=y CONFIG_SPIRAM_RODATA=y diff --git a/components/spi_flash/spi_flash_timing_tuning.c b/components/spi_flash/spi_flash_timing_tuning.c index 277024c969a..ec0fd0e0aac 100644 --- a/components/spi_flash/spi_flash_timing_tuning.c +++ b/components/spi_flash/spi_flash_timing_tuning.c @@ -392,6 +392,9 @@ static void clear_timing_tuning_regs(bool control_spi1) } else { //Won't touch SPI1 registers } + + spi_timing_config_psram_set_din_mode_num(0, 0, 0); + spi_timing_config_psram_set_extra_dummy(0, 0); } #endif //#if SPI_TIMING_FLASH_NEEDS_TUNING || SPI_TIMING_PSRAM_NEEDS_TUNING @@ -414,6 +417,9 @@ void spi_timing_enter_mspi_low_speed_mode(bool control_spi1) spi_timing_config_set_flash_clock(1, 4); } + //Set PSRAM module clock + spi_timing_config_set_psram_clock(0, 4); + #if SPI_TIMING_FLASH_NEEDS_TUNING || SPI_TIMING_PSRAM_NEEDS_TUNING clear_timing_tuning_regs(control_spi1); #endif