]> granicus.if.org Git - esp-idf/commit
soc/rtc: CPU frequency settings refactoring
authorIvan Grokhotkov <ivan@espressif.com>
Sun, 29 Jul 2018 07:47:58 +0000 (10:47 +0300)
committerIvan Grokhotkov <ivan@espressif.com>
Tue, 21 Aug 2018 05:02:03 +0000 (13:02 +0800)
commit2e31cce3902bbf73c8e7192d85cf89b62c25bae9
treea000d6400dd5ab79890482ae6add459a94a79eaf
parent05a5410033d898fb3946efdd415a2ed9ba0f2fd5
soc/rtc: CPU frequency settings refactoring

Previous APIs used to set CPU frequency used CPU frequencies listed in
rtc_cpu_freq_t enumeration. This was problematic for two reasons.
First, supporting many possible frequency values obtained by dividing
XTAL frequency was hard, as every value would have to be listed in
the enumeration. Since different base XTAL frequencies are supported,
this further complicated things, since not all of these divided
frequencies would be valid for any given XTAL frequency. Second,
having to deal with enumeration values often involved switch
statements to convert between enumeration and MHz values, handle
PLL/XTAL frequencies separately, etc.

This change introduces rtc_cpu_freq_config_t structure, which contains
CPU frequency (in MHz) and information on how this frequency has to
be generated: clock source (XTAL/PLL), source frequency, clock
divider value. More fields can be added to this structure in the
future. This structure simplifies many parts of the code, since both
frequency value and frequency generation settings can be accessed in
any place in code without the need for conversions.

Additionally, this change adds setting of REF_TICK dividers to support
frequencies lower then XTAL with DFS.
components/soc/esp32/include/soc/rtc.h
components/soc/esp32/rtc_clk.c