mirror of https://github.com/thesofproject/sof.git
zephyr: move timer domain away from a legacy API
The delayed work API is deprecated, convert to use the replacement delayable work API. Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@linux.intel.com>
This commit is contained in:
parent
f2f75740f5
commit
f8172a9b87
|
@ -68,7 +68,7 @@ struct timer_domain {
|
||||||
|
|
||||||
#ifdef __ZEPHYR__
|
#ifdef __ZEPHYR__
|
||||||
struct timer_zdata {
|
struct timer_zdata {
|
||||||
struct k_delayed_work work;
|
struct k_work_delayable work;
|
||||||
void (*handler)(void *arg);
|
void (*handler)(void *arg);
|
||||||
void *arg;
|
void *arg;
|
||||||
};
|
};
|
||||||
|
@ -103,7 +103,8 @@ static inline void timer_report_delay(int id, uint64_t delay)
|
||||||
#ifdef __ZEPHYR__
|
#ifdef __ZEPHYR__
|
||||||
static void timer_z_handler(struct k_work *work)
|
static void timer_z_handler(struct k_work *work)
|
||||||
{
|
{
|
||||||
struct timer_zdata *zd = CONTAINER_OF(work, struct timer_zdata, work);
|
struct k_work_delayable *dwork = k_work_delayable_from_work(work);
|
||||||
|
struct timer_zdata *zd = CONTAINER_OF(dwork, struct timer_zdata, work);
|
||||||
|
|
||||||
zd->handler(zd->arg);
|
zd->handler(zd->arg);
|
||||||
}
|
}
|
||||||
|
@ -160,8 +161,8 @@ static int timer_domain_register(struct ll_schedule_domain *domain,
|
||||||
|
|
||||||
zdata[core].handler = handler;
|
zdata[core].handler = handler;
|
||||||
zdata[core].arg = arg;
|
zdata[core].arg = arg;
|
||||||
k_work_q_start(&timer_domain->ll_workq[core], stack,
|
k_work_queue_start(&timer_domain->ll_workq[core], stack,
|
||||||
ZEPHYR_LL_WORKQ_SIZE, -CONFIG_NUM_COOP_PRIORITIES);
|
ZEPHYR_LL_WORKQ_SIZE, -CONFIG_NUM_COOP_PRIORITIES, NULL);
|
||||||
|
|
||||||
thread = &timer_domain->ll_workq[core].thread;
|
thread = &timer_domain->ll_workq[core].thread;
|
||||||
|
|
||||||
|
@ -175,7 +176,7 @@ static int timer_domain_register(struct ll_schedule_domain *domain,
|
||||||
|
|
||||||
timer_domain->ll_workq_registered[core] = 1;
|
timer_domain->ll_workq_registered[core] = 1;
|
||||||
|
|
||||||
k_delayed_work_init(&zdata[core].work, timer_z_handler);
|
k_work_init_delayable(&zdata[core].work, timer_z_handler);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
/* tasks already registered on this core */
|
/* tasks already registered on this core */
|
||||||
|
@ -280,15 +281,15 @@ static void timer_domain_set(struct ll_schedule_domain *domain, uint64_t start)
|
||||||
/* using K_CYC(ticks_delta - 885) brings "requested - set" to about 180-700
|
/* using K_CYC(ticks_delta - 885) brings "requested - set" to about 180-700
|
||||||
* cycles, audio sounds very slow and distorted.
|
* cycles, audio sounds very slow and distorted.
|
||||||
*/
|
*/
|
||||||
ret = k_delayed_work_submit_to_queue(&timer_domain->ll_workq[core],
|
ret = k_work_reschedule_for_queue(&timer_domain->ll_workq[core],
|
||||||
&zdata[core].work,
|
&zdata[core].work,
|
||||||
K_CYC(ticks_delta - ZEPHYR_SCHED_COST));
|
K_CYC(ticks_delta - ZEPHYR_SCHED_COST));
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
tr_err(&ll_tr, "queue submission error %d", ret);
|
tr_err(&ll_tr, "queue submission error %d", ret);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ticks_set = k_delayed_work_remaining_ticks(&zdata[core].work) * CYC_PER_TICK +
|
ticks_set = k_work_delayable_remaining_get(&zdata[core].work) * CYC_PER_TICK +
|
||||||
current - current % CYC_PER_TICK;
|
current - current % CYC_PER_TICK;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue