summaryrefslogtreecommitdiff
path: root/drivers/soc
diff options
context:
space:
mode:
authorLaura Abbott <lauraa@codeaurora.org>2014-09-24 16:57:52 -0700
committerOlav Haugan <ohaugan@codeaurora.org>2016-10-08 10:43:21 -0700
commit621b81b8f3948a03aefe46244cecd54b2ca03792 (patch)
tree13d47577e0f0c818c7b0762b10156666ab281adb /drivers/soc
parented1a203f6f2c4a2fc4a2d9135cd9669aef23e428 (diff)
qcom: Update early random APIs to scmv8
The scm APIs need an update for v8. Update accordingly. Change-Id: Ia848af5bafe2337718fffdd87cd6436eb0133ece Signed-off-by: Laura Abbott <lauraa@codeaurora.org>
Diffstat (limited to 'drivers/soc')
-rw-r--r--drivers/soc/qcom/early_random.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/drivers/soc/qcom/early_random.c b/drivers/soc/qcom/early_random.c
index de38fc04676c..d1ab39b16c81 100644
--- a/drivers/soc/qcom/early_random.c
+++ b/drivers/soc/qcom/early_random.c
@@ -36,14 +36,24 @@ void __init init_random_pool(void)
struct tz_prng_data data;
int ret;
u32 resp;
+ struct scm_desc desc;
data.out_buf = (uint8_t *) virt_to_phys(random_buffer);
- data.out_buf_sz = SZ_512;
+ desc.args[0] = (unsigned long) data.out_buf;
+ desc.args[1] = data.out_buf_sz = SZ_512;
+ desc.arginfo = SCM_ARGS(2, SCM_RW, SCM_VAL);
+
dmac_flush_range(random_buffer, random_buffer + RANDOM_BUFFER_SIZE);
- ret = scm_call_noalloc(TZ_SVC_CRYPTO, PRNG_CMD_ID, &data,
- sizeof(data), &resp, sizeof(resp),
- common_scm_buf, SCM_BUFFER_SIZE(common_scm_buf));
+ if (!is_scm_armv8())
+ ret = scm_call_noalloc(TZ_SVC_CRYPTO, PRNG_CMD_ID, &data,
+ sizeof(data), &resp, sizeof(resp),
+ common_scm_buf,
+ SCM_BUFFER_SIZE(common_scm_buf));
+ else
+ ret = scm_call2(SCM_SIP_FNID(TZ_SVC_CRYPTO, PRNG_CMD_ID),
+ &desc);
+
if (!ret) {
dmac_inv_range(random_buffer, random_buffer +
RANDOM_BUFFER_SIZE);