]> granicus.if.org Git - esp-idf/commitdiff
Revert "Merge branch 'bugfix/external_rtc_start_fail_3.2' into 'release/v3.2'"
authorIvan Grokhotkov <ivan@espressif.com>
Tue, 19 Feb 2019 04:47:44 +0000 (12:47 +0800)
committerIvan Grokhotkov <ivan@espressif.com>
Tue, 19 Feb 2019 04:47:44 +0000 (12:47 +0800)
This reverts merge request !4272

components/esp32/Kconfig
components/esp32/include/esp_sleep.h
components/esp32/sleep_modes.c
components/soc/esp32/rtc_clk.c

index 902f062af290093f77544ec93d9eeb8547608e43..edfea9c5a49c185e4cfca16ac7ae8bd1a82c964a 100644 (file)
@@ -786,18 +786,6 @@ config ESP32_RTC_CLK_CAL_CYCLES
           In case more value will help improve the definition of the launch of the crystal.
           If the crystal could not start, it will be switched to internal RC.
 
-config ESP32_RTC_EXTERNAL_CRYSTAL_ADDITIONAL_CURRENT
-    bool "Additional current for external 32kHz crystal"
-    depends on ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL
-    default "n"
-    help
-        Choose which additional current is used for rtc external crystal.
-
-        - "Enable current by touch" option provides touch pad9 current to
-           external 32kHz crystal, at the expense of slightly higher (4-5uA) deep
-           sleep current consumption. Note that enabled Touch or ULP wakeup
-           source at sleep, this item is invalid even selected ESP32_RTC_EXTERNAL_CRYSTAL_ADDITIONAL_CURRENT.
-
 config ESP32_RTC_XTAL_BOOTSTRAP_CYCLES
     int "Bootstrap cycles for external 32kHz crystal"
     depends on ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL
index c21f26add514aaf08f8f40d558c089a2fa4fd532..6ebe79ce35ab0170a25c789cc4aa859befde4cde 100644 (file)
@@ -95,7 +95,6 @@ esp_err_t esp_sleep_disable_wakeup_source(esp_sleep_source_t source);
  *       source is used.
  * @return
  *      - ESP_OK on success
- *      - ESP_ERR_NOT_SUPPORTED if additional current by touch (CONFIG_ESP32_RTC_EXTERNAL_CRYSTAL_ADDITIONAL_CURRENT) is enabled.
  *      - ESP_ERR_INVALID_STATE if ULP co-processor is not enabled or if wakeup triggers conflict
  */
 esp_err_t esp_sleep_enable_ulp_wakeup();
@@ -122,7 +121,6 @@ esp_err_t esp_sleep_enable_timer_wakeup(uint64_t time_in_us);
  *
  * @return
  *      - ESP_OK on success
- *      - ESP_ERR_NOT_SUPPORTED if additional current by touch (CONFIG_ESP32_RTC_EXTERNAL_CRYSTAL_ADDITIONAL_CURRENT) is enabled.
  *      - ESP_ERR_INVALID_STATE if wakeup triggers conflict
  */
 esp_err_t esp_sleep_enable_touchpad_wakeup();
