Pārlūkot izejas kodu

esp_rom: update H4/H2/C2/C6 rom rtc.h

jiangguangming 3 gadi atpakaļ
vecāks
revīzija
626fb5d426

+ 0 - 31
components/esp_rom/include/esp32c2/rom/rtc.h

@@ -161,17 +161,6 @@ RESET_REASON rtc_get_reset_reason(int cpu_no);
   */
   */
 WAKEUP_REASON rtc_get_wakeup_cause(void);
 WAKEUP_REASON rtc_get_wakeup_cause(void);
 
 
-/**
-  * @brief Get CRC for Fast RTC Memory.
-  *
-  * @param  uint32_t start_addr : 0 - 0x7ff for Fast RTC Memory.
-  *
-  * @param  uint32_t crc_len : 0 - 0x7ff, 0 for 4 byte, 0x7ff for 0x2000 byte.
-  *
-  * @return uint32_t : CRC32 result
-  */
-uint32_t calc_rtc_memory_crc(uint32_t start_addr, uint32_t crc_len);
-
 /**
 /**
   * @brief Suppress ROM log by setting specific RTC control register.
   * @brief Suppress ROM log by setting specific RTC control register.
   * @note This is not a permanent disable of ROM logging since the RTC register can not retain after chip reset.
   * @note This is not a permanent disable of ROM logging since the RTC register can not retain after chip reset.
@@ -190,26 +179,6 @@ static inline void rtc_suppress_rom_log(void)
     REG_SET_BIT(RTC_CNTL_STORE4_REG, RTC_DISABLE_ROM_LOG);
     REG_SET_BIT(RTC_CNTL_STORE4_REG, RTC_DISABLE_ROM_LOG);
 }
 }
 
 
-/**
-  * @brief Set CRC of Fast RTC memory 0-0x7ff into RTC STORE7.
-  *
-  * @param  None
-  *
-  * @return None
-  */
-void set_rtc_memory_crc(void);
-
-/**
-  * @brief Fetch entry from RTC memory and RTC STORE reg
-  *
-  * @param uint32_t * entry_addr : the address to save entry
-  *
-  * @param RESET_REASON reset_reason : reset reason this time
-  *
-  * @return None
-  */
-void rtc_boot_control(uint32_t *entry_addr, RESET_REASON reset_reason);
-
 /**
 /**
   * @brief Software Reset digital core.
   * @brief Software Reset digital core.
   *
   *

+ 21 - 32
components/esp_rom/include/esp32c6/rom/rtc.h

@@ -4,10 +4,7 @@
  * SPDX-License-Identifier: Apache-2.0
  * SPDX-License-Identifier: Apache-2.0
  */
  */
 
 
-#ifndef _ROM_RTC_H_
-#define _ROM_RTC_H_
-
-#include "ets_sys.h"
+#pragma once
 
 
 #include <stdbool.h>
 #include <stdbool.h>
 #include <stdint.h>
 #include <stdint.h>
