]> granicus.if.org Git - esp-idf/commitdiff
bootloader: Only apply VDDSDIO 1.8V->1.9V if regulator is enabled
authorAngus Gratton <angus@espressif.com>
Sun, 26 Nov 2017 23:33:41 +0000 (10:33 +1100)
committerAngus Gratton <gus@projectgus.com>
Sun, 26 Nov 2017 23:33:41 +0000 (10:33 +1100)
Fixes bug if regulator is disabled via efuse.

components/bootloader/Kconfig.projbuild
components/bootloader/subproject/main/bootloader_start.c

index c618085913ea10e8620a31c2e1fec5bf989ed0eb..3680a478a903d793ce8f64a03e4b79e3f797808b 100644 (file)
@@ -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
 
index 2a130d1d3a50a75e89e895c464dae5f98198f5fb..99fb398fbed7154ee3b1a0f6c40c3cd2c0f9f1f4 100644 (file)
@@ -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
     }