mirror of https://github.com/ARMmbed/mbed-os.git
[BEETLE] Update disable dualtimer irq function
This patch updates DualTimer_DisableInterrupt to disable the interrupt timers individually. In addition, it updates lp_ticker accordingly. Signed-off-by: Marc Moreno <marc.morenoberengue@arm.com>pull/3046/head
parent
e2efb35723
commit
a3eacfd8d1
|
@ -297,18 +297,38 @@ void DualTimer_SetInterrupt_2(uint32_t timer, uint32_t time_us,
|
|||
}
|
||||
|
||||
/*
|
||||
* DualTimer_DisableInterrupt(): disables timer interrupt
|
||||
* timer: timer on which interrupt is disabled
|
||||
* DualTimer_DisableInterrupt(): disables timer interrupts
|
||||
* dualimer: dualtimer on which interrupt is disabled
|
||||
* single_timer: single timer in the dualtimer on which
|
||||
* interrupt is disabled
|
||||
*/
|
||||
void DualTimer_DisableInterrupt(uint32_t timer)
|
||||
void DualTimer_DisableInterrupt(uint32_t dualtimer,
|
||||
uint32_t single_timer)
|
||||
{
|
||||
/* Verify if the Timer is enabled */
|
||||
if (DualTimer_isEnabled(timer) == 1) {
|
||||
/* Disable Interrupt */
|
||||
(DualTimers[timer].dualtimer1)->TimerControl &=
|
||||
CMSDK_DUALTIMER_CTRL_EN_Msk;
|
||||
(DualTimers[timer].dualtimer2)->TimerControl &=
|
||||
CMSDK_DUALTIMER_CTRL_EN_Msk;
|
||||
if (DualTimer_isEnabled(dualtimer) == 1) {
|
||||
switch(single_timer) {
|
||||
case SINGLETIMER1:
|
||||
/* Disable Interrupt for single timer 1 */
|
||||
(DualTimers[dualtimer].dualtimer1)->TimerControl &=
|
||||
CMSDK_DUALTIMER_CTRL_EN_Msk;
|
||||
break;
|
||||
case SINGLETIMER2:
|
||||
/* Disable Interrupt for single timer 2 */
|
||||
(DualTimers[dualtimer].dualtimer2)->TimerControl &=
|
||||
CMSDK_DUALTIMER_CTRL_EN_Msk;
|
||||
break;
|
||||
case ALL_SINGLETIMERS:
|
||||
/* Disable Interrupt for single timer 1 */
|
||||
(DualTimers[dualtimer].dualtimer1)->TimerControl &=
|
||||
CMSDK_DUALTIMER_CTRL_EN_Msk;
|
||||
/* Disable Interrupt for single timer 2 */
|
||||
(DualTimers[dualtimer].dualtimer2)->TimerControl &=
|
||||
CMSDK_DUALTIMER_CTRL_EN_Msk;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -22,10 +22,11 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
/* Supported Number of Dual Timers */
|
||||
#define NUM_DUALTIMERS 1
|
||||
#define DUALTIMER0 0
|
||||
#define SINGLETIMER1 1
|
||||
#define SINGLETIMER2 2
|
||||
#define NUM_DUALTIMERS 1
|
||||
#define DUALTIMER0 0
|
||||
#define SINGLETIMER1 1
|
||||
#define SINGLETIMER2 2
|
||||
#define ALL_SINGLETIMERS 3
|
||||
|
||||
/*
|
||||
* DualTimer_Initialize(): Initializes a hardware timer
|
||||
|
@ -107,10 +108,13 @@ void DualTimer_SetInterrupt_2(uint32_t timer, uint32_t time_us,
|
|||
timerenable_t mode);
|
||||
|
||||
/*
|
||||
* DualTimer_DisableInterrupt(): disables timer interrupt
|
||||
* timer: timer on which interrupt is disabled
|
||||
* DualTimer_DisableInterrupt(): disables timer interrupts
|
||||
* dualimer: dualtimer on which interrupt is disabled
|
||||
* single_timer: single timer in the dualtimer on which
|
||||
* interrupt is disabled
|
||||
*/
|
||||
void DualTimer_DisableInterrupt(uint32_t timer);
|
||||
void DualTimer_DisableInterrupt(uint32_t dualtimer,
|
||||
uint32_t single_timer);
|
||||
|
||||
/*
|
||||
* DualTimer_ClearInterrupt(): clear timer interrupt
|
||||
|
|
|
@ -142,7 +142,8 @@ void lp_ticker_set_interrupt(timestamp_t timestamp)
|
|||
void lp_ticker_disable_interrupt(void)
|
||||
{
|
||||
/* Disable Interrupt */
|
||||
DualTimer_DisableInterrupt(DUALTIMER0);
|
||||
DualTimer_DisableInterrupt(DUALTIMER0,
|
||||
SINGLETIMER1);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue