Lines Matching refs:cinfo

197 static void scmi_rx_callback(struct scmi_chan_info *cinfo,
199 static void scmi_bad_message_trace(struct scmi_chan_info *cinfo,
778 struct scmi_chan_info *cinfo; in scmi_xfer_raw_channel_get() local
781 cinfo = idr_find(&info->tx_idr, protocol_id); in scmi_xfer_raw_channel_get()
782 if (!cinfo) { in scmi_xfer_raw_channel_get()
786 cinfo = idr_find(&info->tx_idr, SCMI_PROTOCOL_BASE); in scmi_xfer_raw_channel_get()
787 if (!cinfo) in scmi_xfer_raw_channel_get()
794 return cinfo; in scmi_xfer_raw_channel_get()
882 static void scmi_bad_message_trace(struct scmi_chan_info *cinfo, u32 msg_hdr, in scmi_bad_message_trace() argument
886 struct scmi_info *info = handle_to_scmi_info(cinfo->handle); in scmi_bad_message_trace()
903 trace_scmi_msg_dump(info->id, cinfo->id, in scmi_bad_message_trace()
928 static inline int scmi_msg_response_validate(struct scmi_chan_info *cinfo, in scmi_msg_response_validate() argument
939 dev_err(cinfo->dev, in scmi_msg_response_validate()
955 dev_warn(cinfo->dev, in scmi_msg_response_validate()
1017 scmi_xfer_command_acquire(struct scmi_chan_info *cinfo, u32 msg_hdr) in scmi_xfer_command_acquire() argument
1022 struct scmi_info *info = handle_to_scmi_info(cinfo->handle); in scmi_xfer_command_acquire()
1031 dev_err(cinfo->dev, in scmi_xfer_command_acquire()
1036 scmi_bad_message_trace(cinfo, msg_hdr, MSG_UNEXPECTED); in scmi_xfer_command_acquire()
1045 ret = scmi_msg_response_validate(cinfo, msg_type, xfer); in scmi_xfer_command_acquire()
1060 dev_err(cinfo->dev, in scmi_xfer_command_acquire()
1064 scmi_bad_message_trace(cinfo, msg_hdr, MSG_INVALID); in scmi_xfer_command_acquire()
1083 struct scmi_chan_info *cinfo) in scmi_clear_channel() argument
1085 if (!cinfo->is_p2a) { in scmi_clear_channel()
1086 dev_warn(cinfo->dev, "Invalid clear on A2P channel !\n"); in scmi_clear_channel()
1091 info->desc->ops->clear_channel(cinfo); in scmi_clear_channel()
1094 static void scmi_handle_notification(struct scmi_chan_info *cinfo, in scmi_handle_notification() argument
1098 struct device *dev = cinfo->dev; in scmi_handle_notification()
1099 struct scmi_info *info = handle_to_scmi_info(cinfo->handle); in scmi_handle_notification()
1104 xfer = scmi_xfer_get(cinfo->handle, minfo); in scmi_handle_notification()
1109 scmi_bad_message_trace(cinfo, msg_hdr, MSG_NOMEM); in scmi_handle_notification()
1112 scmi_clear_channel(info, cinfo); in scmi_handle_notification()
1120 info->desc->ops->fetch_notification(cinfo, info->desc->max_msg_size, in scmi_handle_notification()
1123 trace_scmi_msg_dump(info->id, cinfo->id, xfer->hdr.protocol_id, in scmi_handle_notification()
1128 scmi_notify(cinfo->handle, xfer->hdr.protocol_id, in scmi_handle_notification()
1138 cinfo->id); in scmi_handle_notification()
1143 scmi_clear_channel(info, cinfo); in scmi_handle_notification()
1146 static void scmi_handle_response(struct scmi_chan_info *cinfo, in scmi_handle_response() argument
1150 struct scmi_info *info = handle_to_scmi_info(cinfo->handle); in scmi_handle_response()
1152 xfer = scmi_xfer_command_acquire(cinfo, msg_hdr); in scmi_handle_response()
1155 scmi_raw_error_report(info->raw, cinfo, msg_hdr, priv); in scmi_handle_response()
1158 scmi_clear_channel(info, cinfo); in scmi_handle_response()
1169 info->desc->ops->fetch_response(cinfo, xfer); in scmi_handle_response()
1171 trace_scmi_msg_dump(info->id, cinfo->id, xfer->hdr.protocol_id, in scmi_handle_response()
1184 scmi_clear_channel(info, cinfo); in scmi_handle_response()
1202 cinfo->id); in scmi_handle_response()
1221 static void scmi_rx_callback(struct scmi_chan_info *cinfo, u32 msg_hdr, in scmi_rx_callback() argument
1228 scmi_handle_notification(cinfo, msg_hdr, priv); in scmi_rx_callback()
1232 scmi_handle_response(cinfo, msg_hdr, priv); in scmi_rx_callback()
1236 scmi_bad_message_trace(cinfo, msg_hdr, MSG_UNKNOWN); in scmi_rx_callback()
1256 static bool scmi_xfer_done_no_timeout(struct scmi_chan_info *cinfo, in scmi_xfer_done_no_timeout() argument
1260 struct scmi_info *info = handle_to_scmi_info(cinfo->handle); in scmi_xfer_done_no_timeout()
1266 return info->desc->ops->poll_done(cinfo, xfer) || in scmi_xfer_done_no_timeout()
1272 struct scmi_chan_info *cinfo, in scmi_wait_for_reply() argument
1276 struct scmi_info *info = handle_to_scmi_info(cinfo->handle); in scmi_wait_for_reply()
1292 spin_until_cond(scmi_xfer_done_no_timeout(cinfo, xfer, in scmi_wait_for_reply()
1294 if (!ooo && !info->desc->ops->poll_done(cinfo, xfer)) { in scmi_wait_for_reply()
1312 desc->ops->fetch_response(cinfo, xfer); in scmi_wait_for_reply()
1318 trace_scmi_msg_dump(info->id, cinfo->id, in scmi_wait_for_reply()
1329 cinfo->id); in scmi_wait_for_reply()
1358 static int scmi_wait_for_message_response(struct scmi_chan_info *cinfo, in scmi_wait_for_message_response() argument
1361 struct scmi_info *info = handle_to_scmi_info(cinfo->handle); in scmi_wait_for_message_response()
1369 return scmi_wait_for_reply(dev, info->desc, cinfo, xfer, in scmi_wait_for_message_response()
1383 int scmi_xfer_raw_wait_for_message_response(struct scmi_chan_info *cinfo, in scmi_xfer_raw_wait_for_message_response() argument
1388 struct scmi_info *info = handle_to_scmi_info(cinfo->handle); in scmi_xfer_raw_wait_for_message_response()
1391 ret = scmi_wait_for_reply(dev, info->desc, cinfo, xfer, timeout_ms); in scmi_xfer_raw_wait_for_message_response()
1416 struct scmi_chan_info *cinfo; in do_xfer() local
1427 cinfo = idr_find(&info->tx_idr, pi->proto->id); in do_xfer()
1428 if (unlikely(!cinfo)) { in do_xfer()
1433 if (is_polling_enabled(cinfo, info->desc)) in do_xfer()
1461 ret = info->desc->ops->send_message(cinfo, xfer); in do_xfer()
1468 trace_scmi_msg_dump(info->id, cinfo->id, xfer->hdr.protocol_id, in do_xfer()
1473 ret = scmi_wait_for_message_response(cinfo, xfer); in do_xfer()
1480 info->desc->ops->mark_txdone(cinfo, ret, xfer); in do_xfer()
2675 struct scmi_chan_info *cinfo; in scmi_chan_setup() local
2684 cinfo = idr_find(idr, SCMI_PROTOCOL_BASE); in scmi_chan_setup()
2685 if (unlikely(!cinfo)) /* Possible only if platform has no Rx */ in scmi_chan_setup()
2690 cinfo = devm_kzalloc(info->dev, sizeof(*cinfo), GFP_KERNEL); in scmi_chan_setup()
2691 if (!cinfo) in scmi_chan_setup()
2694 cinfo->is_p2a = !tx; in scmi_chan_setup()
2695 cinfo->rx_timeout_ms = info->desc->max_rx_timeout_ms; in scmi_chan_setup()
2696 cinfo->max_msg_size = info->desc->max_msg_size; in scmi_chan_setup()
2706 devm_kfree(info->dev, cinfo); in scmi_chan_setup()
2711 cinfo->id = prot_id; in scmi_chan_setup()
2712 cinfo->dev = &tdev->dev; in scmi_chan_setup()
2713 ret = info->desc->ops->chan_setup(cinfo, info->dev, tx); in scmi_chan_setup()
2717 devm_kfree(info->dev, cinfo); in scmi_chan_setup()
2721 if (tx && is_polling_required(cinfo, info->desc)) { in scmi_chan_setup()
2732 ret = idr_alloc(idr, cinfo, prot_id, prot_id + 1, GFP_KERNEL); in scmi_chan_setup()
2740 devm_kfree(info->dev, cinfo); in scmi_chan_setup()
2745 cinfo->handle = &info->handle; in scmi_chan_setup()
2817 struct scmi_chan_info *cinfo = p; in scmi_chan_destroy() local
2819 if (cinfo->dev) { in scmi_chan_destroy()
2820 struct scmi_info *info = handle_to_scmi_info(cinfo->handle); in scmi_chan_destroy()
2821 struct scmi_device *sdev = to_scmi_dev(cinfo->dev); in scmi_chan_destroy()
2823 of_node_put(cinfo->dev->of_node); in scmi_chan_destroy()
2825 cinfo->dev = NULL; in scmi_chan_destroy()
3043 struct scmi_chan_info *cinfo; in scmi_debugfs_raw_mode_setup() local
3051 idr_for_each_entry(&info->tx_idr, cinfo, id) { in scmi_debugfs_raw_mode_setup()
3056 if (num_chans >= SCMI_MAX_CHANNELS || !cinfo) { in scmi_debugfs_raw_mode_setup()
3062 if (!test_bit(cinfo->id, protos)) { in scmi_debugfs_raw_mode_setup()
3063 channels[num_chans++] = cinfo->id; in scmi_debugfs_raw_mode_setup()
3064 set_bit(cinfo->id, protos); in scmi_debugfs_raw_mode_setup()