work: fix to the previous change for ASYNC tasks

Fixes previous change for ASYNC tasks.
By mistake it didn't take into account provided timeout.

Signed-off-by: Tomasz Lauda <tomasz.lauda@linux.intel.com>
This commit is contained in:
Tomasz Lauda 2019-01-23 15:36:14 +01:00 committed by Liam Girdwood
parent e5bc088e04
commit 8134a46705
1 changed files with 8 additions and 8 deletions

View File

@ -378,14 +378,13 @@ void work_schedule(struct work_queue *queue, struct work *w, uint64_t timeout)
goto out; goto out;
} }
w->timeout = queue->ticks_per_msec * timeout / 1000;
/* convert timeout micro seconds to CPU clock ticks */ /* convert timeout micro seconds to CPU clock ticks */
if (w->flags & WORK_SYNC) if (w->flags & WORK_SYNC)
w->timeout = w->timeout += work_get_timer(queue);
queue_calc_next_timeout(queue, work_get_timer(queue));
else else
w->timeout = w->timeout += work_shared_ctx->last_tick;
queue_calc_next_timeout(queue,
work_shared_ctx->last_tick);
/* insert work into list */ /* insert work into list */
list_item_prepend(&w->list, &queue->work); list_item_prepend(&w->list, &queue->work);
@ -434,12 +433,13 @@ void work_reschedule(struct work_queue *queue, struct work *w, uint64_t timeout)
{ {
uint64_t time; uint64_t time;
time = queue->ticks_per_msec * timeout / 1000;
/* convert timeout micro seconds to CPU clock ticks */ /* convert timeout micro seconds to CPU clock ticks */
if (w->flags & WORK_SYNC) if (w->flags & WORK_SYNC)
time = queue_calc_next_timeout(queue, work_get_timer(queue)); time += work_get_timer(queue);
else else
time = queue_calc_next_timeout(queue, time += work_shared_ctx->last_tick;
work_shared_ctx->last_tick);
reschedule(queue, w, time); reschedule(queue, w, time);
} }