firmware: arm_scmi: Make smc support sync_cmds_completed_on_ret
Enable sync_cmds_completed_on_ret in the SMC transport descriptor and remove SMC specific .poll_done callback support since polling is bypassed when sync_cmds_completed_on_ret is set. Link: https://lore.kernel.org/r/20211220195646.44498-5-cristian.marussi@arm.com Signed-off-by: Cristian Marussi <cristian.marussi@arm.com> Signed-off-by: Sudeep Holla <sudeep.holla@arm.com>
This commit is contained in:
parent
31d2f803c1
commit
117542b81f
|
@ -173,14 +173,6 @@ static void smc_mark_txdone(struct scmi_chan_info *cinfo, int ret)
|
|||
mutex_unlock(&scmi_info->shmem_lock);
|
||||
}
|
||||
|
||||
static bool
|
||||
smc_poll_done(struct scmi_chan_info *cinfo, struct scmi_xfer *xfer)
|
||||
{
|
||||
struct scmi_smc *scmi_info = cinfo->transport_info;
|
||||
|
||||
return shmem_poll_done(scmi_info->shmem, xfer);
|
||||
}
|
||||
|
||||
static const struct scmi_transport_ops scmi_smc_ops = {
|
||||
.chan_available = smc_chan_available,
|
||||
.chan_setup = smc_chan_setup,
|
||||
|
@ -188,7 +180,6 @@ static const struct scmi_transport_ops scmi_smc_ops = {
|
|||
.send_message = smc_send_message,
|
||||
.mark_txdone = smc_mark_txdone,
|
||||
.fetch_response = smc_fetch_response,
|
||||
.poll_done = smc_poll_done,
|
||||
};
|
||||
|
||||
const struct scmi_desc scmi_smc_desc = {
|
||||
|
@ -196,4 +187,13 @@ const struct scmi_desc scmi_smc_desc = {
|
|||
.max_rx_timeout_ms = 30,
|
||||
.max_msg = 20,
|
||||
.max_msg_size = 128,
|
||||
/*
|
||||
* Setting .sync_cmds_atomic_replies to true for SMC assumes that,
|
||||
* once the SMC instruction has completed successfully, the issued
|
||||
* SCMI command would have been already fully processed by the SCMI
|
||||
* platform firmware and so any possible response value expected
|
||||
* for the issued command will be immmediately ready to be fetched
|
||||
* from the shared memory area.
|
||||
*/
|
||||
.sync_cmds_completed_on_ret = true,
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue