qseecom: change to use QSECOM_TA heap to load TA

Make change to use new QSECOM_TA heap to load TA, and
retry when ion allocation is failed.

Change-Id: I26343185cd30276a57d6e7711f13ee95816bf6a6
Signed-off-by: Zhen Kong <zkong@codeaurora.org>
diff --git a/drivers/misc/qseecom.c b/drivers/misc/qseecom.c
index 3f7e7bb..146ca6f 100644
--- a/drivers/misc/qseecom.c
+++ b/drivers/misc/qseecom.c
@@ -4111,9 +4111,15 @@
 	ion_phys_addr_t pa;
 	struct ion_handle *ihandle = NULL;
 	u8 *img_data = NULL;
+	int retry = 0;
 
-	ihandle = ion_alloc(qseecom.ion_clnt, fw_size,
-			SZ_4K, ION_HEAP(ION_QSECOM_HEAP_ID), 0);
+	do {
+		if (retry++)
+			msleep(QSEECOM_TA_ION_ALLOCATE_DELAY);
+		ihandle = ion_alloc(qseecom.ion_clnt, fw_size,
+			SZ_4K, ION_HEAP(ION_QSECOM_TA_HEAP_ID), 0);
+	} while (IS_ERR_OR_NULL(ihandle) &&
+			(retry <= QSEECOM_TA_ION_ALLOCATE_MAX_ATTEMP));
 
 	if (IS_ERR_OR_NULL(ihandle)) {
 		pr_err("ION alloc failed\n");