summaryrefslogtreecommitdiff
path: root/include/soc
diff options
context:
space:
mode:
authorKaushal Kumar <kaushalk@codeaurora.org>2018-03-27 18:08:32 +0530
committerGerrit - the friendly Code Review server <code-review@localhost>2019-11-10 22:19:25 -0800
commit9fbd3acbf7d7c4d295f1f9fae508c097ba1dcc9c (patch)
treecb28534a85db9026ca52604145c5c10307ba34d3 /include/soc
parentb6cce1559ba3fe6c7402863a88c0d446859d7d92 (diff)
soc: qcom: scm: Add a noretry variant for scm_call2
scm_call2 can block scm calls up to 2s due to its retry mechanism whenever the secure firmware is busy waiting for certain processing by the client who in turn is waiting upon its scm call to either complete or return with failure. Upon early return, client can process the pending requests to free up secure firmware and unblock processing of all pending scm calls. Add a noretry variant for scm_call2 which can be used by clients who do not intend to wait for 2s for return status. Change-Id: I1f0849464a64c32a4de4510fa5787b0ab328725c Signed-off-by: Kaushal Kumar <kaushalk@codeaurora.org>
Diffstat (limited to 'include/soc')
-rw-r--r--include/soc/qcom/scm.h9
1 files changed, 8 insertions, 1 deletions
diff --git a/include/soc/qcom/scm.h b/include/soc/qcom/scm.h
index f0a3124dae00..e741d540a8d6 100644
--- a/include/soc/qcom/scm.h
+++ b/include/soc/qcom/scm.h
@@ -1,4 +1,4 @@
-/* Copyright (c) 2010-2017, The Linux Foundation. All rights reserved.
+/* Copyright (c) 2010-2018, The Linux Foundation. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and
@@ -101,6 +101,8 @@ extern int scm_call(u32 svc_id, u32 cmd_id, const void *cmd_buf, size_t cmd_len,
extern int scm_call2(u32 cmd_id, struct scm_desc *desc);
+extern int scm_call2_noretry(u32 cmd_id, struct scm_desc *desc);
+
extern int scm_call2_atomic(u32 cmd_id, struct scm_desc *desc);
extern int scm_call_noalloc(u32 svc_id, u32 cmd_id, const void *cmd_buf,
@@ -150,6 +152,11 @@ static inline int scm_call2(u32 cmd_id, struct scm_desc *desc)
return 0;
}
+static inline int scm_call2_noretry(u32 cmd_id, struct scm_desc *desc)
+{
+ return 0;
+}
+
static inline int scm_call2_atomic(u32 cmd_id, struct scm_desc *desc)
{
return 0;