]> granicus.if.org Git - esp-idf/commitdiff
soc/rtc: add function to convert CPU frequency in MHz to rtc_cpu_freq_t
authorIvan Grokhotkov <ivan@espressif.com>
Fri, 13 Oct 2017 16:27:56 +0000 (00:27 +0800)
committerIvan Grokhotkov <ivan@espressif.com>
Wed, 18 Oct 2017 06:19:15 +0000 (14:19 +0800)
components/soc/esp32/include/soc/rtc.h
components/soc/esp32/rtc_clk.c

index 2c4b4d320cc4fad971f42086f0ef5ff0ed132944..f13c113b4e487e63b16cdcf2e9d0ba6bc1f30352 100644 (file)
@@ -315,6 +315,14 @@ rtc_cpu_freq_t rtc_clk_cpu_freq_get();
  */
 uint32_t rtc_clk_cpu_freq_value(rtc_cpu_freq_t cpu_freq);
 
+/**
+ * @brief Get rtc_cpu_freq_t enum value for given CPU frequency
+ * @param cpu_freq_mhz  CPU frequency, one of 80, 160, 240, 2, and XTAL frequency
+ * @param[out] out_val output, rtc_cpu_freq_t value corresponding to the frequency
+ * @return true if the given frequency value matches one of enum values
+ */
+ bool rtc_clk_cpu_freq_from_mhz(int cpu_freq_mhz, rtc_cpu_freq_t* out_val);
+
 /**
  * @brief Store new APB frequency value into RTC_APB_FREQ_REG
  *
index 0b1f90251774df13be055de45b347dd6da136057..6e2b0909d0c5dc7380f657ca079781c0ac97cbfc 100644 (file)
@@ -504,6 +504,24 @@ uint32_t rtc_clk_cpu_freq_value(rtc_cpu_freq_t cpu_freq)
     }
 }
 
+bool rtc_clk_cpu_freq_from_mhz(int mhz, rtc_cpu_freq_t* out_val)
+{
+    if (mhz == 240) {
+        *out_val = RTC_CPU_FREQ_240M;
+    } else if (mhz == 160) {
+        *out_val = RTC_CPU_FREQ_160M;
+    } else if (mhz == 80) {
+        *out_val = RTC_CPU_FREQ_80M;
+    } else if (mhz == (int) rtc_clk_xtal_freq_get()) {
+        *out_val = RTC_CPU_FREQ_XTAL;
+    } else if (mhz == 2) {
+        *out_val = RTC_CPU_FREQ_2M;
+    } else {
+        return false;
+    }
+    return true;
+}
+
 /* Values of RTC_XTAL_FREQ_REG and RTC_APB_FREQ_REG are stored as two copies in
  * lower and upper 16-bit halves. These are the routines to work with such a
  * representation.