Skip to content

Commit 14b290a

Browse files
committed
Merge branch 'refactor/mspi_clk_src_refactor' into 'master'
mspi: clk src refactor Closes IDF-10464 See merge request espressif/esp-idf!35365
2 parents 1f4ea21 + 6528ab5 commit 14b290a

File tree

25 files changed

+196
-161
lines changed

25 files changed

+196
-161
lines changed

components/bootloader_support/bootloader_flash/src/bootloader_flash_config_esp32c5.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ void IRAM_ATTR bootloader_init_mspi_clock(void)
5353
// Set source mspi pll clock as 80M in bootloader stage.
5454
// SPLL clock on C5 is 480MHz , and mspi_pll needs 80MHz
5555
// in this stage, set divider as 6
56-
mspi_ll_clock_src_sel(MSPI_CLK_SRC_SPLL);
56+
_mspi_timing_ll_set_flash_clk_src(0, FLASH_CLK_SRC_SPLL);
5757
mspi_ll_fast_set_hs_divider(6);
5858
}
5959

components/bootloader_support/bootloader_flash/src/bootloader_flash_config_esp32c61.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ void IRAM_ATTR bootloader_init_mspi_clock(void)
5151
// Set source mspi pll clock as 80M in bootloader stage.
5252
// SPLL clock on C61 is 480MHz , and mspi_pll needs 80MHz
5353
// in this stage, set divider as 6
54-
mspi_ll_clock_src_sel(MSPI_CLK_SRC_SPLL);
54+
_mspi_timing_ll_set_flash_clk_src(0, FLASH_CLK_SRC_DEFAULT);
5555
mspi_ll_fast_set_hs_divider(6);
5656
}
5757

components/bootloader_support/bootloader_flash/src/bootloader_flash_config_esp32p4.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
#include "bootloader_init.h"
2020
#include "hal/mmu_hal.h"
2121
#include "hal/mmu_ll.h"
22-
#include "hal/spimem_flash_ll.h"
22+
#include "hal/mspi_timing_tuning_ll.h"
2323
#include "hal/cache_hal.h"
2424
#include "hal/cache_ll.h"
2525
#include "esp_private/bootloader_flash_internal.h"
@@ -44,8 +44,8 @@ void IRAM_ATTR bootloader_flash_cs_timing_config(void)
4444

4545
void IRAM_ATTR bootloader_init_mspi_clock(void)
4646
{
47-
_spimem_flash_ll_select_clk_source(0, FLASH_CLK_SRC_SPLL);
48-
_spimem_ctrlr_ll_set_core_clock(0, 6);
47+
_mspi_timing_ll_set_flash_clk_src(0, FLASH_CLK_SRC_SPLL);
48+
_mspi_timing_ll_set_flash_core_clock(0, 80);
4949
}
5050

5151
void IRAM_ATTR bootloader_flash_clock_config(const esp_image_header_t *pfhdr)

components/esp_hw_support/mspi_timing_tuning/mspi_timing_tuning.c

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,19 @@
1616
#include "hal/spi_flash_hal.h"
1717
#include "hal/cache_hal.h"
1818
#include "hal/cache_ll.h"
19+
#include "hal/mspi_timing_tuning_ll.h"
1920
#include "esp_private/mspi_timing_tuning.h"
2021
#include "esp_private/mspi_timing_config.h"
2122
#include "mspi_timing_by_mspi_delay.h"
2223
#include "mspi_timing_by_dqs.h"
2324
#include "mspi_timing_by_flash_delay.h"
2425
#if SOC_MEMSPI_TIMING_TUNING_BY_MSPI_DELAY || SOC_MEMSPI_TIMING_TUNING_BY_DQS || SOC_MEMSPI_TIMING_TUNING_BY_FLASH_DELAY
2526
#include "mspi_timing_tuning_configs.h"
26-
#include "hal/mspi_timing_tuning_ll.h"
2727
#endif
2828
#if SOC_MEMSPI_CLK_SRC_IS_INDEPENDENT
2929
#include "hal/spimem_flash_ll.h"
3030
#endif
3131

