util: Utilize BPMP sleep when usleep is out of bounds
This commit is contained in:
@@ -61,8 +61,12 @@ void usleep(u32 us)
|
|||||||
{
|
{
|
||||||
#ifdef USE_RTC_TIMER
|
#ifdef USE_RTC_TIMER
|
||||||
u32 start = TMR(TIMERUS_CNTR_1US);
|
u32 start = TMR(TIMERUS_CNTR_1US);
|
||||||
// Casting to u32 is important!
|
|
||||||
while ((u32)(TMR(TIMERUS_CNTR_1US) - start) <= us)
|
// Check if timer is at upper limits and use BPMP sleep so it doesn't wake up immediately.
|
||||||
|
if ((start + us) < start)
|
||||||
|
bpmp_usleep(us);
|
||||||
|
else
|
||||||
|
while ((u32)(TMR(TIMERUS_CNTR_1US) - start) <= us) // Casting to u32 is important!
|
||||||
;
|
;
|
||||||
#else
|
#else
|
||||||
bpmp_usleep(us);
|
bpmp_usleep(us);
|
||||||
|
|||||||
@@ -60,8 +60,12 @@ void usleep(u32 us)
|
|||||||
{
|
{
|
||||||
#ifdef USE_RTC_TIMER
|
#ifdef USE_RTC_TIMER
|
||||||
u32 start = TMR(TIMERUS_CNTR_1US);
|
u32 start = TMR(TIMERUS_CNTR_1US);
|
||||||
// Casting to u32 is important!
|
|
||||||
while ((u32)(TMR(TIMERUS_CNTR_1US) - start) <= us)
|
// Check if timer is at upper limits and use BPMP sleep so it doesn't wake up immediately.
|
||||||
|
if ((start + us) < start)
|
||||||
|
bpmp_usleep(us);
|
||||||
|
else
|
||||||
|
while ((u32)(TMR(TIMERUS_CNTR_1US) - start) <= us) // Casting to u32 is important!
|
||||||
;
|
;
|
||||||
#else
|
#else
|
||||||
bpmp_usleep(us);
|
bpmp_usleep(us);
|
||||||
|
|||||||
Reference in New Issue
Block a user