Lines Matching refs:base

56 static uint8_t SFA_GetInstance(SFA_Type *base);
68 static void SFA_StartMeasureFrequency(SFA_Type *base);
78 static void SFA_StartMeasurePeriod(SFA_Type *base);
90 static uint32_t SFA_Mode0Calculate(SFA_Type *base, uint32_t refFrequency);
102 static uint32_t SFA_Mode1Calculate(SFA_Type *base, uint32_t refFrequency);
114 static uint32_t SFA_Mode2Mode3Calculate(SFA_Type *base);
126 static status_t SFA_MeasureFrequencyBlocking(SFA_Type *base, sfa_measurement_mode_t mode);
136 static status_t SFA_MeasurePeriodBlocking(SFA_Type *base);
155 static uint8_t SFA_GetInstance(SFA_Type *base) in SFA_GetInstance() argument
172 if (s_sfaBases[instance] == base) in SFA_GetInstance()
183 static void SFA_StartMeasureFrequency(SFA_Type *base) in SFA_StartMeasureFrequency() argument
193 if (1 == FSL_FEATURE_SFA_INSTANCE_HAS_TRIGGERn(base)) in SFA_StartMeasureFrequency()
199 triggerable = ((base->CTRL & SFA_CTRL_SFA_TRIG_MEAS_EN_MASK) != 0U); in SFA_StartMeasureFrequency()
203 (*(volatile uint32_t *)&(base->REF_CNT)) = 0U; /* Dummy write to REF counter. */ in SFA_StartMeasureFrequency()
210 while ((base->CNT_STAT & SFA_CNT_STAT_CUT_STOPPED_MASK) != 0U) in SFA_StartMeasureFrequency()
220 (*(volatile uint32_t *)&(base->CUT_CNT)) = 0U; /* Dummy write to CUT counter. */ in SFA_StartMeasureFrequency()
221 while (0U == (base->CNT_STAT & SFA_CNT_STAT_MEAS_STARTED_MASK)) in SFA_StartMeasureFrequency()
228 static void SFA_StartMeasurePeriod(SFA_Type *base) in SFA_StartMeasurePeriod() argument
230 (*(volatile uint32_t *)&(base->REF_CNT)) = 0U; /* Dummy write to REF counter. */ in SFA_StartMeasurePeriod()
235 while ((base->CNT_STAT & SFA_CNT_STAT_CUT_STOPPED_MASK) != 0U) in SFA_StartMeasurePeriod()
240 while (0U == (base->CNT_STAT & SFA_CNT_STAT_MEAS_STARTED_MASK)) in SFA_StartMeasurePeriod()
246 static uint32_t SFA_Mode0Calculate(SFA_Type *base, uint32_t refFrequency) in SFA_Mode0Calculate() argument
251 prediv = SFA_GetCUTPredivide(base); in SFA_Mode0Calculate()
252 frequency = ((uint64_t)SFA_GetCUTCounter(base) - 1ULL) * (uint64_t)refFrequency; in SFA_Mode0Calculate()
253 frequency += (((uint64_t)SFA_GetREFEndCount(base) - (uint64_t)SFA_GetREFStartCount(base))) >> 1; in SFA_Mode0Calculate()
254 frequency /= ((uint64_t)SFA_GetREFEndCount(base) - (uint64_t)SFA_GetREFStartCount(base)); in SFA_Mode0Calculate()
263 static uint32_t SFA_Mode1Calculate(SFA_Type *base, uint32_t refFrequency) in SFA_Mode1Calculate() argument
268 prediv = SFA_GetCUTPredivide(base); in SFA_Mode1Calculate()
269 frequency = ((uint64_t)SFA_GetCUTCounter(base) - 1ULL) * (uint64_t)refFrequency; in SFA_Mode1Calculate()
270 frequency /= (uint64_t)SFA_GetREFTargetCount(base); in SFA_Mode1Calculate()
279 static uint32_t SFA_Mode2Mode3Calculate(SFA_Type *base) in SFA_Mode2Mode3Calculate() argument
284 prediv = SFA_GetCUTPredivide(base); in SFA_Mode2Mode3Calculate()
285 count = SFA_GetREFEndCount(base) - SFA_GetREFStartCount(base); in SFA_Mode2Mode3Calculate()
294 static status_t SFA_MeasureFrequencyBlocking(SFA_Type *base, sfa_measurement_mode_t mode) in SFA_MeasureFrequencyBlocking() argument
300 while (((base->CNT_STAT & SFA_CNT_STAT_REF_STOPPED_MASK) == 0U) || in SFA_MeasureFrequencyBlocking()
301 ((base->CNT_STAT & SFA_CNT_STAT_CUT_STOPPED_MASK) == 0U)) in SFA_MeasureFrequencyBlocking()
305 if ((base->CNT_STAT & SFA_CNT_STAT_REF_CNT_TIMEOUT_MASK) != 0U) in SFA_MeasureFrequencyBlocking()
318 while (0U == (base->CNT_STAT & SFA_CNT_STAT_CUT_STOPPED_MASK)) in SFA_MeasureFrequencyBlocking()
322 if ((base->CUT_CNT) < (base->CUT_TARGET)) in SFA_MeasureFrequencyBlocking()
335 static status_t SFA_MeasurePeriodBlocking(SFA_Type *base) in SFA_MeasurePeriodBlocking() argument
339 while (0U == (base->CNT_STAT & SFA_CNT_STAT_REF_STOPPED_MASK)) in SFA_MeasurePeriodBlocking()
343 if ((base->CNT_STAT & SFA_CNT_STAT_REF_CNT_TIMEOUT_MASK) != 0U) in SFA_MeasurePeriodBlocking()
365 void SFA_ClearStatusFlag(SFA_Type *base, uint32_t mask) in SFA_ClearStatusFlag() argument
368 base->CNT_STAT = in SFA_ClearStatusFlag()
376 (*(volatile uint32_t *)&(base->REF_CNT)) = 0U; in SFA_ClearStatusFlag()
426 void SFA_Init(SFA_Type *base) in SFA_Init() argument
429 CLOCK_EnableClock(s_sfaClocks[SFA_GetInstance(base)]); in SFA_Init()
433 (*(volatile uint32_t *)&(base->REF_CNT)) = 0U; in SFA_Init()
441 void SFA_Deinit(SFA_Type *base) in SFA_Deinit() argument
443 …(*(volatile uint32_t *)&(base->REF_CNT)) = 0U; /* Dummy write REF counter to clear flags and count… in SFA_Deinit()
444 while ((base->CNT_STAT & SFA_CNT_STAT_CUT_STOPPED_MASK) != 0U) in SFA_Deinit()
448 base->CTRL &= ~SFA_CTRL_SFA_EN_MASK; in SFA_Deinit()
451 CLOCK_DisableClock(s_sfaClocks[SFA_GetInstance(base)]); in SFA_Deinit()
461 void SFA_SetMeasureConfig(SFA_Type *base, const sfa_config_t *config) in SFA_SetMeasureConfig() argument
464 assert(((1 != FSL_FEATURE_SFA_CTRL_HAS_CUT_PIN_ENn(base)) && in SFA_SetMeasureConfig()
466 (1 == FSL_FEATURE_SFA_CTRL_HAS_CUT_PIN_ENn(base))); in SFA_SetMeasureConfig()
467 …assert(((1 != FSL_FEATURE_SFA_INSTANCE_HAS_TRIGGERn(base)) && (config->mode < kSFA_TriggerBasedMea… in SFA_SetMeasureConfig()
468 (1 == FSL_FEATURE_SFA_INSTANCE_HAS_TRIGGERn(base))); in SFA_SetMeasureConfig()
475 base->CTRL_EXT |= SFA_CUT_CLK_Enable(config->cutSelect); in SFA_SetMeasureConfig()
478base->CTRL2 = (base->CTRL2 & ~SFA_CTRL2_REF_CLK_SEL_MASK) | SFA_CTRL2_REF_CLK_SEL(config->refSelec… in SFA_SetMeasureConfig()
483 base->CTRL_EXT |= SFA_CTRL_EXT_CUT_PIN_EN_MASK; in SFA_SetMeasureConfig()
490 if (1 == FSL_FEATURE_SFA_CTRL_HAS_CUT_PIN_ENn(base)) in SFA_SetMeasureConfig()
492 base->CTRL |= SFA_CTRL_CUT_PIN_EN_MASK; in SFA_SetMeasureConfig()
498 base->CTRL_EXT &= ~SFA_CTRL_EXT_CUT_PIN_EN_MASK; in SFA_SetMeasureConfig()
505 if (1 == FSL_FEATURE_SFA_CTRL_HAS_CUT_PIN_ENn(base)) in SFA_SetMeasureConfig()
507 base->CTRL &= ~SFA_CTRL_CUT_PIN_EN_MASK; in SFA_SetMeasureConfig()
512 base->CTRL &= ~SFA_CTRL_SFA_EN_MASK; in SFA_SetMeasureConfig()
518 base->CTRL = in SFA_SetMeasureConfig()
527 if (1 == FSL_FEATURE_SFA_INSTANCE_HAS_TRIGGERn(base)) in SFA_SetMeasureConfig()
535 base->CTRL |= SFA_CTRL_SFA_TRIG_MEAS_EN_MASK; in SFA_SetMeasureConfig()
536 base->CTRL |= in SFA_SetMeasureConfig()
541 base->CTRL &= ~SFA_CTRL_SFA_TRIG_MEAS_EN_MASK; in SFA_SetMeasureConfig()
545 base->CTRL |= SFA_CTRL_SFA_EN_MASK; in SFA_SetMeasureConfig()
547 SFA_SetCUTTargetCount(base, config->cutTarget); in SFA_SetMeasureConfig()
548 SFA_SetREFTargetCount(base, config->refTarget); in SFA_SetMeasureConfig()
553 base->CTRL = in SFA_SetMeasureConfig()
556 base->CTRL |= SFA_CTRL_SFA_EN_MASK; in SFA_SetMeasureConfig()
558 SFA_SetREFTargetCount(base, config->refTarget); in SFA_SetMeasureConfig()
564 base->CTRL = SFA_CTRL_MODE(config->mode) | SFA_CTRL_TRIG_START_SEL(config->trigStart) | in SFA_SetMeasureConfig()
568 base->CTRL |= SFA_CTRL_SFA_EN_MASK; in SFA_SetMeasureConfig()
570 SFA_SetREFTargetCount(base, config->refTarget); in SFA_SetMeasureConfig()
586 void SFA_InstallCallback(SFA_Type *base, sfa_callback_t function) in SFA_InstallCallback() argument
589 assert(1 == FSL_FEATURE_SFA_INSTANCE_HAS_INTERRUPTn(base)); in SFA_InstallCallback()
593 instance = SFA_GetInstance(base); in SFA_InstallCallback()
613 status_t SFA_MeasureBlocking(SFA_Type *base) in SFA_MeasureBlocking() argument
618 mode = (sfa_measurement_mode_t)SFA_GetMode(base); in SFA_MeasureBlocking()
622 SFA_StartMeasureFrequency(base); in SFA_MeasureBlocking()
623 status = SFA_MeasureFrequencyBlocking(base, mode); in SFA_MeasureBlocking()
631 SFA_StartMeasurePeriod(base); in SFA_MeasureBlocking()
632 status = SFA_MeasurePeriodBlocking(base); in SFA_MeasureBlocking()
651 void SFA_MeasureNonBlocking(SFA_Type *base) in SFA_MeasureNonBlocking() argument
653 assert(1 == FSL_FEATURE_SFA_INSTANCE_HAS_INTERRUPTn(base)); in SFA_MeasureNonBlocking()
657 mode = (sfa_measurement_mode_t)SFA_GetMode(base); in SFA_MeasureNonBlocking()
659 SFA_EnableInterrupts(base, (uint32_t)kSFA_InterruptEnable); in SFA_MeasureNonBlocking()
663 SFA_StartMeasureFrequency(base); in SFA_MeasureNonBlocking()
671 SFA_StartMeasurePeriod(base); in SFA_MeasureNonBlocking()
686 void SFA_AbortMeasureSequence(SFA_Type *base) in SFA_AbortMeasureSequence() argument
689 (*(volatile uint32_t *)&(base->REF_CNT)) = 0U; in SFA_AbortMeasureSequence()
690 base->CTRL &= ~SFA_CTRL_SFA_EN_MASK; in SFA_AbortMeasureSequence()
705 uint32_t SFA_CalculateFrequencyOrPeriod(SFA_Type *base, uint32_t refFrequency) in SFA_CalculateFrequencyOrPeriod() argument
710 mode = (sfa_measurement_mode_t)SFA_GetMode(base); in SFA_CalculateFrequencyOrPeriod()
719 result = SFA_Mode0Calculate(base, refFrequency); in SFA_CalculateFrequencyOrPeriod()
724 result = SFA_Mode1Calculate(base, refFrequency); in SFA_CalculateFrequencyOrPeriod()
730 result = SFA_Mode2Mode3Calculate(base); in SFA_CalculateFrequencyOrPeriod()
752 static void SFA_CommonIRQHandler(SFA_Type *base) in SFA_CommonIRQHandler() argument
759 instance = (uint8_t)SFA_GetInstance(base); in SFA_CommonIRQHandler()
760 flags = SFA_GetStatusFlags(base); in SFA_CommonIRQHandler()
766 mode = (sfa_measurement_mode_t)SFA_GetMode(base); in SFA_CommonIRQHandler()
768 SFA_ClearStatusFlag(base, (uint32_t)kSFA_InterruptRequestFlag); in SFA_CommonIRQHandler()
769 SFA_DisableInterrupts(base, (uint32_t)kSFA_InterruptEnable); in SFA_CommonIRQHandler()
809 if (SFA_GetCUTCounter(base) >= SFA_GetCUTTargetCount(base)) in SFA_CommonIRQHandler()
843 SFA_ClearStatusFlag(base, (uint32_t)kSFA_FreqLessThanMinInterruptFlag); in SFA_CommonIRQHandler()
844 SFA_DisableInterrupts(base, (uint32_t)kSFA_FreqLessThanMinInterruptEnable); in SFA_CommonIRQHandler()
853 SFA_ClearStatusFlag(base, (uint32_t)kSFA_FreqGreaterThanMaxInterruptFlag); in SFA_CommonIRQHandler()
854 SFA_DisableInterrupts(base, (uint32_t)kSFA_FreqGreaterThanMaxInterruptEnable); in SFA_CommonIRQHandler()