@@ -67,7 +64,6 @@ extern "C" {
 
 
 #define RTC_DISABLE_ROM_LOG ((1 << 0) | (1 << 16)) //!< Disable logging from the ROM code.
 #define RTC_DISABLE_ROM_LOG ((1 << 0) | (1 << 16)) //!< Disable logging from the ROM code.
 
 
-
 typedef enum {
 typedef enum {
     AWAKE = 0,             //<CPU ON
     AWAKE = 0,             //<CPU ON
     LIGHT_SLEEP = BIT0,    //CPU waiti, PLL ON.  We don't need explicitly set this mode.
     LIGHT_SLEEP = BIT0,    //CPU waiti, PLL ON.  We don't need explicitly set this mode.
@@ -172,16 +168,31 @@ RESET_REASON rtc_get_reset_reason(int cpu_no);
   */
   */
 WAKEUP_REASON rtc_get_wakeup_cause(void);
 WAKEUP_REASON rtc_get_wakeup_cause(void);
 
 
+typedef void (* esp_rom_wake_func_t)(void);
+
 /**
 /**
-  * @brief Get CRC for Fast RTC Memory.
+  * @brief Read stored RTC wake function address
   *
   *
-  * @param  uint32_t start_addr : 0 - 0x7ff for Fast RTC Memory.
+  * Returns pointer to wake address if a value is set in RTC registers, and stored length & CRC all valid.
   *
   *
-  * @param  uint32_t crc_len : 0 - 0x7ff, 0 for 4 byte, 0x7ff for 0x2000 byte.
+  * @param  None
   *
   *
-  * @return uint32_t : CRC32 result
+  * @return esp_rom_wake_func_t : Returns pointer to wake address if a value is set in RTC registers
   */
   */
-uint32_t calc_rtc_memory_crc(uint32_t start_addr, uint32_t crc_len);
+esp_rom_wake_func_t esp_rom_get_rtc_wake_addr(void);
+
+/**
+  * @brief Store new RTC wake function address
+  *
+  * Set a new RTC wake address function. If a non-NULL function pointer is set then the function
+  * memory is calculated and stored also.
+  *
+  * @param entry_addr Address of function. If NULL, length is ignored and all registers are cleared to 0.
+  * @param length of function in RTC fast memory. cannot be larger than RTC Fast memory size.
+  *
+  * @return None
+  */
+void esp_rom_set_rtc_wake_addr(esp_rom_wake_func_t entry_addr, size_t length);
 
 
 /**
 /**
   * @brief Suppress ROM log by setting specific RTC control register.
   * @brief Suppress ROM log by setting specific RTC control register.
@@ -201,26 +212,6 @@ static inline void rtc_suppress_rom_log(void)
     REG_SET_BIT(LP_AON_STORE4_REG, RTC_DISABLE_ROM_LOG);
     REG_SET_BIT(LP_AON_STORE4_REG, RTC_DISABLE_ROM_LOG);
 }
 }
 
 
-/**
-  * @brief Set CRC of Fast RTC memory 0-0x7ff into RTC STORE7.
-  *
-  * @param  None
-  *
-  * @return None
-  */
-void set_rtc_memory_crc(void);
-
-/**
-  * @brief Fetch entry from RTC memory and RTC STORE reg
-  *
-  * @param uint32_t * entry_addr : the address to save entry
-  *
-  * @param RESET_REASON reset_reason : reset reason this time
-  *
-  * @return None
-  */
-void rtc_boot_control(uint32_t *entry_addr, RESET_REASON reset_reason);
-
 /**
 /**
   * @brief Software Reset digital core.
   * @brief Software Reset digital core.
   *
   *
@@ -252,5 +243,3 @@ void software_reset_cpu(int cpu_no);
 #ifdef __cplusplus
 #ifdef __cplusplus
 }
 }
 #endif
 #endif
-
-#endif /* _ROM_RTC_H_ */

+ 21 - 32
components/esp_rom/include/esp32h2/rom/rtc.h

@@ -4,10 +4,7 @@
  * SPDX-License-Identifier: Apache-2.0
  * SPDX-License-Identifier: Apache-2.0
  */
  */
 
 
-#ifndef _ROM_RTC_H_
-#define _ROM_RTC_H_
-
-#include "ets_sys.h"
+#pragma once
 
 
 #include <stdbool.h>
 #include <stdbool.h>
 #include <stdint.h>
 #include <stdint.h>
@@ -67,7 +64,6 @@ extern "C" {
 
 
 #define RTC_DISABLE_ROM_LOG ((1 << 0) | (1 << 16)) //!< Disable logging from the ROM code.
 #define RTC_DISABLE_ROM_LOG ((1 << 0) | (1 << 16)) //!< Disable logging from the ROM code.
 
 
-
 typedef enum {
 typedef enum {
     AWAKE = 0,             //<CPU ON
     AWAKE = 0,             //<CPU ON
     LIGHT_SLEEP = BIT0,    //CPU waiti, PLL ON.  We don't need explicitly set this mode.
     LIGHT_SLEEP = BIT0,    //CPU waiti, PLL ON.  We don't need explicitly set this mode.
@@ -173,16 +169,31 @@ RESET_REASON rtc_get_reset_reason(int cpu_no);
   */
   */
 WAKEUP_REASON rtc_get_wakeup_cause(void);
 WAKEUP_REASON rtc_get_wakeup_cause(void);
 
 
+typedef void (* esp_rom_wake_func_t)(void);
+
 /**
 /**
-  * @brief Get CRC for Fast RTC Memory.
+  * @brief Read stored RTC wake function address
   *
   *
-  * @param  uint32_t start_addr : 0 - 0x7ff for Fast RTC Memory.
+  * Returns pointer to wake address if a value is set in RTC registers, and stored length & CRC all valid.
   *
   *
-  * @param  uint32_t crc_len : 0 - 0x7ff, 0 for 4 byte, 0x7ff for 0x2000 byte.
+  * @param  None
   *
   *
-  * @return uint32_t : CRC32 result
+  * @return esp_rom_wake_func_t : Returns pointer to wake address if a value is set in RTC registers
   */
   */
-uint32_t calc_rtc_memory_crc(uint32_t start_addr, uint32_t crc_len);
+esp_rom_wake_func_t esp_rom_get_rtc_wake_addr(void);
+
+/**
+  * @brief Store new RTC wake function address
+  *
+  * Set a new RTC wake address function. If a non-NULL function pointer is set then the function
+  * memory is calculated and stored also.
+  *
+  * @param entry_addr Address of function. If NULL, length is ignored and all registers are cleared to 0.
+  * @param length of function in RTC fast memory. cannot be larger than RTC Fast memory size.
+  *
+  * @return None
+  */
+void esp_rom_set_rtc_wake_addr(esp_rom_wake_func_t entry_addr, size_t length);
 
 
 /**
 /**
   * @brief Suppress ROM log by setting specific RTC control register.
   * @brief Suppress ROM log by setting specific RTC control register.
@@ -202,26 +213,6 @@ static inline void rtc_suppress_rom_log(void)
     REG_SET_BIT(LP_AON_STORE4_REG, RTC_DISABLE_ROM_LOG);
     REG_SET_BIT(LP_AON_STORE4_REG, RTC_DISABLE_ROM_LOG);
 }
 }
 
 
-/**
-  * @brief Set CRC of Fast RTC memory 0-0x7ff into RTC STORE7.
-  *
-  * @param  None
-  *
-  * @return None
-  */
-void set_rtc_memory_crc(void);
-
-/**
-  * @brief Fetch entry from RTC memory and RTC STORE reg
-  *
-  * @param uint32_t * entry_addr : the address to save entry
-  *
-  * @param RESET_REASON reset_reason : reset reason this time
-  *
-  * @return None
-  */
-void rtc_boot_control(uint32_t *entry_addr, RESET_REASON reset_reason);
-
 /**
 /**
   * @brief Software Reset digital core.
   * @brief Software Reset digital core.
   *
   *
@@ -253,5 +244,3 @@ void software_reset_cpu(int cpu_no);
 #ifdef __cplusplus
 #ifdef __cplusplus
 }
 }
 #endif
 #endif
-
-#endif /* _ROM_RTC_H_ */

+ 21 - 34
components/esp_rom/include/esp32h4/rom/rtc.h

@@ -4,16 +4,11 @@
  * SPDX-License-Identifier: Apache-2.0
  * SPDX-License-Identifier: Apache-2.0
  */
  */
 
 
-#ifndef _ROM_RTC_H_
-#define _ROM_RTC_H_
-
-#include "ets_sys.h"
+#pragma once
 
 
 #include <stdbool.h>
 #include <stdbool.h>
 #include <stdint.h>
 #include <stdint.h>
 #include "esp_assert.h"
 #include "esp_assert.h"
-
-#include "soc/soc.h"
 #include "soc/rtc_cntl_reg.h"
 #include "soc/rtc_cntl_reg.h"
 #include "soc/reset_reasons.h"
 #include "soc/reset_reasons.h"
 
 
@@ -67,7 +62,6 @@ extern "C" {
 
 
 #define RTC_DISABLE_ROM_LOG ((1 << 0) | (1 << 16)) //!< Disable logging from the ROM code.
 #define RTC_DISABLE_ROM_LOG ((1 << 0) | (1 << 16)) //!< Disable logging from the ROM code.
 
 
-
 typedef enum {
 typedef enum {
     AWAKE = 0,             //<CPU ON
     AWAKE = 0,             //<CPU ON
     LIGHT_SLEEP = BIT0,    //CPU waiti, PLL ON.  We don't need explicitly set this mode.
     LIGHT_SLEEP = BIT0,    //CPU waiti, PLL ON.  We don't need explicitly set this mode.
@@ -175,16 +169,31 @@ RESET_REASON rtc_get_reset_reason(int cpu_no);
   */
   */
 WAKEUP_REASON rtc_get_wakeup_cause(void);
 WAKEUP_REASON rtc_get_wakeup_cause(void);
 
 
+typedef void (* esp_rom_wake_func_t)(void);
+
+/**
+  * @brief Read stored RTC wake function address
+  *
+  * Returns pointer to wake address if a value is set in RTC registers, and stored length & CRC all valid.
+  *
+  * @param  None
+  *
+  * @return esp_rom_wake_func_t : Returns pointer to wake address if a value is set in RTC registers
+  */
+esp_rom_wake_func_t esp_rom_get_rtc_wake_addr(void);
+
 /**
 /**
-  * @brief Get CRC for Fast RTC Memory.
+  * @brief Store new RTC wake function address
   *
   *
-  * @param  uint32_t start_addr : 0 - 0x7ff for Fast RTC Memory.
+  * Set a new RTC wake address function. If a non-NULL function pointer is set then the function
+  * memory is calculated and stored also.
   *
   *
-  * @param  uint32_t crc_len : 0 - 0x7ff, 0 for 4 byte, 0x7ff for 0x2000 byte.
+  * @param entry_addr Address of function. If NULL, length is ignored and all registers are cleared to 0.
+  * @param length of function in RTC fast memory. cannot be larger than RTC Fast memory size.
   *
   *
-  * @return uint32_t : CRC32 result
+  * @return None
   */
   */
-uint32_t calc_rtc_memory_crc(uint32_t start_addr, uint32_t crc_len);
+void esp_rom_set_rtc_wake_addr(esp_rom_wake_func_t entry_addr, size_t length);
 
 
 /**
 /**
   * @brief Suppress ROM log by setting specific RTC control register.
   * @brief Suppress ROM log by setting specific RTC control register.
@@ -204,26 +213,6 @@ static inline void rtc_suppress_rom_log(void)
     REG_SET_BIT(RTC_CNTL_STORE4_REG, RTC_DISABLE_ROM_LOG);
     REG_SET_BIT(RTC_CNTL_STORE4_REG, RTC_DISABLE_ROM_LOG);
 }
 }
 
 
-/**
-  * @brief Set CRC of Fast RTC memory 0-0x7ff into RTC STORE7.
-  *
-  * @param  None
-  *
-  * @return None
-  */
-void set_rtc_memory_crc(void);
-
-/**
-  * @brief Fetch entry from RTC memory and RTC STORE reg
-  *
-  * @param uint32_t * entry_addr : the address to save entry
-  *
-  * @param RESET_REASON reset_reason : reset reason this time
-  *
-  * @return None
-  */
-void rtc_boot_control(uint32_t *entry_addr, RESET_REASON reset_reason);
-
 /**
 /**
   * @brief Software Reset digital core.
   * @brief Software Reset digital core.
   *
   *
@@ -255,5 +244,3 @@ void software_reset_cpu(int cpu_no);
 #ifdef __cplusplus
 #ifdef __cplusplus
 }
 }
 #endif
 #endif
-
-#endif /* _ROM_RTC_H_ */