Lines Matching refs:xfer

228 	struct scmi_xfer *xfer;  in scmi_xfer_get()  local
245 xfer = &minfo->xfer_block[xfer_id]; in scmi_xfer_get()
246 xfer->hdr.seq = xfer_id; in scmi_xfer_get()
247 reinit_completion(&xfer->done); in scmi_xfer_get()
248 xfer->transfer_id = atomic_inc_return(&transfer_last_id); in scmi_xfer_get()
250 return xfer; in scmi_xfer_get()
262 __scmi_xfer_put(struct scmi_xfers_info *minfo, struct scmi_xfer *xfer) in __scmi_xfer_put() argument
272 clear_bit(xfer->hdr.seq, minfo->xfer_alloc_table); in __scmi_xfer_put()
278 struct scmi_xfer *xfer; in scmi_handle_notification() local
285 xfer = scmi_xfer_get(cinfo->handle, minfo); in scmi_handle_notification()
286 if (IS_ERR(xfer)) { in scmi_handle_notification()
288 PTR_ERR(xfer)); in scmi_handle_notification()
293 unpack_scmi_header(msg_hdr, &xfer->hdr); in scmi_handle_notification()
294 scmi_dump_header_dbg(dev, &xfer->hdr); in scmi_handle_notification()
296 xfer); in scmi_handle_notification()
297 scmi_notify(cinfo->handle, xfer->hdr.protocol_id, in scmi_handle_notification()
298 xfer->hdr.id, xfer->rx.buf, xfer->rx.len, ts); in scmi_handle_notification()
300 trace_scmi_rx_done(xfer->transfer_id, xfer->hdr.id, in scmi_handle_notification()
301 xfer->hdr.protocol_id, xfer->hdr.seq, in scmi_handle_notification()
304 __scmi_xfer_put(minfo, xfer); in scmi_handle_notification()
312 struct scmi_xfer *xfer; in scmi_handle_response() local
324 xfer = &minfo->xfer_block[xfer_id]; in scmi_handle_response()
331 if (unlikely(msg_type == MSG_TYPE_DELAYED_RESP && !xfer->async_done)) { in scmi_handle_response()
337 __scmi_xfer_put(minfo, xfer); in scmi_handle_response()
343 xfer->rx.len = info->desc->max_msg_size; in scmi_handle_response()
345 scmi_dump_header_dbg(dev, &xfer->hdr); in scmi_handle_response()
347 info->desc->ops->fetch_response(cinfo, xfer); in scmi_handle_response()
349 trace_scmi_rx_done(xfer->transfer_id, xfer->hdr.id, in scmi_handle_response()
350 xfer->hdr.protocol_id, xfer->hdr.seq, in scmi_handle_response()
355 complete(xfer->async_done); in scmi_handle_response()
357 complete(&xfer->done); in scmi_handle_response()
399 struct scmi_xfer *xfer) in xfer_put() argument
404 __scmi_xfer_put(&info->tx_minfo, xfer); in xfer_put()
410 struct scmi_xfer *xfer, ktime_t stop) in scmi_xfer_done_no_timeout() argument
414 return info->desc->ops->poll_done(cinfo, xfer) || in scmi_xfer_done_no_timeout()
429 struct scmi_xfer *xfer) in do_xfer() argument
443 xfer->hdr.protocol_id = pi->proto->id; in do_xfer()
445 cinfo = idr_find(&info->tx_idr, xfer->hdr.protocol_id); in do_xfer()
449 trace_scmi_xfer_begin(xfer->transfer_id, xfer->hdr.id, in do_xfer()
450 xfer->hdr.protocol_id, xfer->hdr.seq, in do_xfer()
451 xfer->hdr.poll_completion); in do_xfer()
453 ret = info->desc->ops->send_message(cinfo, xfer); in do_xfer()
459 if (xfer->hdr.poll_completion) { in do_xfer()
462 spin_until_cond(scmi_xfer_done_no_timeout(cinfo, xfer, stop)); in do_xfer()
465 info->desc->ops->fetch_response(cinfo, xfer); in do_xfer()
472 if (!wait_for_completion_timeout(&xfer->done, timeout)) { in do_xfer()
479 if (!ret && xfer->hdr.status) in do_xfer()
480 ret = scmi_to_linux_errno(xfer->hdr.status); in do_xfer()
485 trace_scmi_xfer_end(xfer->transfer_id, xfer->hdr.id, in do_xfer()
486 xfer->hdr.protocol_id, xfer->hdr.seq, ret); in do_xfer()
492 struct scmi_xfer *xfer) in reset_rx_to_maxsz() argument
497 xfer->rx.len = info->desc->max_msg_size; in reset_rx_to_maxsz()
513 struct scmi_xfer *xfer) in do_xfer_with_response() argument
519 xfer->hdr.protocol_id = pi->proto->id; in do_xfer_with_response()
521 xfer->async_done = &async_response; in do_xfer_with_response()
523 ret = do_xfer(ph, xfer); in do_xfer_with_response()
525 if (!wait_for_completion_timeout(xfer->async_done, timeout)) in do_xfer_with_response()
527 else if (xfer->hdr.status) in do_xfer_with_response()
528 ret = scmi_to_linux_errno(xfer->hdr.status); in do_xfer_with_response()
531 xfer->async_done = NULL; in do_xfer_with_response()
555 struct scmi_xfer *xfer; in xfer_get_init() local
566 xfer = scmi_xfer_get(pi->handle, minfo); in xfer_get_init()
567 if (IS_ERR(xfer)) { in xfer_get_init()
568 ret = PTR_ERR(xfer); in xfer_get_init()
573 xfer->tx.len = tx_size; in xfer_get_init()
574 xfer->rx.len = rx_size ? : info->desc->max_msg_size; in xfer_get_init()
575 xfer->hdr.id = msg_id; in xfer_get_init()
576 xfer->hdr.protocol_id = pi->proto->id; in xfer_get_init()
577 xfer->hdr.poll_completion = false; in xfer_get_init()
579 *p = xfer; in xfer_get_init()
1032 struct scmi_xfer *xfer; in __scmi_xfer_info_init() local
1055 for (i = 0, xfer = info->xfer_block; i < desc->max_msg; i++, xfer++) { in __scmi_xfer_info_init()
1056 xfer->rx.buf = devm_kcalloc(dev, sizeof(u8), desc->max_msg_size, in __scmi_xfer_info_init()
1058 if (!xfer->rx.buf) in __scmi_xfer_info_init()
1061 xfer->tx.buf = xfer->rx.buf; in __scmi_xfer_info_init()
1062 init_completion(&xfer->done); in __scmi_xfer_info_init()