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;
+}