mirror of
https://gitee.com/Vancouver2017/luban-lite-t3e-pro.git
synced 2025-12-14 10:28:54 +00:00
71 lines
1.1 KiB
C
71 lines
1.1 KiB
C
/*
|
|
* Copyright (c) 2022, Artinchip Technology Co., Ltd
|
|
*
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
#include <aic_core.h>
|
|
#include "sys_freq.h"
|
|
|
|
void aic_udelay(u32 us)
|
|
{
|
|
u64 start = aic_get_ticks();
|
|
u32 cnt = us * (drv_get_sys_freq() / 1000000U);
|
|
|
|
while (1) {
|
|
u64 cur = aic_get_ticks();
|
|
|
|
if (start > cur) {
|
|
if ((start - cur) >= cnt)
|
|
break;
|
|
} else {
|
|
if (cur - start >= cnt)
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
void aic_mdelay(u32 ms)
|
|
{
|
|
aic_udelay(ms * 1000);
|
|
}
|
|
|
|
u64 aic_get_ticks(void)
|
|
{
|
|
return (((u64)csi_coret_get_valueh() << 32U) | csi_coret_get_value());
|
|
}
|
|
|
|
u64 aic_get_time_us(void)
|
|
{
|
|
u64 cnt = (drv_get_sys_freq() / 1000000U);
|
|
|
|
return (aic_get_ticks() / cnt);
|
|
}
|
|
|
|
u64 aic_get_time_ms(void)
|
|
{
|
|
return aic_get_time_us() / 1000;
|
|
}
|
|
|
|
u64 aic_get_time_us64(void)
|
|
{
|
|
u64 us_cnt = drv_get_sys_freq() / 1000000U;
|
|
|
|
return (u64)(aic_get_ticks() / us_cnt);;
|
|
}
|
|
|
|
u64 aic_get_time_ms64(void)
|
|
{
|
|
return aic_get_time_us64() / 1000;
|
|
}
|
|
|
|
#ifdef KERNEL_RTTHREAD
|
|
#include <rtthread.h>
|
|
|
|
void rt_hw_us_delay(rt_uint32_t us)
|
|
{
|
|
aic_udelay(us);
|
|
}
|
|
#endif
|
|
|