Lines Matching refs:cinfo
473 static inline int scmi_msg_response_validate(struct scmi_chan_info *cinfo, in scmi_msg_response_validate() argument
484 dev_err(cinfo->dev, in scmi_msg_response_validate()
500 dev_warn(cinfo->dev, in scmi_msg_response_validate()
562 scmi_xfer_command_acquire(struct scmi_chan_info *cinfo, u32 msg_hdr) in scmi_xfer_command_acquire() argument
567 struct scmi_info *info = handle_to_scmi_info(cinfo->handle); in scmi_xfer_command_acquire()
576 dev_err(cinfo->dev, in scmi_xfer_command_acquire()
586 ret = scmi_msg_response_validate(cinfo, msg_type, xfer); in scmi_xfer_command_acquire()
601 dev_err(cinfo->dev, in scmi_xfer_command_acquire()
620 struct scmi_chan_info *cinfo) in scmi_clear_channel() argument
623 info->desc->ops->clear_channel(cinfo); in scmi_clear_channel()
626 static inline bool is_polling_required(struct scmi_chan_info *cinfo, in is_polling_required() argument
629 return cinfo->no_completion_irq || info->desc->force_polling; in is_polling_required()
638 static inline bool is_polling_enabled(struct scmi_chan_info *cinfo, in is_polling_enabled() argument
641 return is_polling_required(cinfo, info) && in is_polling_enabled()
645 static void scmi_handle_notification(struct scmi_chan_info *cinfo, in scmi_handle_notification() argument
649 struct device *dev = cinfo->dev; in scmi_handle_notification()
650 struct scmi_info *info = handle_to_scmi_info(cinfo->handle); in scmi_handle_notification()
655 xfer = scmi_xfer_get(cinfo->handle, minfo, false); in scmi_handle_notification()
659 scmi_clear_channel(info, cinfo); in scmi_handle_notification()
667 info->desc->ops->fetch_notification(cinfo, info->desc->max_msg_size, in scmi_handle_notification()
674 scmi_notify(cinfo->handle, xfer->hdr.protocol_id, in scmi_handle_notification()
683 scmi_clear_channel(info, cinfo); in scmi_handle_notification()
686 static void scmi_handle_response(struct scmi_chan_info *cinfo, in scmi_handle_response() argument
690 struct scmi_info *info = handle_to_scmi_info(cinfo->handle); in scmi_handle_response()
692 xfer = scmi_xfer_command_acquire(cinfo, msg_hdr); in scmi_handle_response()
695 scmi_clear_channel(info, cinfo); in scmi_handle_response()
706 info->desc->ops->fetch_response(cinfo, xfer); in scmi_handle_response()
719 scmi_clear_channel(info, cinfo); in scmi_handle_response()
741 void scmi_rx_callback(struct scmi_chan_info *cinfo, u32 msg_hdr, void *priv) in scmi_rx_callback() argument
747 scmi_handle_notification(cinfo, msg_hdr, priv); in scmi_rx_callback()
751 scmi_handle_response(cinfo, msg_hdr, priv); in scmi_rx_callback()
774 static bool scmi_xfer_done_no_timeout(struct scmi_chan_info *cinfo, in scmi_xfer_done_no_timeout() argument
777 struct scmi_info *info = handle_to_scmi_info(cinfo->handle); in scmi_xfer_done_no_timeout()
783 return info->desc->ops->poll_done(cinfo, xfer) || in scmi_xfer_done_no_timeout()
800 static int scmi_wait_for_message_response(struct scmi_chan_info *cinfo, in scmi_wait_for_message_response() argument
803 struct scmi_info *info = handle_to_scmi_info(cinfo->handle); in scmi_wait_for_message_response()
824 spin_until_cond(scmi_xfer_done_no_timeout(cinfo, in scmi_wait_for_message_response()
843 info->desc->ops->fetch_response(cinfo, xfer); in scmi_wait_for_message_response()
884 struct scmi_chan_info *cinfo; in do_xfer() local
893 cinfo = idr_find(&info->tx_idr, pi->proto->id); in do_xfer()
894 if (unlikely(!cinfo)) in do_xfer()
898 if (is_polling_enabled(cinfo, info)) in do_xfer()
923 ret = info->desc->ops->send_message(cinfo, xfer); in do_xfer()
933 ret = scmi_wait_for_message_response(cinfo, xfer); in do_xfer()
938 info->desc->ops->mark_txdone(cinfo, ret, xfer); in do_xfer()
1992 struct scmi_chan_info *cinfo; in scmi_chan_setup() local
2000 cinfo = idr_find(idr, prot_id); in scmi_chan_setup()
2001 if (cinfo) in scmi_chan_setup()
2005 cinfo = idr_find(idr, SCMI_PROTOCOL_BASE); in scmi_chan_setup()
2006 if (unlikely(!cinfo)) /* Possible only if platform has no Rx */ in scmi_chan_setup()
2011 cinfo = devm_kzalloc(info->dev, sizeof(*cinfo), GFP_KERNEL); in scmi_chan_setup()
2012 if (!cinfo) in scmi_chan_setup()
2015 cinfo->dev = dev; in scmi_chan_setup()
2016 cinfo->rx_timeout_ms = info->desc->max_rx_timeout_ms; in scmi_chan_setup()
2018 ret = info->desc->ops->chan_setup(cinfo, info->dev, tx); in scmi_chan_setup()
2022 if (tx && is_polling_required(cinfo, info)) { in scmi_chan_setup()
2033 ret = idr_alloc(idr, cinfo, prot_id, prot_id + 1, GFP_KERNEL); in scmi_chan_setup()
2039 cinfo->handle = &info->handle; in scmi_chan_setup()
2482 void scmi_free_channel(struct scmi_chan_info *cinfo, struct idr *idr, int id) in scmi_free_channel() argument