Lines Matching defs:info
78 * @tx_minfo: Universal Transmit Message management info
79 * @rx_minfo: Universal Receive Message management info
80 * @tx_idr: IDR object to map protocol id to Tx channel info pointer
81 * @rx_idr: IDR object to map protocol id to Rx channel info pointer
144 * @minfo: Pointer to Tx/Rx Message management info based on channel type
161 struct scmi_info *info = handle_to_scmi_info(handle);
166 info->desc->max_msg);
167 if (bit_pos == info->desc->max_msg) {
187 * @minfo: Pointer to Tx/Rx Message management info based on channel type
211 struct scmi_info *info = handle_to_scmi_info(cinfo->handle);
212 struct scmi_xfers_info *minfo = &info->rx_minfo;
220 info->desc->ops->clear_channel(cinfo);
226 info->desc->ops->fetch_notification(cinfo, info->desc->max_msg_size,
237 info->desc->ops->clear_channel(cinfo);
245 struct scmi_info *info = handle_to_scmi_info(cinfo->handle);
246 struct scmi_xfers_info *minfo = &info->tx_minfo;
251 info->desc->ops->clear_channel(cinfo);
266 info->desc->ops->clear_channel(cinfo);
274 xfer->rx.len = info->desc->max_msg_size;
278 info->desc->ops->fetch_response(cinfo, xfer);
285 info->desc->ops->clear_channel(cinfo);
295 * @cinfo: SCMI channel info
331 struct scmi_info *info = handle_to_scmi_info(handle);
333 __scmi_xfer_put(&info->tx_minfo, xfer);
341 struct scmi_info *info = handle_to_scmi_info(cinfo->handle);
343 return info->desc->ops->poll_done(cinfo, xfer) ||
361 struct scmi_info *info = handle_to_scmi_info(handle);
362 struct device *dev = info->dev;
365 cinfo = idr_find(&info->tx_idr, xfer->hdr.protocol_id);
373 ret = info->desc->ops->send_message(cinfo, xfer);
385 info->desc->ops->fetch_response(cinfo, xfer);
390 timeout = msecs_to_jiffies(info->desc->max_rx_timeout_ms);
401 if (info->desc->ops->mark_txdone)
402 info->desc->ops->mark_txdone(cinfo, ret);
413 struct scmi_info *info = handle_to_scmi_info(handle);
415 xfer->rx.len = info->desc->max_msg_size;
471 struct scmi_info *info = handle_to_scmi_info(handle);
472 struct scmi_xfers_info *minfo = &info->tx_minfo;
473 struct device *dev = info->dev;
476 if (rx_size > info->desc->max_msg_size ||
477 tx_size > info->desc->max_msg_size)
488 xfer->rx.len = rx_size ? : info->desc->max_msg_size;
534 struct scmi_info *info = handle_to_scmi_info(handle);
536 info->protocols_imp = prot_imp;
543 struct scmi_info *info = handle_to_scmi_info(handle);
545 if (!info->protocols_imp)
549 if (info->protocols_imp[i] == prot_id)
568 struct scmi_info *info;
573 info = list_entry(p, struct scmi_info, node);
574 if (dev->parent == info->dev) {
575 handle = &info->handle;
576 info->users++;
599 struct scmi_info *info;
604 info = handle_to_scmi_info(handle);
606 if (!WARN_ON(!info->users))
607 info->users--;
614 struct scmi_xfers_info *info)
629 info->xfer_block = devm_kcalloc(dev, desc->max_msg,
630 sizeof(*info->xfer_block), GFP_KERNEL);
631 if (!info->xfer_block)
634 info->xfer_alloc_table = devm_kcalloc(dev, BITS_TO_LONGS(desc->max_msg),
636 if (!info->xfer_alloc_table)
640 for (i = 0, xfer = info->xfer_block; i < desc->max_msg; i++, xfer++) {
650 spin_lock_init(&info->xfer_lock);
665 static int scmi_chan_setup(struct scmi_info *info, struct device *dev,
674 idr = tx ? &info->tx_idr : &info->rx_idr;
681 if (!info->desc->ops->chan_available(dev, idx)) {
688 cinfo = devm_kzalloc(info->dev, sizeof(*cinfo), GFP_KERNEL);
694 ret = info->desc->ops->chan_setup(cinfo, info->dev, tx);
705 cinfo->handle = &info->handle;
710 scmi_txrx_setup(struct scmi_info *info, struct device *dev, int prot_id)
712 int ret = scmi_chan_setup(info, dev, prot_id, true);
716 ret = scmi_chan_setup(info, dev, prot_id, false);
725 scmi_create_protocol_device(struct device_node *np, struct scmi_info *info,
730 sdev = scmi_device_create(np, info->dev, prot_id, name);
732 dev_err(info->dev, "failed to create %d protocol device\n",
737 if (scmi_txrx_setup(info, &sdev->dev, prot_id)) {
763 scmi_create_protocol_devices(struct device_node *np, struct scmi_info *info,
776 scmi_create_protocol_device(np, info, prot_id,
787 struct scmi_info *info;
795 info = devm_kzalloc(dev, sizeof(*info), GFP_KERNEL);
796 if (!info)
799 info->dev = dev;
800 info->desc = desc;
801 INIT_LIST_HEAD(&info->node);
803 platform_set_drvdata(pdev, info);
804 idr_init(&info->tx_idr);
805 idr_init(&info->rx_idr);
807 handle = &info->handle;
808 handle->dev = info->dev;
809 handle->version = &info->version;
811 ret = scmi_txrx_setup(info, dev, SCMI_PROTOCOL_BASE);
815 ret = scmi_xfer_info_init(info);
829 list_add_tail(&info->node, &scmi_list);
847 scmi_create_protocol_devices(child, info, prot_id);
861 struct scmi_info *info = platform_get_drvdata(pdev);
862 struct idr *idr = &info->tx_idr;
865 if (info->users)
868 list_del(&info->node);
874 scmi_notification_exit(&info->handle);
877 ret = idr_for_each(idr, info->desc->ops->chan_free, idr);
878 idr_destroy(&info->tx_idr);
880 idr = &info->rx_idr;
881 ret = idr_for_each(idr, info->desc->ops->chan_free, idr);
882 idr_destroy(&info->rx_idr);
890 struct scmi_info *info = dev_get_drvdata(dev);
892 return sprintf(buf, "%u.%u\n", info->version.major_ver,
893 info->version.minor_ver);
900 struct scmi_info *info = dev_get_drvdata(dev);
902 return sprintf(buf, "0x%x\n", info->version.impl_ver);
909 struct scmi_info *info = dev_get_drvdata(dev);
911 return sprintf(buf, "%s\n", info->version.vendor_id);
918 struct scmi_info *info = dev_get_drvdata(dev);
920 return sprintf(buf, "%s\n", info->version.sub_vendor_id);