Lines Matching refs:ae4cmd_q
19 struct ae4_cmd_queue *ae4cmd_q = container_of(work, struct ae4_cmd_queue, p_work.work); in ae4_pending_work() local
20 struct pt_cmd_queue *cmd_q = &ae4cmd_q->cmd_q; in ae4_pending_work()
25 wait_event_interruptible(ae4cmd_q->q_w, in ae4_pending_work()
26 ((atomic64_read(&ae4cmd_q->done_cnt)) < in ae4_pending_work()
27 atomic64_read(&ae4cmd_q->intr_cnt))); in ae4_pending_work()
29 atomic64_inc(&ae4cmd_q->done_cnt); in ae4_pending_work()
31 mutex_lock(&ae4cmd_q->cmd_lock); in ae4_pending_work()
33 while ((ae4cmd_q->dridx != cridx) && !list_empty(&ae4cmd_q->cmd)) { in ae4_pending_work()
34 cmd = list_first_entry(&ae4cmd_q->cmd, struct pt_cmd, entry); in ae4_pending_work()
37 ae4_check_status_error(ae4cmd_q, ae4cmd_q->dridx); in ae4_pending_work()
40 ae4cmd_q->q_cmd_count--; in ae4_pending_work()
41 ae4cmd_q->dridx = (ae4cmd_q->dridx + 1) % CMD_Q_LEN; in ae4_pending_work()
43 complete_all(&ae4cmd_q->cmp); in ae4_pending_work()
45 mutex_unlock(&ae4cmd_q->cmd_lock); in ae4_pending_work()
51 struct ae4_cmd_queue *ae4cmd_q = data; in ae4_core_irq_handler() local
56 cmd_q = &ae4cmd_q->cmd_q; in ae4_core_irq_handler()
60 atomic64_inc(&ae4cmd_q->intr_cnt); in ae4_core_irq_handler()
68 wake_up(&ae4cmd_q->q_w); in ae4_core_irq_handler()
75 struct ae4_cmd_queue *ae4cmd_q; in ae4_destroy_work() local
79 ae4cmd_q = &ae4->ae4cmd_q[i]; in ae4_destroy_work()
81 if (!ae4cmd_q->pws) in ae4_destroy_work()
84 cancel_delayed_work_sync(&ae4cmd_q->p_work); in ae4_destroy_work()
85 destroy_workqueue(ae4cmd_q->pws); in ae4_destroy_work()
92 struct ae4_cmd_queue *ae4cmd_q; in ae4_core_init() local
100 ae4cmd_q = &ae4->ae4cmd_q[i]; in ae4_core_init()
101 ae4cmd_q->id = ae4->cmd_q_count; in ae4_core_init()
104 cmd_q = &ae4cmd_q->cmd_q; in ae4_core_init()
110 dev_name(pt->dev), ae4cmd_q); in ae4_core_init()
123 ae4cmd_q = &ae4->ae4cmd_q[i]; in ae4_core_init()
125 cmd_q = &ae4cmd_q->cmd_q; in ae4_core_init()
136 INIT_LIST_HEAD(&ae4cmd_q->cmd); in ae4_core_init()
137 init_waitqueue_head(&ae4cmd_q->q_w); in ae4_core_init()
139 ae4cmd_q->pws = alloc_ordered_workqueue("ae4dma_%d", WQ_MEM_RECLAIM, ae4cmd_q->id); in ae4_core_init()
140 if (!ae4cmd_q->pws) { in ae4_core_init()
144 INIT_DELAYED_WORK(&ae4cmd_q->p_work, ae4_pending_work); in ae4_core_init()
145 queue_delayed_work(ae4cmd_q->pws, &ae4cmd_q->p_work, usecs_to_jiffies(100)); in ae4_core_init()
147 init_completion(&ae4cmd_q->cmp); in ae4_core_init()