platform: msm8916: Choose interrupt vector for 8x3x

8x3x has a different interrupt vector for memory
mapped qtimers as compared to 8x16,hence need to
choose the correct interrupt vector based on the
platform id.

Change-Id: I50c9977ad8f99421a1a3f32ff5c8f40112363dbd
diff --git a/platform/msm8916/platform.c b/platform/msm8916/platform.c
index 25d45a7..1b60c18 100644
--- a/platform/msm8916/platform.c
+++ b/platform/msm8916/platform.c
@@ -29,6 +29,7 @@
 #include <debug.h>
 #include <reg.h>
 #include <platform/iomap.h>
+#include <platform/irqs.h>
 #include <qgic.h>
 #include <qtimer.h>
 #include <mmu.h>
@@ -64,6 +65,8 @@
 
 static struct smem_ram_ptable ram_ptable;
 
+static int platform_is_msm8939();
+
 void platform_early_init(void)
 {
 	board_init();
@@ -72,6 +75,14 @@
 	qtimer_init();
 }
 
+int qtmr_irq()
+{
+	if (platform_is_msm8939())
+		return INT_QTMR_FRM_0_PHYSICAL_TIMER_EXP_8x39;
+	else
+		return INT_QTMR_FRM_0_PHYSICAL_TIMER_EXP_8x16;
+}
+
 void platform_init(void)
 {
 	dprintf(INFO, "platform_init()\n");
@@ -165,3 +176,24 @@
 	/* Using 1-1 mapping on this platform. */
 	return phys_addr;
 }
+
+static int platform_is_msm8939()
+{
+	uint32_t platform = board_platform_id();
+	uint32_t ret = 0;
+
+	switch(platform)
+	{
+		case MSM8939:
+		case APQ8036:
+		case APQ8039:
+		case MSM8236:
+		case MSM8636:
+			ret = 1;
+			break;
+		default:
+			ret = 0;
+	};
+
+	return ret;
+}