Przeglądaj źródła

Merge branch 'bugfix/flash_1v8_enable_vddsdio_reg' into 'master'

bootloader: Only apply VDDSDIO 1.8V->1.9V if regulator is enabled

See merge request !1601

Jiang Jiang Jian 8 lat temu
rodzic
commit
85fc06e3bb

+ 4 - 2
components/bootloader/Kconfig.projbuild

@@ -44,14 +44,16 @@ config BOOTLOADER_SPI_WP_PIN
         The default value (GPIO 7) is correct for WP pin on ESP32-D2WD integrated flash.
 
 config BOOTLOADER_VDDSDIO_BOOST
-    bool "Increase VDDSDIO LDO voltage to 1.9V"
+    bool "Increase VDDSDIO 1.8V LDO voltage to 1.9V"
     default y
     help
         If this option is enabled, and VDDSDIO LDO is set to 1.8V (using EFUSE
         or MTDI bootstrapping pin), bootloader will change LDO settings to
         output 1.9V instead. This helps prevent flash chip from browning out
         during flash programming operations.
-        For 3.3V flash, this option has no effect.
+
+        This option has no effect if VDDSDIO is set to 3.3V, or if the internal
+        VDDSDIO regulator is disabled via efuse.
 
 endmenu  # Bootloader
 

+ 1 - 2
components/bootloader/subproject/main/bootloader_start.c

@@ -745,12 +745,11 @@ static void vddsdio_configure()
 {
 #if CONFIG_BOOTLOADER_VDDSDIO_BOOST
     rtc_vddsdio_config_t cfg = rtc_vddsdio_get_config();
-    if (cfg.tieh == 0) {    // 1.8V is used
+    if (cfg.enable == 1 && cfg.tieh == 0) {    // VDDSDIO regulator is enabled @ 1.8V
         cfg.drefh = 3;
         cfg.drefm = 3;
         cfg.drefl = 3;
         cfg.force = 1;
-        cfg.enable = 1;
         rtc_vddsdio_set_config(cfg);
         ets_delay_us(10); // wait for regulator to become stable
     }