Browse Source

Merge branch 'bugfix/rtc_i2c_stuck_after_esp_restart' into 'master'

ulp risc-v rtc i2c: Fix a bug where RTC I2C failed to initialize after esp_restart()

Closes IDFGH-9065

See merge request espressif/esp-idf!21862
Sudeep Mohanty 3 years ago
parent
commit
28ccb3b414
1 changed files with 5 additions and 1 deletions
  1. 5 1
      components/ulp/ulp_riscv/ulp_riscv_i2c.c

+ 5 - 1
components/ulp/ulp_riscv/ulp_riscv_i2c.c

@@ -1,5 +1,5 @@
 /*
- * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD
+ * SPDX-FileCopyrightText: 2022-2023 Espressif Systems (Shanghai) CO LTD
  *
  * SPDX-License-Identifier: Apache-2.0
  */
@@ -398,6 +398,10 @@ void ulp_riscv_i2c_master_write_to_device(uint8_t *data_wr, size_t size)
 
 esp_err_t ulp_riscv_i2c_master_init(const ulp_riscv_i2c_cfg_t *cfg)
 {
+    /* Clear any stale config registers */
+    WRITE_PERI_REG(RTC_I2C_CTRL_REG, 0);
+    WRITE_PERI_REG(SENS_SAR_I2C_CTRL_REG, 0);
+
     /* Reset RTC I2C */
 #if CONFIG_IDF_TARGET_ESP32S2
     i2c_dev->ctrl.i2c_reset = 1;