mirror of https://github.com/ARMmbed/mbed-os.git
Update HAL code to resolve ticker lockup issue
parent
44fc3313d1
commit
d56959acf5
Binary file not shown.
Binary file not shown.
|
@ -94,6 +94,11 @@ HalTimerReadCountRtl8195a_Patch(
|
||||||
IN u32 TimerId
|
IN u32 TimerId
|
||||||
);
|
);
|
||||||
|
|
||||||
|
VOID
|
||||||
|
HalTimerSync(
|
||||||
|
IN u32 TimerId
|
||||||
|
);
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
HalTimerIrqEnRtl8195a(
|
HalTimerIrqEnRtl8195a(
|
||||||
IN u32 TimerId
|
IN u32 TimerId
|
||||||
|
|
|
@ -53,9 +53,10 @@ typedef struct _HAL_TIMER_OP_ {
|
||||||
}HAL_TIMER_OP, *PHAL_TIMER_OP;
|
}HAL_TIMER_OP, *PHAL_TIMER_OP;
|
||||||
|
|
||||||
typedef struct _HAL_TIMER_OP_EXT_ {
|
typedef struct _HAL_TIMER_OP_EXT_ {
|
||||||
PHAL_TIMER_OP phal_timer_op_rom;
|
PHAL_TIMER_OP phal_timer_op_rom;
|
||||||
VOID (*HalTimerIrqEn)(u32 TimerId);
|
VOID (*HalTimerIrqEn)(u32 TimerId);
|
||||||
VOID (*HalTimerReLoad)(u32 TimerId, u32 LoadUs);
|
VOID (*HalTimerReLoad)(u32 TimerId, u32 LoadUs);
|
||||||
|
VOID (*HalTimerSync)(u32 TimerId);
|
||||||
}HAL_TIMER_OP_EXT, *PHAL_TIMER_OP_EXT;
|
}HAL_TIMER_OP_EXT, *PHAL_TIMER_OP_EXT;
|
||||||
|
|
||||||
#ifdef CONFIG_TIMER_MODULE
|
#ifdef CONFIG_TIMER_MODULE
|
||||||
|
|
|
@ -75,16 +75,13 @@ void us_ticker_init(void)
|
||||||
uint32_t us_ticker_read(void)
|
uint32_t us_ticker_read(void)
|
||||||
{
|
{
|
||||||
uint32_t tick_cnt;
|
uint32_t tick_cnt;
|
||||||
uint64_t tick_us;
|
|
||||||
|
|
||||||
if (!us_ticker_inited) {
|
if (!us_ticker_inited) {
|
||||||
us_ticker_init();
|
us_ticker_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
tick_cnt = HalTimerOp.HalTimerReadCount(SYS_TIM_ID);
|
tick_cnt = HalTimerOp.HalTimerReadCount(SYS_TIM_ID);
|
||||||
tick_us = TICK_TO_US(0xFFFFFFFFUL - tick_cnt);
|
return (uint32_t)TICK_TO_US(0xFFFFFFFFUL - tick_cnt);
|
||||||
|
|
||||||
return ((uint32_t)tick_us); //return ticker value in micro-seconds (us)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void us_ticker_set_interrupt(timestamp_t timestamp)
|
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);
|
HalTimerOp.HalTimerDis((u32)TimerAdapter.TimerId);
|
||||||
HalTimerOpExt.HalTimerReLoad((u32)TimerAdapter.TimerId, TimerAdapter.TimerLoadValueUs);
|
HalTimerOpExt.HalTimerReLoad((u32)TimerAdapter.TimerId, TimerAdapter.TimerLoadValueUs);
|
||||||
|
HalTimerOpExt.HalTimerSync(SYS_TIM_ID);
|
||||||
HalTimerOp.HalTimerEn((u32)TimerAdapter.TimerId);
|
HalTimerOp.HalTimerEn((u32)TimerAdapter.TimerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,6 +107,7 @@ void us_ticker_fire_interrupt(void)
|
||||||
|
|
||||||
HalTimerOp.HalTimerDis((u32)TimerAdapter.TimerId);
|
HalTimerOp.HalTimerDis((u32)TimerAdapter.TimerId);
|
||||||
HalTimerOpExt.HalTimerReLoad((u32)TimerAdapter.TimerId, TimerAdapter.TimerLoadValueUs);
|
HalTimerOpExt.HalTimerReLoad((u32)TimerAdapter.TimerId, TimerAdapter.TimerLoadValueUs);
|
||||||
|
HalTimerOpExt.HalTimerSync(SYS_TIM_ID);
|
||||||
HalTimerOp.HalTimerEn((u32)TimerAdapter.TimerId);
|
HalTimerOp.HalTimerEn((u32)TimerAdapter.TimerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue