platform: msm_shared: add api's to qseecom for version and tz address

For some targets tz app region address needs to be set based on tz version.
add an api to set the addresses and get tz version.

Change-Id: I3706fa5638eea6b13adb1ef56e40a8c7b1c767ac
diff --git a/platform/msm_shared/include/qseecom_lk_api.h b/platform/msm_shared/include/qseecom_lk_api.h
index c26da9b..1e2e35b 100644
--- a/platform/msm_shared/include/qseecom_lk_api.h
+++ b/platform/msm_shared/include/qseecom_lk_api.h
@@ -43,6 +43,16 @@
 int qseecom_init();
 
 /**
+ * Qseecom get version.
+ *	To be called before calls to set app region.
+ *
+ * @return unsigned int
+ *   Success:	Valid version
+ *   Failure:	Garbage value
+ */
+unsigned int qseecom_get_version();
+
+/**
 * Qseecom Tz Init
 *	To be called before any calls to qsee secure apps.
 *
diff --git a/platform/msm_shared/include/qseecomi_lk.h b/platform/msm_shared/include/qseecomi_lk.h
index 0a919de..a820cc5 100644
--- a/platform/msm_shared/include/qseecomi_lk.h
+++ b/platform/msm_shared/include/qseecomi_lk.h
@@ -44,6 +44,11 @@
 #define QSEOS_RESULT_FAIL_INCORRECT_PSWD      -71
 #define QSEOS_RESULT_FAIL_MAX_ATTEMPT         -72
 
+#define QSEOS_VERSION_14  0x14
+#define QSEE_VERSION_00   0x400000
+#define QSEE_VERSION_20   0x800000
+#define QSEE_VERSION_40   0x1000000  /* TZ.BF.4.0 */
+
 enum qseecom_command_scm_resp_type {
 	QSEOS_APP_ID = 0xEE01,
 	QSEOS_LISTENER_ID,
diff --git a/platform/msm_shared/qseecom_lk.c b/platform/msm_shared/qseecom_lk.c
index 563d1e5..717c2a5 100644
--- a/platform/msm_shared/qseecom_lk.c
+++ b/platform/msm_shared/qseecom_lk.c
@@ -42,11 +42,6 @@
 #include <platform/iomap.h>
 #include <platform.h>
 
-#define QSEOS_VERSION_14  0x14
-#define QSEEE_VERSION_00  0x400000
-#define QSEE_VERSION_20   0x800000
-
-
 #define QSEOS_CHECK_VERSION_CMD  0x00001803
 
 #define MAX_SCM_ARGS 10
@@ -59,6 +54,7 @@
 #define GENERIC_ERROR -1
 #define LISTENER_ALREADY_PRESENT_ERROR -2
 
+#define TZ_FVER_QSEE 10
 #define TZ_CALL 6
 enum qseecom_client_handle_type {
 	QSEECOM_CLIENT_APP = 1,
@@ -1388,6 +1384,8 @@
 int qseecom_init()
 {
 	int rc = GENERIC_ERROR;
+	struct qseecom_command_scm_resp resp;
+	uint32_t ver = TZ_FVER_QSEE;
 
 	memset (&qseecom, 0, sizeof(struct qseecom_control));
 	dprintf(SPEW, "%s called\n", __func__);
@@ -1398,16 +1396,23 @@
 	list_initialize(&(qseecom.registered_app_list_head));
 	list_initialize(&(qseecom.registered_listener_list_head));
 
-	qseecom.qseos_version = QSEOS_VERSION_14;
-	rc = 0;
+	rc = qseecom_scm_call(TZ_SVC_INFO, 3,
+						  &ver, sizeof(ver),
+						  &resp, sizeof(resp));
 
 	if (!rc) {
 		qseecom.qseecom_init_done = 1;
-		dprintf(ALWAYS, "Qseecom Init Done in Appsbl\n");
+		qseecom.qseos_version = resp.result;
+		dprintf(ALWAYS, "Qseecom Init Done in Appsbl version is 0x%x\n",resp.result);
 	}
 	return rc;
 }
 
+unsigned int qseecom_get_version()
+{
+	return qseecom.qseos_version;
+}
+
 int qseecom_exit()
 {
 	dprintf(SPEW, "%s called\n", __func__);