struct completion *async_done;
};
-void scmi_xfer_put(const struct scmi_handle *h, struct scmi_xfer *xfer);
-int scmi_do_xfer(const struct scmi_handle *h, struct scmi_xfer *xfer);
-int scmi_do_xfer_with_response(const struct scmi_handle *h,
- struct scmi_xfer *xfer);
-int scmi_xfer_get_init(const struct scmi_handle *h, u8 msg_id, u8 prot_id,
- size_t tx_size, size_t rx_size, struct scmi_xfer **p);
-void scmi_reset_rx_to_maxsz(const struct scmi_handle *handle,
- struct scmi_xfer *xfer);
-
struct scmi_xfer_ops;
/**
void *(*get_priv)(const struct scmi_protocol_handle *ph);
};
-const struct scmi_protocol_handle *
-scmi_map_protocol_handle(const struct scmi_handle *handle, u8 prot_id);
-
-struct scmi_handle *scmi_map_scmi_handle(const struct scmi_protocol_handle *ph);
-
/**
* struct scmi_xfer_ops - References to the core SCMI xfer operations.
* @version_get: Get this version protocol.
int scmi_handle_put(const struct scmi_handle *handle);
struct scmi_handle *scmi_handle_get(struct device *dev);
void scmi_set_handle(struct scmi_device *scmi_dev);
-int scmi_version_get(const struct scmi_handle *h, u8 protocol, u32 *version);
void scmi_setup_protocol_implemented(const struct scmi_protocol_handle *ph,
u8 *prot_imp);
}
}
-/* Transient code wrapper to ease API migration */
-const struct scmi_protocol_handle *
-scmi_map_protocol_handle(const struct scmi_handle *handle, u8 prot_id)
-{
- struct scmi_info *info = handle_to_scmi_info(handle);
- const struct scmi_protocol_instance *pi;
-
- mutex_lock(&info->protocols_mtx);
- pi = idr_find(&info->protocols, prot_id);
- mutex_unlock(&info->protocols_mtx);
-
- return pi ? &pi->ph : NULL;
-}
-
-/* Transient code wrapper to ease API migration */
-struct scmi_handle *scmi_map_scmi_handle(const struct scmi_protocol_handle *ph)
-{
- const struct scmi_protocol_instance *pi = ph_to_pi(ph);
-
- return (struct scmi_handle *)pi->handle;
-}
-
/**
* xfer_put() - Release a transmit message
*
__scmi_xfer_put(&info->tx_minfo, xfer);
}
-void scmi_xfer_put(const struct scmi_handle *h, struct scmi_xfer *xfer)
-{
- const struct scmi_protocol_handle *ph;
-
- ph = scmi_map_protocol_handle(h, xfer->hdr.protocol_id);
- if (!ph)
- return;
-
- return xfer_put(ph, xfer);
-}
-
#define SCMI_MAX_POLL_TO_NS (100 * NSEC_PER_USEC)
static bool scmi_xfer_done_no_timeout(struct scmi_chan_info *cinfo,
return ret;
}
-int scmi_do_xfer(const struct scmi_handle *h, struct scmi_xfer *xfer)
-{
- const struct scmi_protocol_handle *ph;
-
- ph = scmi_map_protocol_handle(h, xfer->hdr.protocol_id);
- if (!ph)
- return -EINVAL;
-
- return do_xfer(ph, xfer);
-}
-
static void reset_rx_to_maxsz(const struct scmi_protocol_handle *ph,
struct scmi_xfer *xfer)
{
xfer->rx.len = info->desc->max_msg_size;
}
-void scmi_reset_rx_to_maxsz(const struct scmi_handle *handle,
- struct scmi_xfer *xfer)
-{
- const struct scmi_protocol_handle *ph;
-
- ph = scmi_map_protocol_handle(handle, xfer->hdr.protocol_id);
- if (!ph)
- return;
-
- return reset_rx_to_maxsz(ph, xfer);
-}
-
#define SCMI_MAX_RESPONSE_TIMEOUT (2 * MSEC_PER_SEC)
/**
return ret;
}
-int scmi_do_xfer_with_response(const struct scmi_handle *h,
- struct scmi_xfer *xfer)
-{
- const struct scmi_protocol_handle *ph;
-
- ph = scmi_map_protocol_handle(h, xfer->hdr.protocol_id);
- if (!ph)
- return -EINVAL;
-
- return do_xfer_with_response(ph, xfer);
-}
-
/**
* xfer_get_init() - Allocate and initialise one message for transmit
*
return 0;
}
-int scmi_xfer_get_init(const struct scmi_handle *h, u8 msg_id, u8 prot_id,
- size_t tx_size, size_t rx_size, struct scmi_xfer **p)
-{
- const struct scmi_protocol_handle *ph;
-
- ph = scmi_map_protocol_handle(h, prot_id);
- if (!ph)
- return -EINVAL;
-
- return xfer_get_init(ph, msg_id, tx_size, rx_size, p);
-}
-
/**
* version_get() - command to get the revision of the SCMI entity
*
return ret;
}
-int scmi_version_get(const struct scmi_handle *h, u8 protocol, u32 *version)
-{
- const struct scmi_protocol_handle *ph;
-
- ph = scmi_map_protocol_handle(h, protocol);
- if (!ph)
- return -EINVAL;
-
- return version_get(ph, version);
-}
-
/**
* scmi_set_protocol_priv - Set protocol specific data at init time
*