qseecom: Vote for CE clk before loading image
Add support for setting the Crypto HW to operate in
high bandwidth mode before issuing a request to load
image.
This is needed for better performance when using crypto
HW to authenticate the image before loading it.
Change-Id: I42d40554ad2d64551db222ea7255bc904b9af256
Signed-off-by: Mona Hossain <mhossain@codeaurora.org>
diff --git a/drivers/misc/qseecom.c b/drivers/misc/qseecom.c
index 27123bc..1972845 100644
--- a/drivers/misc/qseecom.c
+++ b/drivers/misc/qseecom.c
@@ -1339,6 +1339,15 @@
/* Populate the remaining parameters */
load_req.qsee_cmd_id = QSEOS_APP_START_COMMAND;
memcpy(load_req.app_name, appname, MAX_APP_NAME_SIZE);
+ mutex_lock(&app_access_lock);
+ ret = qsee_vote_for_clock(CLK_SFPB);
+ if (ret) {
+ kzfree(img_data);
+ pr_warning("Unable to vote for SFPB clock");
+ mutex_unlock(&app_access_lock);
+ return -EIO;
+ }
+
/* SCM_CALL to load the image */
ret = scm_call(SCM_SVC_TZSCHEDULER, 1, &load_req,
sizeof(struct qseecom_load_app_ireq),
@@ -1346,6 +1355,8 @@
kzfree(img_data);
if (ret) {
pr_err("scm_call to load failed : ret %d\n", ret);
+ qsee_disable_clock_vote(CLK_SFPB);
+ mutex_unlock(&app_access_lock);
return -EIO;
}
@@ -1368,6 +1379,9 @@
ret = -EINVAL;
break;
}
+ qsee_disable_clock_vote(CLK_SFPB);
+ mutex_unlock(&app_access_lock);
+
return ret;
}