feat(psram): support 250MHz in experimental

This commit is contained in:
Armando
2025-11-14 09:34:51 +08:00
committed by armando
parent c51b5e955a
commit b698ac758e
5 changed files with 13 additions and 14 deletions
@@ -52,15 +52,15 @@ menu "LDO Regulator Configurations"
choice ESP_LDO_VOLTAGE_PSRAM_DOMAIN choice ESP_LDO_VOLTAGE_PSRAM_DOMAIN
prompt "PSRAM power domain voltage" prompt "PSRAM power domain voltage"
depends on ESP_LDO_RESERVE_PSRAM depends on ESP_LDO_RESERVE_PSRAM
default ESP_LDO_VOLTAGE_PSRAM_1900_MV default ESP_LDO_VOLTAGE_PSRAM_1800_MV
help help
Select the voltage used by the PSRAM power domain. Select the voltage used by the PSRAM power domain.
config ESP_LDO_VOLTAGE_PSRAM_1900_MV config ESP_LDO_VOLTAGE_PSRAM_1800_MV
bool "1.9V" bool "1.8V"
endchoice endchoice
config ESP_LDO_VOLTAGE_PSRAM_DOMAIN config ESP_LDO_VOLTAGE_PSRAM_DOMAIN
int int
default 1900 if ESP_LDO_VOLTAGE_PSRAM_1900_MV default 1800 if ESP_LDO_VOLTAGE_PSRAM_1800_MV
endmenu endmenu
@@ -72,7 +72,7 @@ TEST_CASE("LDO channel state dump", "[LDO][manual][ignore]")
esp_ldo_channel_handle_t success_ldo_chans[3] = {}; esp_ldo_channel_handle_t success_ldo_chans[3] = {};
esp_ldo_channel_config_t ldo_chan_config = { esp_ldo_channel_config_t ldo_chan_config = {
.chan_id = 2, .chan_id = 2,
.voltage_mv = 1900, .voltage_mv = 1800,
}; };
TEST_ESP_OK(esp_ldo_acquire_channel(&ldo_chan_config, &success_ldo_chans[0])); TEST_ESP_OK(esp_ldo_acquire_channel(&ldo_chan_config, &success_ldo_chans[0]));
@@ -57,6 +57,8 @@
#if CONFIG_SPIRAM_SPEED_80M #if CONFIG_SPIRAM_SPEED_80M
#define AP_HEX_PSRAM_MPLL_DEFAULT_FREQ_MHZ 320 #define AP_HEX_PSRAM_MPLL_DEFAULT_FREQ_MHZ 320
#elif CONFIG_SPIRAM_SPEED_250M
#define AP_HEX_PSRAM_MPLL_DEFAULT_FREQ_MHZ 500
#else #else
#define AP_HEX_PSRAM_MPLL_DEFAULT_FREQ_MHZ 400 #define AP_HEX_PSRAM_MPLL_DEFAULT_FREQ_MHZ 400
#endif #endif
@@ -467,13 +469,6 @@ esp_err_t esp_psram_impl_enable(void)
mode_reg.mr2.density == 0x7 ? PSRAM_SIZE_32MB : mode_reg.mr2.density == 0x7 ? PSRAM_SIZE_32MB :
mode_reg.mr2.density == 0x6 ? PSRAM_SIZE_64MB : 0; mode_reg.mr2.density == 0x6 ? PSRAM_SIZE_64MB : 0;
#if CONFIG_SPIRAM_SPEED_250M
if (mode_reg.mr2.density == 0x7) {
ESP_EARLY_LOGE(TAG, "PSRAM Not support 250MHz speed");
return ESP_ERR_NOT_SUPPORTED;
}
#endif
s_config_mspi_for_psram(); s_config_mspi_for_psram();
mspi_timing_psram_tuning(); mspi_timing_psram_tuning();
psram_ctrlr_ll_enable_variable_dummy(PSRAM_CTRLR_LL_MSPI_ID_2, true); psram_ctrlr_ll_enable_variable_dummy(PSRAM_CTRLR_LL_MSPI_ID_2, true);
+5 -1
View File
@@ -30,8 +30,11 @@ menu "PSRAM config"
help help
Select the speed for the PSRAM chip. Select the speed for the PSRAM chip.
config SPIRAM_SPEED_250M
depends on !ESP32P4_SELECTS_REV_LESS_V3
bool "250MHz clock speed"
config SPIRAM_SPEED_200M config SPIRAM_SPEED_200M
depends on IDF_EXPERIMENTAL_FEATURES
bool "200MHz clock speed" bool "200MHz clock speed"
config SPIRAM_SPEED_80M config SPIRAM_SPEED_80M
@@ -47,6 +50,7 @@ menu "PSRAM config"
default 80 if SPIRAM_SPEED_80M default 80 if SPIRAM_SPEED_80M
default 100 if SPIRAM_SPEED_100M default 100 if SPIRAM_SPEED_100M
default 200 if SPIRAM_SPEED_200M default 200 if SPIRAM_SPEED_200M
default 250 if SPIRAM_SPEED_250M
config SPIRAM_FETCH_INSTRUCTIONS config SPIRAM_FETCH_INSTRUCTIONS
bool bool
+1 -1
View File
@@ -128,7 +128,7 @@ static inline void ldo_ll_voltage_to_dref_mul(int ldo_unit, int voltage_mv, uint
matched_dref = EFUSE.rd_mac_sys_2.ldo_vo1_dref; matched_dref = EFUSE.rd_mac_sys_2.ldo_vo1_dref;
} }
} }
if (ldo_unit == 1 && voltage_mv == 1900) { if (ldo_unit == 1 && voltage_mv == 1800) {
if (EFUSE.rd_mac_sys_2.ldo_vo2_dref && EFUSE.rd_mac_sys_3.ldo_vo2_mul) { if (EFUSE.rd_mac_sys_2.ldo_vo2_dref && EFUSE.rd_mac_sys_3.ldo_vo2_mul) {
matched_mul = EFUSE.rd_mac_sys_3.ldo_vo2_mul; matched_mul = EFUSE.rd_mac_sys_3.ldo_vo2_mul;
matched_dref = EFUSE.rd_mac_sys_2.ldo_vo2_dref; matched_dref = EFUSE.rd_mac_sys_2.ldo_vo2_dref;