From: Ivan Grokhotkov Date: Mon, 20 Nov 2017 07:27:16 +0000 (+0800) Subject: soc/rtc: don't power down BIAS_I2C along with APLL if other PLL is used X-Git-Tag: v3.1-dev~43^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3369f15fa3c46a09b5dcf1a2e05e260c921b1e87;p=esp-idf soc/rtc: don't power down BIAS_I2C along with APLL if other PLL is used If enable == false, and SOC_CLK_SEL == PLL, the code would would erroneously set RTC_CNTL_BIAS_I2C_FORCE_PD. This change fixes the logic. --- diff --git a/components/soc/esp32/rtc_clk.c b/components/soc/esp32/rtc_clk.c index aafae93263..7c8d9609a4 100644 --- a/components/soc/esp32/rtc_clk.c +++ b/components/soc/esp32/rtc_clk.c @@ -168,11 +168,12 @@ void rtc_clk_apll_enable(bool enable, uint32_t sdm0, uint32_t sdm1, uint32_t sdm { REG_SET_FIELD(RTC_CNTL_ANA_CONF_REG, RTC_CNTL_PLLA_FORCE_PD, enable ? 0 : 1); REG_SET_FIELD(RTC_CNTL_ANA_CONF_REG, RTC_CNTL_PLLA_FORCE_PU, enable ? 1 : 0); - REG_SET_FIELD(RTC_CNTL_OPTIONS0_REG, RTC_CNTL_BIAS_I2C_FORCE_PD, enable ? 0 : 1); if (!enable && REG_GET_FIELD(RTC_CNTL_CLK_CONF_REG, RTC_CNTL_SOC_CLK_SEL) != RTC_CNTL_SOC_CLK_SEL_PLL) { - SET_PERI_REG_MASK(RTC_CNTL_OPTIONS0_REG, RTC_CNTL_BIAS_I2C_FORCE_PD); + REG_SET_BIT(RTC_CNTL_OPTIONS0_REG, RTC_CNTL_BIAS_I2C_FORCE_PD); + } else { + REG_CLR_BIT(RTC_CNTL_OPTIONS0_REG, RTC_CNTL_BIAS_I2C_FORCE_PD); } if (enable) {