Update HAL code to resolve ticker lockup issue

pull/5523/head
Yuguo Zou 2017-11-07 17:02:42 +08:00 committed by adbridge
parent 44fc3313d1
commit d56959acf5
5 changed files with 12 additions and 7 deletions

View File

@ -94,6 +94,11 @@ HalTimerReadCountRtl8195a_Patch(
IN u32 TimerId
);
VOID
HalTimerSync(
IN u32 TimerId
);
VOID
HalTimerIrqEnRtl8195a(
IN u32 TimerId

View File

@ -53,9 +53,10 @@ typedef struct _HAL_TIMER_OP_ {
}HAL_TIMER_OP, *PHAL_TIMER_OP;
typedef struct _HAL_TIMER_OP_EXT_ {
PHAL_TIMER_OP phal_timer_op_rom;
VOID (*HalTimerIrqEn)(u32 TimerId);
VOID (*HalTimerReLoad)(u32 TimerId, u32 LoadUs);
PHAL_TIMER_OP phal_timer_op_rom;
VOID (*HalTimerIrqEn)(u32 TimerId);
VOID (*HalTimerReLoad)(u32 TimerId, u32 LoadUs);
VOID (*HalTimerSync)(u32 TimerId);
}HAL_TIMER_OP_EXT, *PHAL_TIMER_OP_EXT;
#ifdef CONFIG_TIMER_MODULE

View File

@ -75,16 +75,13 @@ void us_ticker_init(void)
uint32_t us_ticker_read(void)
{
uint32_t tick_cnt;
uint64_t tick_us;
if (!us_ticker_inited) {
us_ticker_init();
}
tick_cnt = HalTimerOp.HalTimerReadCount(SYS_TIM_ID);
tick_us = TICK_TO_US(0xFFFFFFFFUL - tick_cnt);
return ((uint32_t)tick_us); //return ticker value in micro-seconds (us)
return (uint32_t)TICK_TO_US(0xFFFFFFFFUL - tick_cnt);
}
void us_ticker_set_interrupt(timestamp_t timestamp)
@ -100,6 +97,7 @@ void us_ticker_set_interrupt(timestamp_t timestamp)
HalTimerOp.HalTimerDis((u32)TimerAdapter.TimerId);
HalTimerOpExt.HalTimerReLoad((u32)TimerAdapter.TimerId, TimerAdapter.TimerLoadValueUs);
HalTimerOpExt.HalTimerSync(SYS_TIM_ID);
HalTimerOp.HalTimerEn((u32)TimerAdapter.TimerId);
}
@ -109,6 +107,7 @@ void us_ticker_fire_interrupt(void)
HalTimerOp.HalTimerDis((u32)TimerAdapter.TimerId);
HalTimerOpExt.HalTimerReLoad((u32)TimerAdapter.TimerId, TimerAdapter.TimerLoadValueUs);
HalTimerOpExt.HalTimerSync(SYS_TIM_ID);
HalTimerOp.HalTimerEn((u32)TimerAdapter.TimerId);
}