32-
#if CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C61 // TODO: IDF-10464
33-
#include "hal/mspi_timing_tuning_ll.h"
34-
#endif
35-
3632
#if SOC_CACHE_INTERNAL_MEM_VIA_L1CACHE
3733
#include "esp_ipc_isr.h"
3834
#endif
@@ -469,13 +465,9 @@ void mspi_timing_psram_tuning(void)
469465
*----------------------------------------------------------------------------*/
470466
void mspi_timing_enter_low_speed_mode(bool control_spi1)
471467
{
472-
#if SOC_MEMSPI_FLASH_CLK_SRC_IS_INDEPENDENT
473-
#if CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C61 // TODO: IDF-10464
474-
mspi_ll_clock_src_sel(MSPI_CLK_SRC_XTAL);
475-
#else
476-
spimem_flash_ll_set_clock_source(MSPI_CLK_SRC_ROM_DEFAULT);
468+
#if MSPI_TIMING_LL_FLASH_CLK_SRC_CHANGEABLE
469+
_mspi_timing_ll_set_flash_clk_src(0, FLASH_CLK_SRC_ROM_DEFAULT);
477470
#endif
478-
#endif //SOC_MEMSPI_FLASH_CLK_SRC_IS_INDEPENDENT
479471

480472
#if SOC_SPI_MEM_SUPPORT_TIMING_TUNING
481473
/**
@@ -509,13 +501,9 @@ void mspi_timing_enter_low_speed_mode(bool control_spi1)
509501
*/
510502
void mspi_timing_enter_high_speed_mode(bool control_spi1)
511503
{
512-
#if SOC_MEMSPI_FLASH_CLK_SRC_IS_INDEPENDENT
513-
#if CONFIG_IDF_TARGET_ESP32C5 || CONFIG_IDF_TARGET_ESP32C61// TODO: IDF-10464
514-
mspi_ll_clock_src_sel(MSPI_CLK_SRC_SPLL);
515-
#else
516-
spimem_flash_ll_set_clock_source(MSPI_CLK_SRC_DEFAULT);
504+
#if MSPI_TIMING_LL_FLASH_CLK_SRC_CHANGEABLE
505+
_mspi_timing_ll_set_flash_clk_src(0, FLASH_CLK_SRC_DEFAULT);
517506
#endif
518-
#endif //SOC_MEMSPI_FLASH_CLK_SRC_IS_INDEPENDENT
519507

520508
#if SOC_SPI_MEM_SUPPORT_TIMING_TUNING
521509
/**

components/esp_hw_support/mspi_timing_tuning/port/esp32p4/mspi_timing_config.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ void mspi_timing_config_set_flash_clock(uint32_t flash_freq_mhz, mspi_timing_spe
4040
#if MSPI_TIMING_FLASH_NEEDS_TUNING
4141
assert(HP_SYS_CLKRST.peri_clk_ctrl00.reg_flash_clk_src_sel == 1);
4242

43-
uint32_t core_clock_mhz = MSPI_TIMING_SPLL_FREQ_MHZ / MSPI_TIMING_LL_FLASH_CORE_CLK_DIV;
43+
uint32_t core_clock_mhz = MSPI_TIMING_SPLL_FREQ_MHZ / MSPI_TIMING_LL_HP_FLASH_CORE_CLK_DIV;
4444
assert(core_clock_mhz == 120);
4545
uint32_t freqdiv = core_clock_mhz / flash_freq_mhz;
4646

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
//For compatibility
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
//For compatibility
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
//For compatibility

components/hal/esp32c5/include/hal/mspi_timing_tuning_ll.h

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,24 @@ extern "C" {
2121

2222
/************************** MSPI pll clock configurations **************************/
2323

24-
/**
25-
* @brief Select mspi clock source
24+
/*
25+
* @brief Select FLASH clock source
2626
*
27-
* @param clk_src the clock source of mspi clock
27+
* @param mspi_id mspi_id
28+
* @param clk_src clock source, see valid sources in type `soc_periph_flash_clk_src_t`
2829
*/
29-
static inline __attribute__((always_inline)) void mspi_ll_clock_src_sel(soc_periph_mspi_clk_src_t clk_src)
30+
__attribute__((always_inline))
31+
static inline void _mspi_timing_ll_set_flash_clk_src(uint32_t mspi_id, soc_periph_flash_clk_src_t clk_src)
3032
{
33+
HAL_ASSERT(mspi_id == 0);
3134
switch (clk_src) {
32-
case MSPI_CLK_SRC_XTAL:
35+
case FLASH_CLK_SRC_XTAL:
3336
PCR.mspi_clk_conf.mspi_func_clk_sel = 0;
3437
break;
35-
case MSPI_CLK_SRC_RC_FAST:
38+
case FLASH_CLK_SRC_RC_FAST:
3639
PCR.mspi_clk_conf.mspi_func_clk_sel = 1;
3740
break;
38-
case MSPI_CLK_SRC_SPLL:
41+
case FLASH_CLK_SRC_SPLL:
3942
PCR.mspi_clk_conf.mspi_func_clk_sel = 2;
4043
break;
4144
default:
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/*
2+
* SPDX-FileCopyrightText: 2024 Espressif Systems (Shanghai) CO LTD
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*/
6+
7+
//For compatibility

0 commit comments

Comments
 (0)