@@ -141,27 +141,43 @@ ZTEST(rtc_clk, test_rtc_fast_src)
141141{
142142 struct esp32_clock_config clk_cfg = {0 };
143143 int ret = 0 ;
144- uint32_t cpu_rate = 0 ;
144+ uint32_t nominal_rate = 0 ;
145+ uint32_t calibrated_rate = 0 ;
145146
146147 clk_cfg .cpu .xtal_freq = (DT_PROP (DT_INST (0 , DT_CPU_COMPAT ), xtal_freq ) / MHZ (1 ));
147148
148149 for (uint8_t i = 0 ; i < ARRAY_SIZE (rtc_rtc_fast_clk_src ); i ++ ) {
149150 clk_cfg .rtc .rtc_fast_clock_src = rtc_rtc_fast_clk_src [i ];
150151
151- TC_PRINT ("Testing RTC FAST CLK freq : %d MHz \n" , rtc_rtc_fast_clk_src_freq_mhz [i ]);
152+ TC_PRINT ("Testing RTC FAST CLK source : %d\n" , rtc_rtc_fast_clk_src_freq_mhz [i ]);
152153
153154 ret = clock_control_configure (
154155 clk_dev , (clock_control_subsys_t )ESP32_CLOCK_CONTROL_SUBSYS_RTC_FAST ,
155156 & clk_cfg );
156- zassert_false (ret , "Failed to set CPU clock source" );
157+ zassert_false (ret , "Failed to set RTC fast clock source" );
157158
159+ /* Verify nominal frequency matches expected value for selected source */
160+ ret = clock_control_get_rate (
161+ clk_dev ,
162+ (clock_control_subsys_t )ESP32_CLOCK_CONTROL_SUBSYS_RTC_FAST_NOMINAL ,
163+ & nominal_rate );
164+ zassert_false (ret , "Failed to get RTC_FAST nominal clock rate" );
165+ zassert_equal (nominal_rate , rtc_rtc_fast_clk_src_freq_mhz [i ],
166+ "Nominal rate mismatch (%d != %d)" , nominal_rate ,
167+ rtc_rtc_fast_clk_src_freq_mhz [i ]);
168+
169+ /* Also retrieve calibrated value for informational purposes */
158170 ret = clock_control_get_rate (
159171 clk_dev , (clock_control_subsys_t )ESP32_CLOCK_CONTROL_SUBSYS_RTC_FAST ,
160- & cpu_rate );
161- zassert_false (ret , "Failed to get RTC_FAST clock rate" );
162- zassert_equal (cpu_rate , rtc_rtc_fast_clk_src_freq_mhz [i ],
163- "CPU clock rate is not equal to configured frequency (%d != %d)" ,
164- cpu_rate , rtc_rtc_fast_clk_src_freq_mhz [i ]);
172+ & calibrated_rate );
173+ zassert_false (ret , "Failed to get RTC_FAST calibrated clock rate" );
174+
175+ int32_t diff = (int32_t )calibrated_rate - (int32_t )nominal_rate ;
176+ int32_t deviation_tenths = (diff * 1000 ) / (int32_t )nominal_rate ;
177+
178+ TC_PRINT ("Nominal: %d Hz, Calibrated: %d Hz (deviation: %d.%d%%)\n" , nominal_rate ,
179+ calibrated_rate , deviation_tenths / 10 ,
180+ (deviation_tenths < 0 ? - deviation_tenths : deviation_tenths ) % 10 );
165181 }
166182}
167183
@@ -199,7 +215,8 @@ ZTEST(rtc_clk, test_rtc_slow_src)
199215{
200216 struct esp32_clock_config clk_cfg = {0 };
201217 int ret = 0 ;
202- uint32_t cpu_rate = 0 ;
218+ uint32_t nominal_rate = 0 ;
219+ uint32_t calibrated_rate = 0 ;
203220
204221 clk_cfg .cpu .xtal_freq = (DT_PROP (DT_INST (0 , DT_CPU_COMPAT ), xtal_freq ) / MHZ (1 ));
205222
@@ -213,13 +230,28 @@ ZTEST(rtc_clk, test_rtc_slow_src)
213230 & clk_cfg );
214231 zassert_false (ret , "Failed to set CPU clock source" );
215232
233+ /* Verify nominal frequency matches expected value for selected source */
234+ ret = clock_control_get_rate (
235+ clk_dev ,
236+ (clock_control_subsys_t )ESP32_CLOCK_CONTROL_SUBSYS_RTC_SLOW_NOMINAL ,
237+ & nominal_rate );
238+ zassert_false (ret , "Failed to get RTC_SLOW nominal clock rate" );
239+ zassert_equal (nominal_rate , rtc_rtc_slow_clk_src_freq [i ],
240+ "Nominal rate mismatch (%d != %d)" , nominal_rate ,
241+ rtc_rtc_slow_clk_src_freq [i ]);
242+
243+ /* Also retrieve calibrated value for informational purposes */
216244 ret = clock_control_get_rate (
217245 clk_dev , (clock_control_subsys_t )ESP32_CLOCK_CONTROL_SUBSYS_RTC_SLOW ,
218- & cpu_rate );
219- zassert_false (ret , "Failed to get RTC_SLOW clock rate" );
220- zassert_equal (cpu_rate , rtc_rtc_slow_clk_src_freq [i ],
221- "CPU clock rate is not equal to configured frequency (%d != %d)" ,
222- cpu_rate , rtc_rtc_slow_clk_src_freq [i ]);
246+ & calibrated_rate );
247+ zassert_false (ret , "Failed to get RTC_SLOW calibrated clock rate" );
248+
249+ int32_t diff = (int32_t )calibrated_rate - (int32_t )nominal_rate ;
250+ int32_t deviation_tenths = (diff * 1000 ) / (int32_t )nominal_rate ;
251+
252+ TC_PRINT ("Nominal: %d Hz, Calibrated: %d Hz (deviation: %d.%d%%)\n" , nominal_rate ,
253+ calibrated_rate , deviation_tenths / 10 ,
254+ (deviation_tenths < 0 ? - deviation_tenths : deviation_tenths ) % 10 );
223255 }
224256}
225257
0 commit comments