index 98a884761862d88ace49fabd833110dbb7634267..f3bd071f3ff5e573b499a91c33e0e979b0c8dd28 100644 (file)
@@ -401,9 +401,6 @@ esp_err_t esp_sleep_disable_wakeup_source(esp_sleep_source_t source)
 
 esp_err_t esp_sleep_enable_ulp_wakeup()
 {
-#ifdef CONFIG_ESP32_RTC_EXTERNAL_CRYSTAL_ADDITIONAL_CURRENT
-    return ESP_ERR_NOT_SUPPORTED;
-#endif
 #ifdef CONFIG_ULP_COPROC_ENABLED
     if(s_config.wakeup_triggers & RTC_EXT0_TRIG_EN) {
         ESP_LOGE(TAG, "Conflicting wake-up trigger: ext0");
@@ -437,9 +434,6 @@ static void timer_wakeup_prepare()
 
 esp_err_t esp_sleep_enable_touchpad_wakeup()
 {
-#ifdef CONFIG_ESP32_RTC_EXTERNAL_CRYSTAL_ADDITIONAL_CURRENT
-    return ESP_ERR_NOT_SUPPORTED;
-#endif
     if (s_config.wakeup_triggers & (RTC_EXT0_TRIG_EN)) {
         ESP_LOGE(TAG, "Conflicting wake-up trigger: ext0");
         return ESP_ERR_INVALID_STATE;
@@ -699,13 +693,6 @@ static uint32_t get_power_down_flags()
     if (s_config.pd_options[ESP_PD_DOMAIN_XTAL] != ESP_PD_OPTION_ON) {
         pd_flags |= RTC_SLEEP_PD_XTAL;
     }
-
-    if ((s_config.wakeup_triggers & (RTC_TOUCH_TRIG_EN | RTC_ULP_TRIG_EN)) == 0) {
-    // If enabled EXT1 only and enable the additional current by touch, should be keep RTC_PERIPH power on.
-#if ((defined CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL) && (defined CONFIG_ESP32_RTC_EXTERNAL_CRYSTAL_ADDITIONAL_CURRENT))
-    pd_flags &= ~RTC_SLEEP_PD_RTC_PERIPH;
-#endif
-    }
     return pd_flags;
 }
 
index e0e241aaf310dd242452e59853843bb3cced7d89..8c2948553d76bfb56901b50c3ad41e69ef4fa28e 100644 (file)
@@ -58,7 +58,7 @@
 #define APLL_CAL_DELAY_2            0x3f
 #define APLL_CAL_DELAY_3            0x1f
 
-#define XTAL_32K_DAC_VAL    3
+#define XTAL_32K_DAC_VAL    1
 #define XTAL_32K_DRES_VAL   3
 #define XTAL_32K_DBIAS_VAL  0
 
@@ -111,36 +111,14 @@ static const char* TAG = "rtc_clk";
 
 static void rtc_clk_32k_enable_common(int dac, int dres, int dbias)
 {
-    CLEAR_PERI_REG_MASK(RTC_IO_XTAL_32K_PAD_REG,
-                        RTC_IO_X32P_RDE | RTC_IO_X32P_RUE | RTC_IO_X32N_RUE |
-                        RTC_IO_X32N_RDE | RTC_IO_X32N_MUX_SEL | RTC_IO_X32P_MUX_SEL);
     SET_PERI_REG_MASK(RTC_IO_XTAL_32K_PAD_REG, RTC_IO_X32N_MUX_SEL | RTC_IO_X32P_MUX_SEL);
-    /* Set the parameters of xtal
-        dac --> current
-        dres --> resistance
-        dbias --> bais voltage
-    */
+    CLEAR_PERI_REG_MASK(RTC_IO_XTAL_32K_PAD_REG,
+            RTC_IO_X32P_RDE | RTC_IO_X32P_RUE | RTC_IO_X32N_RUE |
+            RTC_IO_X32N_RDE | RTC_IO_X32N_MUX_SEL | RTC_IO_X32P_MUX_SEL);
     REG_SET_FIELD(RTC_IO_XTAL_32K_PAD_REG, RTC_IO_DAC_XTAL_32K, dac);
     REG_SET_FIELD(RTC_IO_XTAL_32K_PAD_REG, RTC_IO_DRES_XTAL_32K, dres);
     REG_SET_FIELD(RTC_IO_XTAL_32K_PAD_REG, RTC_IO_DBIAS_XTAL_32K, dbias);
-
-#ifdef CONFIG_ESP32_RTC_EXTERNAL_CRYSTAL_ADDITIONAL_CURRENT
-    /* TOUCH sensor can provide additional current to external XTAL.
-       In some case, X32N and X32P PAD don't have enough drive capability to start XTAL */
-    SET_PERI_REG_MASK(RTC_IO_TOUCH_CFG_REG, RTC_IO_TOUCH_XPD_BIAS_M);
-    /* Tie PAD Touch8 to VDD
-       NOTE: TOUCH8 and TOUCH9 register settings are reversed except for DAC, so we set RTC_IO_TOUCH_PAD9_REG here instead
-    */
-    SET_PERI_REG_MASK(RTC_IO_TOUCH_PAD9_REG, RTC_IO_TOUCH_PAD9_TIE_OPT_M);
-    /* Set the current used to compensate TOUCH PAD8 */
-    SET_PERI_REG_BITS(RTC_IO_TOUCH_PAD8_REG, RTC_IO_TOUCH_PAD8_DAC, 4, RTC_IO_TOUCH_PAD8_DAC_S);
-    /* Power up TOUCH8
-       So the Touch DAC start to drive some current from VDD to TOUCH8(which is also XTAL-N)
-     */
-    SET_PERI_REG_MASK(RTC_IO_TOUCH_PAD9_REG, RTC_IO_TOUCH_PAD9_XPD_M);
-#endif // CONFIG_ESP32_RTC_EXTERNAL_CRYSTAL_ADDITIONAL_CURRENT
-    /* Power up external xtal */
-    SET_PERI_REG_MASK(RTC_IO_XTAL_32K_PAD_REG, RTC_IO_XPD_XTAL_32K_M);
+    SET_PERI_REG_MASK(RTC_IO_XTAL_32K_PAD_REG, RTC_IO_XPD_XTAL_32K);
 }
 
 void rtc_clk_32k_enable(bool enable)
@@ -148,12 +126,7 @@ void rtc_clk_32k_enable(bool enable)
     if (enable) {
         rtc_clk_32k_enable_common(XTAL_32K_DAC_VAL, XTAL_32K_DRES_VAL, XTAL_32K_DBIAS_VAL);
     } else {
-        /* Disable X32N and X32P pad drive external xtal */
-        CLEAR_PERI_REG_MASK(RTC_IO_XTAL_32K_PAD_REG, RTC_IO_XPD_XTAL_32K_M);
-#ifdef CONFIG_ESP32_RTC_EXTERNAL_CRYSTAL_ADDITIONAL_CURRENT
-        /* Power down TOUCH */
-        CLEAR_PERI_REG_MASK(RTC_IO_TOUCH_PAD9_REG, RTC_IO_TOUCH_PAD9_XPD_M);
-#endif // CONFIG_ESP32_RTC_EXTERNAL_CRYSTAL_ADDITIONAL_CURRENT
+        CLEAR_PERI_REG_MASK(RTC_IO_XTAL_32K_PAD_REG, RTC_IO_XPD_XTAL_32K);
     }
 }