Lines Matching refs:q
50 void cx18_queue_init(struct cx18_queue *q) in cx18_queue_init() argument
52 INIT_LIST_HEAD(&q->list); in cx18_queue_init()
53 atomic_set(&q->depth, 0); in cx18_queue_init()
54 q->bytesused = 0; in cx18_queue_init()
58 struct cx18_queue *q, int to_front) in _cx18_enqueue() argument
61 if (q != &s->q_full) { in _cx18_enqueue()
70 if (q == &s->q_busy && in _cx18_enqueue()
71 atomic_read(&q->depth) >= CX18_MAX_FW_MDLS_PER_STREAM) in _cx18_enqueue()
72 q = &s->q_free; in _cx18_enqueue()
74 spin_lock(&q->lock); in _cx18_enqueue()
77 list_add(&mdl->list, &q->list); /* LIFO */ in _cx18_enqueue()
79 list_add_tail(&mdl->list, &q->list); /* FIFO */ in _cx18_enqueue()
80 q->bytesused += mdl->bytesused - mdl->readpos; in _cx18_enqueue()
81 atomic_inc(&q->depth); in _cx18_enqueue()
83 spin_unlock(&q->lock); in _cx18_enqueue()
84 return q; in _cx18_enqueue()
87 struct cx18_mdl *cx18_dequeue(struct cx18_stream *s, struct cx18_queue *q) in cx18_dequeue() argument
91 spin_lock(&q->lock); in cx18_dequeue()
92 if (!list_empty(&q->list)) { in cx18_dequeue()
93 mdl = list_first_entry(&q->list, struct cx18_mdl, list); in cx18_dequeue()
95 q->bytesused -= mdl->bytesused - mdl->readpos; in cx18_dequeue()
97 atomic_dec(&q->depth); in cx18_dequeue()
99 spin_unlock(&q->lock); in cx18_dequeue()