Browse Source

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

Fixes bug if regulator is disabled via efuse.
Angus Gratton 8 years ago
parent
commit
fccc30d2d5

+ 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
     }