Files
luban-lite-t3e-pro/bsp/artinchip/sys/d13x/time.c

78 lines
1.2 KiB
C
Raw Normal View History

2023-08-30 16:21:18 +08:00
/*
2024-09-03 11:16:08 +08:00
* Copyright (c) 2022-2024, ArtInChip Technology Co., Ltd
2023-08-30 16:21:18 +08:00
*
* 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)
{
2024-09-03 11:16:08 +08:00
u32 hi, lo;
do {
hi = csi_coret_get_valueh();
lo = csi_coret_get_value();
} while (hi != csi_coret_get_valueh());
return ((u64)hi << 32) | lo;
2023-08-30 16:21:18 +08:00
}
2023-11-30 19:48:02 +08:00
u64 aic_get_time_us(void)
2023-08-30 16:21:18 +08:00
{
2023-11-30 19:48:02 +08:00
u64 cnt = (drv_get_sys_freq() / 1000000U);
2023-08-30 16:21:18 +08:00
2023-11-30 19:48:02 +08:00
return (aic_get_ticks() / cnt);
2023-08-30 16:21:18 +08:00
}
2023-11-30 19:48:02 +08:00
u64 aic_get_time_ms(void)
2023-08-30 16:21:18 +08:00
{
return aic_get_time_us() / 1000;
}
2023-11-09 20:19:51 +08:00
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;
}
2023-08-30 16:21:18 +08:00
#ifdef KERNEL_RTTHREAD
#include <rtthread.h>
void rt_hw_us_delay(rt_uint32_t us)
{
aic_udelay(us);
}
#endif