Lines Matching refs:letimer
90 __STATIC_INLINE void regSync(LETIMER_TypeDef *letimer, uint32_t mask) in regSync() argument
95 if (letimer->FREEZE & LETIMER_FREEZE_REGFREEZE) { in regSync()
101 while (letimer->SYNCBUSY & mask) { in regSync()
124 uint32_t LETIMER_CompareGet(LETIMER_TypeDef *letimer, unsigned int comp) in LETIMER_CompareGet() argument
128 EFM_ASSERT(LETIMER_REF_VALID(letimer) && LETIMER_COMP_REG_VALID(comp)); in LETIMER_CompareGet()
134 regSync(letimer, LETIMER_SYNCBUSY_COMP0); in LETIMER_CompareGet()
136 ret = letimer->COMP0; in LETIMER_CompareGet()
141 regSync(letimer, LETIMER_SYNCBUSY_COMP1); in LETIMER_CompareGet()
143 ret = letimer->COMP1; in LETIMER_CompareGet()
165 uint32_t LETIMER_CounterGet(LETIMER_TypeDef *letimer) in LETIMER_CounterGet() argument
168 regSync(letimer, LETIMER_SYNCBUSY_CNT); in LETIMER_CounterGet()
170 return letimer->CNT; in LETIMER_CounterGet()
184 void LETIMER_CounterSet(LETIMER_TypeDef *letimer, uint32_t value) in LETIMER_CounterSet() argument
187 regSync(letimer, LETIMER_SYNCBUSY_CNT); in LETIMER_CounterSet()
189 letimer->CNT = value; in LETIMER_CounterSet()
213 void LETIMER_CompareSet(LETIMER_TypeDef *letimer, in LETIMER_CompareSet() argument
217 EFM_ASSERT(LETIMER_REF_VALID(letimer) in LETIMER_CompareSet()
227 regSync(letimer, LETIMER_SYNCBUSY_COMP0); in LETIMER_CompareSet()
229 letimer->COMP0 = value; in LETIMER_CompareSet()
234 regSync(letimer, LETIMER_SYNCBUSY_COMP1); in LETIMER_CompareSet()
236 letimer->COMP1 = value; in LETIMER_CompareSet()
263 void LETIMER_Enable(LETIMER_TypeDef *letimer, bool enable) in LETIMER_Enable() argument
265 EFM_ASSERT(LETIMER_REF_VALID(letimer)); in LETIMER_Enable()
268 regSync(letimer, LETIMER_SYNCBUSY_CMD); in LETIMER_Enable()
270 regSync(letimer, LETIMER_SYNCBUSY_STOP | LETIMER_SYNCBUSY_START); in LETIMER_Enable()
274 letimer->CMD = LETIMER_CMD_START; in LETIMER_Enable()
276 letimer->CMD = LETIMER_CMD_STOP; in LETIMER_Enable()
308 void LETIMER_FreezeEnable(LETIMER_TypeDef *letimer, bool enable) in LETIMER_FreezeEnable() argument
320 while (letimer->SYNCBUSY) { in LETIMER_FreezeEnable()
323 letimer->FREEZE = LETIMER_FREEZE_REGFREEZE; in LETIMER_FreezeEnable()
325 letimer->FREEZE = 0; in LETIMER_FreezeEnable()
354 void LETIMER_Init(LETIMER_TypeDef *letimer, const LETIMER_Init_TypeDef *init) in LETIMER_Init() argument
358 EFM_ASSERT(LETIMER_REF_VALID(letimer)); in LETIMER_Init()
361 letimer->EN_SET = LETIMER_EN_EN; in LETIMER_Init()
365 if (!(init->enable) && (letimer->STATUS & LETIMER_STATUS_RUNNING)) { in LETIMER_Init()
367 regSync(letimer, LETIMER_SYNCBUSY_CMD); in LETIMER_Init()
369 regSync(letimer, LETIMER_SYNCBUSY_STOP); in LETIMER_Init()
371 letimer->CMD = LETIMER_CMD_STOP; in LETIMER_Init()
394 letimer->COMP0 = init->topValue; in LETIMER_Init()
399 letimer->TOP = init->topValue; in LETIMER_Init()
422 regSync(letimer, LETIMER_SYNCBUSY_CTRL); in LETIMER_Init()
424 letimer->CTRL = tmp; in LETIMER_Init()
427 if (init->enable && !(letimer->STATUS & LETIMER_STATUS_RUNNING)) { in LETIMER_Init()
429 regSync(letimer, LETIMER_SYNCBUSY_CMD); in LETIMER_Init()
431 regSync(letimer, LETIMER_SYNCBUSY_START); in LETIMER_Init()
433 letimer->CMD = LETIMER_CMD_START; in LETIMER_Init()
450 uint32_t LETIMER_RepeatGet(LETIMER_TypeDef *letimer, unsigned int rep) in LETIMER_RepeatGet() argument
454 EFM_ASSERT(LETIMER_REF_VALID(letimer) && LETIMER_REP_REG_VALID(rep)); in LETIMER_RepeatGet()
461 regSync(letimer, LETIMER_SYNCBUSY_REP0); in LETIMER_RepeatGet()
463 ret = letimer->REP0; in LETIMER_RepeatGet()
468 regSync(letimer, LETIMER_SYNCBUSY_REP1); in LETIMER_RepeatGet()
470 ret = letimer->REP1; in LETIMER_RepeatGet()
502 void LETIMER_RepeatSet(LETIMER_TypeDef *letimer, in LETIMER_RepeatSet() argument
506 EFM_ASSERT(LETIMER_REF_VALID(letimer) in LETIMER_RepeatSet()
516 regSync(letimer, LETIMER_SYNCBUSY_REP0); in LETIMER_RepeatSet()
518 letimer->REP0 = value; in LETIMER_RepeatSet()
523 regSync(letimer, LETIMER_SYNCBUSY_REP1); in LETIMER_RepeatSet()
525 letimer->REP1 = value; in LETIMER_RepeatSet()
545 void LETIMER_Reset(LETIMER_TypeDef *letimer) in LETIMER_Reset() argument
548 letimer->EN_SET = LETIMER_EN_EN; in LETIMER_Reset()
550 LETIMER_SyncWait(letimer); in LETIMER_Reset()
553 letimer->SWRST_SET = LETIMER_SWRST_SWRST; in LETIMER_Reset()
554 while (letimer->SWRST & _LETIMER_SWRST_RESETTING_MASK) { in LETIMER_Reset()
560 LETIMER_FreezeEnable(letimer, true); in LETIMER_Reset()
564 letimer->CMD = LETIMER_CMD_STOP | LETIMER_CMD_CLEAR in LETIMER_Reset()
566 letimer->CTRL = _LETIMER_CTRL_RESETVALUE; in LETIMER_Reset()
567 letimer->COMP0 = _LETIMER_COMP0_RESETVALUE; in LETIMER_Reset()
568 letimer->COMP1 = _LETIMER_COMP1_RESETVALUE; in LETIMER_Reset()
569 letimer->REP0 = _LETIMER_REP0_RESETVALUE; in LETIMER_Reset()
570 letimer->REP1 = _LETIMER_REP1_RESETVALUE; in LETIMER_Reset()
571 letimer->IEN = _LETIMER_IEN_RESETVALUE; in LETIMER_Reset()
572 LETIMER_IntClear(letimer, _LETIMER_IF_MASK); in LETIMER_Reset()
576 LETIMER_FreezeEnable(letimer, false); in LETIMER_Reset()
579 LETIMER_SyncWait(letimer); in LETIMER_Reset()
582 letimer->EN_CLR = LETIMER_EN_EN; in LETIMER_Reset()
590 while (letimer->EN & _LETIMER_EN_DISABLING_MASK) { in LETIMER_Reset()
605 void LETIMER_SyncWait(LETIMER_TypeDef *letimer) in LETIMER_SyncWait() argument
608 while ((letimer->EN != 0U) && (letimer->SYNCBUSY != 0U)) { in LETIMER_SyncWait()
612 while (letimer->SYNCBUSY != 0U) { in LETIMER_SyncWait()
637 void LETIMER_TopSet(LETIMER_TypeDef *letimer, uint32_t value) in LETIMER_TopSet() argument
640 regSync(letimer, LETIMER_SYNCBUSY_CTRL); in LETIMER_TopSet()
642 regSync(letimer, LETIMER_SYNCBUSY_TOP); in LETIMER_TopSet()
647 if ((letimer->CTRL & LETIMER_CTRL_CNTTOPEN) == 0U) { in LETIMER_TopSet()
648 letimer->CTRL_SET = LETIMER_CTRL_CNTTOPEN; in LETIMER_TopSet()
650 letimer->TOP = value; in LETIMER_TopSet()
653 if ((letimer->CTRL & LETIMER_CTRL_COMP0TOP) == 0U) { in LETIMER_TopSet()
654 letimer->CTRL |= LETIMER_CTRL_COMP0TOP; in LETIMER_TopSet()
656 LETIMER_CompareSet(letimer, 0, value); in LETIMER_TopSet()
671 uint32_t LETIMER_TopGet(LETIMER_TypeDef *letimer) in LETIMER_TopGet() argument
674 regSync(letimer, LETIMER_SYNCBUSY_TOP); in LETIMER_TopGet()
675 return letimer->TOP; in LETIMER_TopGet()
678 regSync(letimer, LETIMER_SYNCBUSY_COMP0); in LETIMER_TopGet()
680 return letimer->COMP0; in LETIMER_TopGet()