diff options
| author | Zhen Kong <zkong@codeaurora.org> | 2016-11-22 14:57:35 -0800 |
|---|---|---|
| committer | Zhen Kong <zkong@codeaurora.org> | 2016-12-22 18:11:30 -0800 |
| commit | 6f19ae882800a436555935925d0db9549ec2082e (patch) | |
| tree | baf94f59fb4ff34066092c66bc1659d6fcc828d8 /drivers/soc/qcom | |
| parent | c9153d1ae836f4509f9e9347289d8b9cd0aed2b9 (diff) | |
smcinvoke: support listener service request
Make change to support listener service request from mink object.
Change-Id: I9a707d953a85c16c9c5be82fd36960b49da36e3c
Signed-off-by: Zhen Kong <zkong@codeaurora.org>
Diffstat (limited to 'drivers/soc/qcom')
| -rw-r--r-- | drivers/soc/qcom/smcinvoke.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/soc/qcom/smcinvoke.c b/drivers/soc/qcom/smcinvoke.c index a1344f0780b0..a55d1a9b95b7 100644 --- a/drivers/soc/qcom/smcinvoke.c +++ b/drivers/soc/qcom/smcinvoke.c @@ -22,6 +22,8 @@ #include <soc/qcom/scm.h> #include <asm/cacheflush.h> #include "smcinvoke_object.h" +#include <soc/qcom/qseecomi.h> +#include "../../misc/qseecom_kernel.h" #define SMCINVOKE_TZ_PARAM_ID 0x224 #define SMCINVOKE_TZ_CMD 0x32000600 @@ -198,6 +200,12 @@ static int prepare_send_scm_msg(const uint8_t *in_buf, size_t in_buf_len, dmac_flush_range(out_buf, out_buf + outbuf_flush_size); ret = scm_call2(SMCINVOKE_TZ_CMD, &desc); + + /* process listener request */ + if (!ret && (desc.ret[0] == QSEOS_RESULT_INCOMPLETE || + desc.ret[0] == QSEOS_RESULT_BLOCKED_ON_LISTENER)) + ret = qseecom_process_listener_from_smcinvoke(&desc); + *smcinvoke_result = (int32_t)desc.ret[1]; if (ret || desc.ret[1] || desc.ret[2] || desc.ret[0]) { pr_err("SCM call failed with ret val = %d %d %d %d\n", |
