Lines Matching refs:rtc

43 int MXC_RTC_RevA_GetBusyFlag(mxc_rtc_reva_regs_t *rtc)  in MXC_RTC_RevA_GetBusyFlag()  argument
51 int MXC_RTC_RevA_EnableInt(mxc_rtc_reva_regs_t *rtc, uint32_t mask) in MXC_RTC_RevA_EnableInt() argument
63 rtc->ctrl |= mask; in MXC_RTC_RevA_EnableInt()
74 int MXC_RTC_RevA_DisableInt(mxc_rtc_reva_regs_t *rtc, uint32_t mask) in MXC_RTC_RevA_DisableInt() argument
86 rtc->ctrl &= ~mask; in MXC_RTC_RevA_DisableInt()
97 int MXC_RTC_RevA_SetTimeofdayAlarm(mxc_rtc_reva_regs_t *rtc, uint32_t ras) in MXC_RTC_RevA_SetTimeofdayAlarm() argument
100 if (MXC_RTC_RevA_GetBusyFlag(rtc)) { in MXC_RTC_RevA_SetTimeofdayAlarm()
104 rtc->toda = (ras << MXC_F_RTC_REVA_TODA_TOD_ALARM_POS) & MXC_F_RTC_REVA_TODA_TOD_ALARM; in MXC_RTC_RevA_SetTimeofdayAlarm()
109 int MXC_RTC_RevA_SetSubsecondAlarm(mxc_rtc_reva_regs_t *rtc, uint32_t rssa) in MXC_RTC_RevA_SetSubsecondAlarm() argument
112 if (MXC_RTC_RevA_GetBusyFlag(rtc)) { in MXC_RTC_RevA_SetSubsecondAlarm()
116 rtc->sseca = (rssa << MXC_F_RTC_REVA_SSECA_SSEC_ALARM_POS) & MXC_F_RTC_REVA_SSECA_SSEC_ALARM; in MXC_RTC_RevA_SetSubsecondAlarm()
121 int MXC_RTC_RevA_Start(mxc_rtc_reva_regs_t *rtc) in MXC_RTC_RevA_Start() argument
123 if (MXC_RTC_RevA_GetBusyFlag(rtc)) { in MXC_RTC_RevA_Start()
127 rtc->ctrl |= MXC_F_RTC_REVA_CTRL_WR_EN; // Allow writing to registers in MXC_RTC_RevA_Start()
132 rtc->ctrl |= MXC_F_RTC_REVA_CTRL_EN; // setting RTCE = 1 in MXC_RTC_RevA_Start()
136 rtc->ctrl &= ~MXC_F_RTC_REVA_CTRL_WR_EN; // Prevent Writing... in MXC_RTC_RevA_Start()
141 int MXC_RTC_RevA_Stop(mxc_rtc_reva_regs_t *rtc) in MXC_RTC_RevA_Stop() argument
143 if (MXC_RTC_RevA_GetBusyFlag(rtc)) { in MXC_RTC_RevA_Stop()
147 rtc->ctrl |= MXC_F_RTC_REVA_CTRL_WR_EN; // Allow writing to registers in MXC_RTC_RevA_Stop()
152 rtc->ctrl &= ~MXC_F_RTC_REVA_CTRL_EN; // setting RTCE = 0 in MXC_RTC_RevA_Stop()
156 rtc->ctrl &= ~MXC_F_RTC_REVA_CTRL_WR_EN; // Prevent Writing... in MXC_RTC_RevA_Stop()
161 int MXC_RTC_RevA_Init(mxc_rtc_reva_regs_t *rtc, uint32_t sec, uint32_t ssec) in MXC_RTC_RevA_Init() argument
163 if (MXC_RTC_RevA_GetBusyFlag(rtc)) { in MXC_RTC_RevA_Init()
167 rtc->ctrl = MXC_F_RTC_REVA_CTRL_WR_EN; // Allow Writes in MXC_RTC_RevA_Init()
171 rtc->ctrl = MXC_RTC_REVA_CTRL_RESET_DEFAULT; // Start with a Clean Register in MXC_RTC_RevA_Init()
175 rtc->ctrl |= MXC_F_RTC_REVA_CTRL_WR_EN; // Set Write Enable, allow writing to reg. in MXC_RTC_RevA_Init()
179 rtc->ssec = ssec; in MXC_RTC_RevA_Init()
183 rtc->sec = sec; in MXC_RTC_RevA_Init()
187 rtc->ctrl &= ~MXC_F_RTC_REVA_CTRL_WR_EN; // Prevent Writing... in MXC_RTC_RevA_Init()
192 int MXC_RTC_RevA_SquareWave(mxc_rtc_reva_regs_t *rtc, mxc_rtc_reva_sqwave_en_t sqe, in MXC_RTC_RevA_SquareWave() argument
195 if (MXC_RTC_RevA_GetBusyFlag(rtc)) { in MXC_RTC_RevA_SquareWave()
199 rtc->ctrl |= MXC_F_RTC_REVA_CTRL_WR_EN; // Allow writing to registers in MXC_RTC_RevA_SquareWave()
205 rtc->oscctrl |= MXC_F_RTC_REVA_OSCCTRL_SQW_32K; // Enable 32KHz wave in MXC_RTC_RevA_SquareWave()
209 rtc->ctrl |= MXC_F_RTC_REVA_CTRL_SQW_EN; // Enable output on the pin in MXC_RTC_RevA_SquareWave()
211 rtc->oscctrl &= in MXC_RTC_RevA_SquareWave()
216 rtc->ctrl &= ~MXC_F_RTC_REVA_CTRL_SQW_SEL; in MXC_RTC_RevA_SquareWave()
220 rtc->ctrl |= (MXC_F_RTC_REVA_CTRL_SQW_EN | ft); // Enable Sq. wave, in MXC_RTC_RevA_SquareWave()
225 rtc->ctrl |= MXC_F_RTC_REVA_CTRL_EN; // Enable Real Time Clock in MXC_RTC_RevA_SquareWave()
227 rtc->oscctrl &= in MXC_RTC_RevA_SquareWave()
232 rtc->ctrl &= ~MXC_F_RTC_REVA_CTRL_SQW_EN; // No sq. wave output in MXC_RTC_RevA_SquareWave()
237 rtc->ctrl &= ~MXC_F_RTC_REVA_CTRL_WR_EN; // Disable Writing to register in MXC_RTC_RevA_SquareWave()
242 int MXC_RTC_RevA_Trim(mxc_rtc_reva_regs_t *rtc, int8_t trim) in MXC_RTC_RevA_Trim() argument
244 if (MXC_RTC_RevA_GetBusyFlag(rtc)) { in MXC_RTC_RevA_Trim()
248 rtc->ctrl |= MXC_F_RTC_REVA_CTRL_WR_EN; in MXC_RTC_RevA_Trim()
252 MXC_SETFIELD(rtc->trim, MXC_F_RTC_REVA_TRIM_TRIM, trim << MXC_F_RTC_REVA_TRIM_TRIM_POS); in MXC_RTC_RevA_Trim()
256 rtc->ctrl &= ~MXC_F_RTC_REVA_CTRL_WR_EN; // Disable Writing to register in MXC_RTC_RevA_Trim()
261 int MXC_RTC_RevA_GetFlags(mxc_rtc_reva_regs_t *rtc) in MXC_RTC_RevA_GetFlags() argument
263 return rtc->ctrl & (MXC_F_RTC_REVA_CTRL_TOD_ALARM | MXC_F_RTC_REVA_CTRL_SSEC_ALARM | in MXC_RTC_RevA_GetFlags()
267 int MXC_RTC_RevA_ClearFlags(mxc_rtc_reva_regs_t *rtc, int flags) in MXC_RTC_RevA_ClearFlags() argument
269 rtc->ctrl &= ~(flags & (MXC_F_RTC_REVA_CTRL_TOD_ALARM | MXC_F_RTC_REVA_CTRL_SSEC_ALARM | in MXC_RTC_RevA_ClearFlags()
275 int MXC_RTC_RevA_GetSubSecond(mxc_rtc_reva_regs_t *rtc) in MXC_RTC_RevA_GetSubSecond() argument
277 if (MXC_RTC_RevA_GetBusyFlag(rtc)) { in MXC_RTC_RevA_GetSubSecond()
284 ssec = ((MXC_PWRSEQ->ctrl >> 12) & 0xF00) | (rtc->ssec & 0xFF); in MXC_RTC_RevA_GetSubSecond()
286 ssec = rtc->ssec; in MXC_RTC_RevA_GetSubSecond()
290 return rtc->ssec; in MXC_RTC_RevA_GetSubSecond()
294 int MXC_RTC_RevA_GetSecond(mxc_rtc_reva_regs_t *rtc) in MXC_RTC_RevA_GetSecond() argument
296 if (MXC_RTC_RevA_GetBusyFlag(rtc)) { in MXC_RTC_RevA_GetSecond()
300 return rtc->sec; in MXC_RTC_RevA_GetSecond()
303 int MXC_RTC_RevA_GetSubSeconds(mxc_rtc_reva_regs_t *rtc, uint32_t *ssec) in MXC_RTC_RevA_GetSubSeconds() argument
305 if (MXC_RTC_RevA_GetBusyFlag(rtc)) { in MXC_RTC_RevA_GetSubSeconds()
314 sub_sec = ((MXC_PWRSEQ->ctrl >> 12) & 0xF00) | (rtc->ssec & 0xFF); in MXC_RTC_RevA_GetSubSeconds()
316 sub_sec = rtc->ssec; in MXC_RTC_RevA_GetSubSeconds()
321 *ssec = rtc->ssec; in MXC_RTC_RevA_GetSubSeconds()
327 int MXC_RTC_RevA_GetSeconds(mxc_rtc_reva_regs_t *rtc, uint32_t *sec) in MXC_RTC_RevA_GetSeconds() argument
329 if (MXC_RTC_RevA_GetBusyFlag(rtc)) { in MXC_RTC_RevA_GetSeconds()
335 *sec = rtc->sec; in MXC_RTC_RevA_GetSeconds()
340 int MXC_RTC_RevA_GetTime(mxc_rtc_reva_regs_t *rtc, uint32_t *sec, uint32_t *subsec) in MXC_RTC_RevA_GetTime() argument
350 if (!(rtc->ctrl & MXC_F_RTC_REVA_CTRL_RDY)) { in MXC_RTC_RevA_GetTime()
355 temp_sec = MXC_RTC_RevA_GetSecond(rtc); in MXC_RTC_RevA_GetTime()
362 if (!(rtc->ctrl & MXC_F_RTC_REVA_CTRL_RDY)) { in MXC_RTC_RevA_GetTime()
367 *subsec = MXC_RTC_RevA_GetSubSecond(rtc); in MXC_RTC_RevA_GetTime()
370 if (!(rtc->ctrl & MXC_F_RTC_REVA_CTRL_RDY)) { in MXC_RTC_RevA_GetTime()
375 *sec = MXC_RTC_RevA_GetSecond(rtc); in MXC_RTC_RevA_GetTime()
383 int MXC_RTC_RevA_TrimCrystal(mxc_rtc_reva_regs_t *rtc, mxc_tmr_regs_t *tmr) in MXC_RTC_RevA_TrimCrystal() argument
391 if (!(rtc->ctrl & MXC_F_RTC_REVA_CTRL_EN)) { // If RTC not enable, initialize it in MXC_RTC_RevA_TrimCrystal()
395 while (MXC_RTC_RevA_GetTime(rtc, &sec, &ssec) < 0) {} in MXC_RTC_RevA_TrimCrystal()
396 while (rtc->ctrl & MXC_F_RTC_CTRL_BUSY) {} in MXC_RTC_RevA_TrimCrystal()
397 ctrl = rtc->ctrl; in MXC_RTC_RevA_TrimCrystal()
407 while (MXC_RTC_RevA_GetTime(rtc, &sec_sample[0], &ssec_sample[0]) < 0) {} in MXC_RTC_RevA_TrimCrystal()
414 while (MXC_RTC_RevA_GetTime(rtc, &sec_sample[i], &ssec_sample[i]) < 0) {} in MXC_RTC_RevA_TrimCrystal()
425 while (rtc->ctrl & MXC_F_RTC_REVA_CTRL_BUSY) {} in MXC_RTC_RevA_TrimCrystal()
426 MXC_SETFIELD(rtc->ssec, MXC_F_RTC_REVA_SSEC_SSEC, (ssec << MXC_F_RTC_REVA_SSEC_SSEC_POS)); in MXC_RTC_RevA_TrimCrystal()
427 while (rtc->ctrl & MXC_F_RTC_REVA_CTRL_BUSY) {} in MXC_RTC_RevA_TrimCrystal()
428 MXC_SETFIELD(rtc->sec, MXC_F_RTC_REVA_SEC_SEC, (sec << MXC_F_RTC_REVA_SEC_SEC_POS)); in MXC_RTC_RevA_TrimCrystal()
429 while (rtc->ctrl & MXC_F_RTC_REVA_CTRL_BUSY) {} in MXC_RTC_RevA_TrimCrystal()
430 rtc->ctrl = ctrl; in MXC_RTC_RevA_TrimCrystal()
449 return MXC_RTC_RevA_Trim(rtc, (int8_t)ppm); // Set Trim in MXC_RTC_RevA_TrimCrystal()