Lines Matching refs:q

178 	struct scmi_raw_queue *q[SCMI_RAW_MAX_QUEUE];  member
253 return raw->q[idx]; in scmi_raw_queue_select()
258 static struct scmi_raw_buffer *scmi_raw_buffer_get(struct scmi_raw_queue *q) in scmi_raw_buffer_get() argument
262 struct list_head *head = &q->free_bufs; in scmi_raw_buffer_get()
264 spin_lock_irqsave(&q->free_bufs_lock, flags); in scmi_raw_buffer_get()
269 spin_unlock_irqrestore(&q->free_bufs_lock, flags); in scmi_raw_buffer_get()
274 static void scmi_raw_buffer_put(struct scmi_raw_queue *q, in scmi_raw_buffer_put() argument
282 spin_lock_irqsave(&q->free_bufs_lock, flags); in scmi_raw_buffer_put()
283 list_add_tail(&rb->node, &q->free_bufs); in scmi_raw_buffer_put()
284 spin_unlock_irqrestore(&q->free_bufs_lock, flags); in scmi_raw_buffer_put()
287 static void scmi_raw_buffer_enqueue(struct scmi_raw_queue *q, in scmi_raw_buffer_enqueue() argument
292 spin_lock_irqsave(&q->msg_q_lock, flags); in scmi_raw_buffer_enqueue()
293 list_add_tail(&rb->node, &q->msg_q); in scmi_raw_buffer_enqueue()
294 spin_unlock_irqrestore(&q->msg_q_lock, flags); in scmi_raw_buffer_enqueue()
296 wake_up_interruptible(&q->wq); in scmi_raw_buffer_enqueue()
300 scmi_raw_buffer_dequeue_unlocked(struct scmi_raw_queue *q) in scmi_raw_buffer_dequeue_unlocked() argument
304 if (!list_empty(&q->msg_q)) { in scmi_raw_buffer_dequeue_unlocked()
305 rb = list_first_entry(&q->msg_q, struct scmi_raw_buffer, node); in scmi_raw_buffer_dequeue_unlocked()
312 static struct scmi_raw_buffer *scmi_raw_buffer_dequeue(struct scmi_raw_queue *q) in scmi_raw_buffer_dequeue() argument
317 spin_lock_irqsave(&q->msg_q_lock, flags); in scmi_raw_buffer_dequeue()
318 rb = scmi_raw_buffer_dequeue_unlocked(q); in scmi_raw_buffer_dequeue()
319 spin_unlock_irqrestore(&q->msg_q_lock, flags); in scmi_raw_buffer_dequeue()
324 static void scmi_raw_buffer_queue_flush(struct scmi_raw_queue *q) in scmi_raw_buffer_queue_flush() argument
329 rb = scmi_raw_buffer_dequeue(q); in scmi_raw_buffer_queue_flush()
331 scmi_raw_buffer_put(q, rb); in scmi_raw_buffer_queue_flush()
503 scmi_raw_buffer_queue_flush(raw->q[i]); in scmi_xfer_raw_reset()
695 scmi_raw_message_dequeue(struct scmi_raw_queue *q, bool o_nonblock) in scmi_raw_message_dequeue() argument
700 spin_lock_irqsave(&q->msg_q_lock, flags); in scmi_raw_message_dequeue()
701 while (list_empty(&q->msg_q)) { in scmi_raw_message_dequeue()
702 spin_unlock_irqrestore(&q->msg_q_lock, flags); in scmi_raw_message_dequeue()
707 if (wait_event_interruptible(q->wq, !list_empty(&q->msg_q))) in scmi_raw_message_dequeue()
710 spin_lock_irqsave(&q->msg_q_lock, flags); in scmi_raw_message_dequeue()
713 rb = scmi_raw_buffer_dequeue_unlocked(q); in scmi_raw_message_dequeue()
715 spin_unlock_irqrestore(&q->msg_q_lock, flags); in scmi_raw_message_dequeue()
742 struct scmi_raw_queue *q; in scmi_raw_message_receive() local
744 q = scmi_raw_queue_select(raw, idx, chan_id); in scmi_raw_message_receive()
745 if (!q) in scmi_raw_message_receive()
748 rb = scmi_raw_message_dequeue(q, o_nonblock); in scmi_raw_message_receive()
761 scmi_raw_buffer_put(q, rb); in scmi_raw_message_receive()
849 struct scmi_raw_queue *q; in scmi_test_dbg_raw_common_poll() local
852 q = scmi_raw_queue_select(rd->raw, idx, rd->chan_id); in scmi_test_dbg_raw_common_poll()
853 if (!q) in scmi_test_dbg_raw_common_poll()
856 poll_wait(filp, &q->wq, wait); in scmi_test_dbg_raw_common_poll()
858 spin_lock_irqsave(&q->msg_q_lock, flags); in scmi_test_dbg_raw_common_poll()
859 if (!list_empty(&q->msg_q)) in scmi_test_dbg_raw_common_poll()
861 spin_unlock_irqrestore(&q->msg_q_lock, flags); in scmi_test_dbg_raw_common_poll()
1038 struct scmi_raw_queue *q; in scmi_raw_queue_init() local
1040 q = devm_kzalloc(dev, sizeof(*q), GFP_KERNEL); in scmi_raw_queue_init()
1041 if (!q) in scmi_raw_queue_init()
1048 spin_lock_init(&q->free_bufs_lock); in scmi_raw_queue_init()
1049 INIT_LIST_HEAD(&q->free_bufs); in scmi_raw_queue_init()
1055 scmi_raw_buffer_put(q, rb); in scmi_raw_queue_init()
1058 spin_lock_init(&q->msg_q_lock); in scmi_raw_queue_init()
1059 INIT_LIST_HEAD(&q->msg_q); in scmi_raw_queue_init()
1060 init_waitqueue_head(&q->wq); in scmi_raw_queue_init()
1062 return q; in scmi_raw_queue_init()
1107 raw->q[idx] = scmi_raw_queue_init(raw); in scmi_raw_mode_setup()
1108 if (IS_ERR(raw->q[idx])) { in scmi_raw_mode_setup()
1109 ret = PTR_ERR(raw->q[idx]); in scmi_raw_mode_setup()
1119 struct scmi_raw_queue *q; in scmi_raw_mode_setup() local
1121 q = scmi_raw_queue_init(raw); in scmi_raw_mode_setup()
1122 if (IS_ERR(q)) { in scmi_raw_mode_setup()
1123 ret = PTR_ERR(q); in scmi_raw_mode_setup()
1127 ret = xa_insert(&raw->chans_q, channels[i], q, in scmi_raw_mode_setup()
1319 struct scmi_raw_queue *q; in scmi_raw_message_report() local
1326 q = scmi_raw_queue_select(raw, idx, in scmi_raw_message_report()
1328 if (!q) { in scmi_raw_message_report()
1344 spin_lock_irqsave(&q->msg_q_lock, flags); in scmi_raw_message_report()
1345 rb = scmi_raw_buffer_get(q); in scmi_raw_message_report()
1354 spin_unlock_irqrestore(&q->msg_q_lock, flags); in scmi_raw_message_report()
1372 rb = scmi_raw_buffer_dequeue_unlocked(q); in scmi_raw_message_report()
1374 spin_unlock_irqrestore(&q->msg_q_lock, flags); in scmi_raw_message_report()
1385 spin_unlock_irqrestore(&q->msg_q_lock, flags); in scmi_raw_message_report()
1390 scmi_raw_buffer_put(q, rb); in scmi_raw_message_report()
1394 scmi_raw_buffer_enqueue(q, rb); in scmi_raw_message_report()