Sound Open Firmware
Loading...
Searching...
No Matches
ll_schedule_domain.h File Reference

Low-Latency (LL) scheduling domain architecture, timer/DMA drivers, and core domain operations. More...

Include dependency graph for ll_schedule_domain.h:

Go to the source code of this file.

Data Structures

struct  ll_schedule_domain_ops
 Low-Latency schedule domain operations table. More...
 
struct  ll_schedule_domain
 Low-Latency scheduling domain instance descriptor. More...
 

Macros

#define LL_TIMER_PERIOD_US   1000ULL
 Default Low-Latency timer scheduling period in microseconds (1000us / 1ms).
 
#define LL_WATCHDOG_TIMEOUT_US   (2 * LL_TIMER_PERIOD_US)
 Default Low-Latency watchdog timeout in microseconds.
 
#define ll_sch_domain_set_pdata(domain, data)   ((domain)->priv_data = (data))
 Set the private data pointer of a Low-Latency scheduling domain.
 
#define ll_sch_domain_get_pdata(domain)   ((domain)->priv_data)
 Retrieve the private data pointer of a Low-Latency scheduling domain.
 
#define timer_domain_init(timer, clk)   zephyr_domain_init(clk)
 

Functions

static struct ll_schedule_domain * timer_domain_get (void)
 Get the primary platform timer scheduling domain.
 
static struct ll_schedule_domain * dma_domain_get (void)
 Get the primary platform DMA scheduling domain.
 
static struct ll_schedule_domain * domain_init (int type, int clk, bool synchronous, const struct ll_schedule_domain_ops *ops)
 Initialize a Low-Latency scheduling domain descriptor.
 
static void domain_set (struct ll_schedule_domain *domain, uint64_t start)
 Configure the next interrupt or tick timestamp for the domain.
 
static void domain_clear (struct ll_schedule_domain *domain)
 Clear/disarm the interrupt tick for the domain.
 
static void domain_task_cancel (struct ll_schedule_domain *domain, struct task *task)
 Notify the domain that a task has been cancelled.
 
static int domain_register (struct ll_schedule_domain *domain, struct task *task, void(*handler)(void *arg), void *arg)
 Register a real-time task with the scheduling domain.
 
static void domain_unregister (struct ll_schedule_domain *domain, struct task *task, uint32_t num_tasks)
 Unregister a real-time task from the scheduling domain.
 
static void domain_enable (struct ll_schedule_domain *domain, int core)
 Enable Low-Latency scheduling domain execution on the specified core.
 
static void domain_disable (struct ll_schedule_domain *domain, int core)
 Disable Low-Latency scheduling domain execution on the specified core.
 
static bool domain_is_pending (struct ll_schedule_domain *domain, struct task *task, struct comp_dev **comp)
 Query whether a task in the domain has pending execution work.
 
struct ll_schedule_domain * zephyr_ll_domain (void)
 Retrieve the global Low-Latency timer scheduling domain descriptor on Zephyr.
 
struct ll_schedule_domain * zephyr_domain_init (int clk)
 Initialize the primary timer-driven Low-Latency scheduling domain on Zephyr.
 
int zephyr_ll_task_sem_alloc (struct task *task)
 Allocate a completion semaphore for a Low-Latency task.
 
int zephyr_ll_task_sem_free (struct task *task)
 Free a completion semaphore for a Low-Latency task.
 
struct ll_schedule_domain * dma_multi_chan_domain_init (struct dma *dma_array, uint32_t num_dma, int clk, bool aggregated_irq)
 Initialize multi-channel DMA scheduling domain.
 
struct ll_schedule_domain * dma_single_chan_domain_init (struct dma *dma_array, uint32_t num_dma, int clk)
 Initialize single-channel DMA scheduling domain.
 

Detailed Description

Low-Latency (LL) scheduling domain architecture, timer/DMA drivers, and core domain operations.