@@ -56,16 +56,18 @@ int MXC_TMR_Init(mxc_tmr_regs_t *tmr, mxc_tmr_cfg_t *cfg, bool init_pins)
5656
5757 clockSource = MXC_TMR_CLK1 ;
5858 MXC_SYS_ClockSourceEnable (MXC_SYS_CLOCK_ISO );
59+ MXC_TMR_SetClockSourceFreq (tmr , ISO_FREQ );
5960 break ;
6061
6162 case MXC_TMR_8M_CLK :
62-
6363 if (tmr_id > 3 ) {
6464 clockSource = MXC_TMR_CLK0 ;
6565 } else {
6666 clockSource = MXC_TMR_CLK2 ;
6767 }
68+
6869 MXC_SYS_ClockSourceEnable (MXC_SYS_CLOCK_IBRO );
70+ MXC_TMR_SetClockSourceFreq (tmr , IBRO_FREQ );
6971 break ;
7072
7173 case MXC_TMR_32K_CLK :
@@ -78,6 +80,7 @@ int MXC_TMR_Init(mxc_tmr_regs_t *tmr, mxc_tmr_cfg_t *cfg, bool init_pins)
7880 }
7981
8082 MXC_SYS_ClockSourceEnable (MXC_SYS_CLOCK_ERTCO );
83+ MXC_TMR_SetClockSourceFreq (tmr , ERTCO_FREQ );
8184 break ;
8285
8386 case MXC_TMR_8K_CLK :
@@ -87,9 +90,23 @@ int MXC_TMR_Init(mxc_tmr_regs_t *tmr, mxc_tmr_cfg_t *cfg, bool init_pins)
8790
8891 clockSource = MXC_TMR_CLK2 ;
8992 MXC_SYS_ClockSourceEnable (MXC_SYS_CLOCK_INRO );
93+ MXC_TMR_SetClockSourceFreq (tmr , INRO_FREQ );
94+ break ;
95+
96+ // IBRO/8
97+ case MXC_TMR_8M_DIV8_CLK :
98+ if (tmr_id != 5 ) { // Only Timer 5 supports this clock source divide
99+ return E_NOT_SUPPORTED ;
100+ }
101+
102+ clockSource = MXC_TMR_CLK1 ;
103+ MXC_SYS_ClockSourceEnable (MXC_SYS_CLOCK_IBRO );
104+ MXC_TMR_SetClockSourceFreq (tmr , (IBRO_FREQ / 8 ));
90105 break ;
91106
92107 default :
108+ // PCLK
109+ MXC_TMR_SetClockSourceFreq (tmr , PeripheralClock );
93110 break ;
94111 }
95112
@@ -167,6 +184,16 @@ int MXC_TMR_Init(mxc_tmr_regs_t *tmr, mxc_tmr_cfg_t *cfg, bool init_pins)
167184 return MXC_TMR_RevB_Init ((mxc_tmr_revb_regs_t * )tmr , cfg , clockSource );
168185}
169186
187+ void MXC_TMR_SetClockSourceFreq (mxc_tmr_regs_t * tmr , int clksrc_freq )
188+ {
189+ MXC_TMR_RevB_SetClockSourceFreq ((mxc_tmr_revb_regs_t * )tmr , clksrc_freq );
190+ }
191+
192+ int MXC_TMR_GetClockSourceFreq (mxc_tmr_regs_t * tmr )
193+ {
194+ return MXC_TMR_RevB_GetClockSourceFreq ((mxc_tmr_revb_regs_t * )tmr );
195+ }
196+
170197void MXC_TMR_Shutdown (mxc_tmr_regs_t * tmr )
171198{
172199 MXC_ASSERT (MXC_TMR_GET_IDX (tmr ) >= 0 );
0 commit comments