Lines Matching refs:q
36 void cx18_queue_init(struct cx18_queue *q) in cx18_queue_init() argument
38 INIT_LIST_HEAD(&q->list); in cx18_queue_init()
39 atomic_set(&q->depth, 0); in cx18_queue_init()
40 q->bytesused = 0; in cx18_queue_init()
44 struct cx18_queue *q, int to_front) in _cx18_enqueue() argument
47 if (q != &s->q_full) { in _cx18_enqueue()
56 if (q == &s->q_busy && in _cx18_enqueue()
57 atomic_read(&q->depth) >= CX18_MAX_FW_MDLS_PER_STREAM) in _cx18_enqueue()
58 q = &s->q_free; in _cx18_enqueue()
60 spin_lock(&q->lock); in _cx18_enqueue()
63 list_add(&mdl->list, &q->list); /* LIFO */ in _cx18_enqueue()
65 list_add_tail(&mdl->list, &q->list); /* FIFO */ in _cx18_enqueue()
66 q->bytesused += mdl->bytesused - mdl->readpos; in _cx18_enqueue()
67 atomic_inc(&q->depth); in _cx18_enqueue()
69 spin_unlock(&q->lock); in _cx18_enqueue()
70 return q; in _cx18_enqueue()
73 struct cx18_mdl *cx18_dequeue(struct cx18_stream *s, struct cx18_queue *q) in cx18_dequeue() argument
77 spin_lock(&q->lock); in cx18_dequeue()
78 if (!list_empty(&q->list)) { in cx18_dequeue()
79 mdl = list_first_entry(&q->list, struct cx18_mdl, list); in cx18_dequeue()
81 q->bytesused -= mdl->bytesused - mdl->readpos; in cx18_dequeue()
83 atomic_dec(&q->depth); in cx18_dequeue()
85 spin_unlock(&q->lock); in cx18_dequeue()