@@ -562,27 +562,25 @@ impl RtcClock {
562562 let rtc_cntl = LPWR :: regs ( ) ;
563563
564564 if clk_8m_en {
565+ // clk_ll_rc_fast_enable
565566 rtc_cntl. clk_conf ( ) . modify ( |_, w| w. enb_ck8m ( ) . clear_bit ( ) ) ;
566- unsafe {
567- rtc_cntl. timer1 ( ) . modify ( |_, w| w. ck8m_wait ( ) . bits ( 5 ) ) ;
568- }
567+
568+ rtc_cntl
569+ . timer1 ( )
570+ . modify ( |_, w| unsafe { w. ck8m_wait ( ) . bits ( 5 ) } ) ;
571+
569572 crate :: rom:: ets_delay_us ( 50 ) ;
570573 } else {
574+ // clk_ll_rc_fast_disable
571575 rtc_cntl. clk_conf ( ) . modify ( |_, w| w. enb_ck8m ( ) . set_bit ( ) ) ;
572576 rtc_cntl
573577 . timer1 ( )
574578 . modify ( |_, w| unsafe { w. ck8m_wait ( ) . bits ( 20 ) } ) ;
575579 }
576580
577- if d256_en {
578- rtc_cntl
579- . clk_conf ( )
580- . modify ( |_, w| w. enb_ck8m_div ( ) . clear_bit ( ) ) ;
581- } else {
582- rtc_cntl
583- . clk_conf ( )
584- . modify ( |_, w| w. enb_ck8m_div ( ) . set_bit ( ) ) ;
585- }
581+ rtc_cntl
582+ . clk_conf ( )
583+ . modify ( |_, w| w. enb_ck8m_div ( ) . bit ( !d256_en) ) ;
586584 }
587585
588586 pub ( crate ) fn read_xtal_freq_mhz ( ) -> Option < u32 > {
@@ -726,12 +724,9 @@ impl RtcClock {
726724
727725 // Prepare calibration
728726 timg0. rtccalicfg ( ) . modify ( |_, w| unsafe {
729- w. rtc_cali_clk_sel ( )
730- . bits ( cal_clk as u8 )
731- . rtc_cali_start_cycling ( )
732- . clear_bit ( )
733- . rtc_cali_max ( )
734- . bits ( slowclk_cycles as u16 )
727+ w. rtc_cali_clk_sel ( ) . bits ( cal_clk as u8 ) ;
728+ w. rtc_cali_start_cycling ( ) . clear_bit ( ) ;
729+ w. rtc_cali_max ( ) . bits ( slowclk_cycles as u16 )
735730 } ) ;
736731
737732 // Figure out how long to wait for calibration to finish
@@ -1027,20 +1022,13 @@ impl Rwdt {
10271022 // Apply default settings for WDT
10281023 unsafe {
10291024 rtc_cntl. wdtconfig0 ( ) . modify ( |_, w| {
1030- w. wdt_stg0 ( )
1031- . bits ( RwdtStageAction :: ResetSystem as u8 )
1032- . wdt_cpu_reset_length ( )
1033- . bits ( 7 )
1034- . wdt_sys_reset_length ( )
1035- . bits ( 7 )
1036- . wdt_stg1 ( )
1037- . bits ( RwdtStageAction :: Off as u8 )
1038- . wdt_stg2 ( )
1039- . bits ( RwdtStageAction :: Off as u8 )
1040- . wdt_stg3 ( )
1041- . bits ( RwdtStageAction :: Off as u8 )
1042- . wdt_en ( )
1043- . set_bit ( )
1025+ w. wdt_stg0 ( ) . bits ( RwdtStageAction :: ResetSystem as u8 ) ;
1026+ w. wdt_cpu_reset_length ( ) . bits ( 7 ) ;
1027+ w. wdt_sys_reset_length ( ) . bits ( 7 ) ;
1028+ w. wdt_stg1 ( ) . bits ( RwdtStageAction :: Off as u8 ) ;
1029+ w. wdt_stg2 ( ) . bits ( RwdtStageAction :: Off as u8 ) ;
1030+ w. wdt_stg3 ( ) . bits ( RwdtStageAction :: Off as u8 ) ;
1031+ w. wdt_en ( ) . set_bit ( )
10441032 } ) ;
10451033 }
10461034 }
@@ -1055,63 +1043,17 @@ impl Rwdt {
10551043 let timeout_raw = ( timeout. as_millis ( ) * ( RtcClock :: cycles_to_1ms ( ) as u64 ) ) as u32 ;
10561044 self . set_write_protection ( false ) ;
10571045
1058- unsafe {
1059- #[ cfg( esp32) ]
1060- match stage {
1061- RwdtStage :: Stage0 => rtc_cntl
1062- . wdtconfig1 ( )
1063- . modify ( |_, w| w. wdt_stg0_hold ( ) . bits ( timeout_raw) ) ,
1064- RwdtStage :: Stage1 => rtc_cntl
1065- . wdtconfig2 ( )
1066- . modify ( |_, w| w. wdt_stg1_hold ( ) . bits ( timeout_raw) ) ,
1067- RwdtStage :: Stage2 => rtc_cntl
1068- . wdtconfig3 ( )
1069- . modify ( |_, w| w. wdt_stg2_hold ( ) . bits ( timeout_raw) ) ,
1070- RwdtStage :: Stage3 => rtc_cntl
1071- . wdtconfig4 ( )
1072- . modify ( |_, w| w. wdt_stg3_hold ( ) . bits ( timeout_raw) ) ,
1073- } ;
1074-
1075- #[ cfg( any( esp32c6, esp32h2) ) ]
1076- match stage {
1077- RwdtStage :: Stage0 => rtc_cntl. config1 ( ) . modify ( |_, w| {
1078- w. wdt_stg0_hold ( )
1079- . bits ( timeout_raw >> ( 1 + Efuse :: rwdt_multiplier ( ) ) )
1080- } ) ,
1081- RwdtStage :: Stage1 => rtc_cntl. config2 ( ) . modify ( |_, w| {
1082- w. wdt_stg1_hold ( )
1083- . bits ( timeout_raw >> ( 1 + Efuse :: rwdt_multiplier ( ) ) )
1084- } ) ,
1085- RwdtStage :: Stage2 => rtc_cntl. config3 ( ) . modify ( |_, w| {
1086- w. wdt_stg2_hold ( )
1087- . bits ( timeout_raw >> ( 1 + Efuse :: rwdt_multiplier ( ) ) )
1088- } ) ,
1089- RwdtStage :: Stage3 => rtc_cntl. config4 ( ) . modify ( |_, w| {
1090- w. wdt_stg3_hold ( )
1091- . bits ( timeout_raw >> ( 1 + Efuse :: rwdt_multiplier ( ) ) )
1092- } ) ,
1093- } ;
1094-
1095- #[ cfg( not( any( esp32, esp32c6, esp32h2) ) ) ]
1096- match stage {
1097- RwdtStage :: Stage0 => rtc_cntl. wdtconfig1 ( ) . modify ( |_, w| {
1098- w. wdt_stg0_hold ( )
1099- . bits ( timeout_raw >> ( 1 + Efuse :: rwdt_multiplier ( ) ) )
1100- } ) ,
1101- RwdtStage :: Stage1 => rtc_cntl. wdtconfig2 ( ) . modify ( |_, w| {
1102- w. wdt_stg1_hold ( )
1103- . bits ( timeout_raw >> ( 1 + Efuse :: rwdt_multiplier ( ) ) )
1104- } ) ,
1105- RwdtStage :: Stage2 => rtc_cntl. wdtconfig3 ( ) . modify ( |_, w| {
1106- w. wdt_stg2_hold ( )
1107- . bits ( timeout_raw >> ( 1 + Efuse :: rwdt_multiplier ( ) ) )
1108- } ) ,
1109- RwdtStage :: Stage3 => rtc_cntl. wdtconfig4 ( ) . modify ( |_, w| {
1110- w. wdt_stg3_hold ( )
1111- . bits ( timeout_raw >> ( 1 + Efuse :: rwdt_multiplier ( ) ) )
1112- } ) ,
1113- } ;
1114- }
1046+ let config_reg = match stage {
1047+ RwdtStage :: Stage0 => rtc_cntl. wdtconfig1 ( ) ,
1048+ RwdtStage :: Stage1 => rtc_cntl. wdtconfig2 ( ) ,
1049+ RwdtStage :: Stage2 => rtc_cntl. wdtconfig3 ( ) ,
1050+ RwdtStage :: Stage3 => rtc_cntl. wdtconfig4 ( ) ,
1051+ } ;
1052+
1053+ #[ cfg( not( esp32) ) ]
1054+ let timeout_raw = timeout_raw >> ( 1 + Efuse :: rwdt_multiplier ( ) ) ;
1055+
1056+ config_reg. modify ( |_, w| unsafe { w. hold ( ) . bits ( timeout_raw) } ) ;
11151057
11161058 self . set_write_protection ( true ) ;
11171059 }
@@ -1121,21 +1063,14 @@ impl Rwdt {
11211063 let rtc_cntl = LP_WDT :: regs ( ) ;
11221064
11231065 self . set_write_protection ( false ) ;
1124-
1125- match stage {
1126- RwdtStage :: Stage0 => rtc_cntl
1127- . wdtconfig0 ( )
1128- . modify ( |_, w| unsafe { w. wdt_stg0 ( ) . bits ( action as u8 ) } ) ,
1129- RwdtStage :: Stage1 => rtc_cntl
1130- . wdtconfig0 ( )
1131- . modify ( |_, w| unsafe { w. wdt_stg1 ( ) . bits ( action as u8 ) } ) ,
1132- RwdtStage :: Stage2 => rtc_cntl
1133- . wdtconfig0 ( )
1134- . modify ( |_, w| unsafe { w. wdt_stg2 ( ) . bits ( action as u8 ) } ) ,
1135- RwdtStage :: Stage3 => rtc_cntl
1136- . wdtconfig0 ( )
1137- . modify ( |_, w| unsafe { w. wdt_stg3 ( ) . bits ( action as u8 ) } ) ,
1138- } ;
1066+ rtc_cntl. wdtconfig0 ( ) . modify ( |_, w| unsafe {
1067+ match stage {
1068+ RwdtStage :: Stage0 => w. wdt_stg0 ( ) . bits ( action as u8 ) ,
1069+ RwdtStage :: Stage1 => w. wdt_stg1 ( ) . bits ( action as u8 ) ,
1070+ RwdtStage :: Stage2 => w. wdt_stg2 ( ) . bits ( action as u8 ) ,
1071+ RwdtStage :: Stage3 => w. wdt_stg3 ( ) . bits ( action as u8 ) ,
1072+ }
1073+ } ) ;
11391074
11401075 self . set_write_protection ( true ) ;
11411076 }
0 commit comments