msm: Add support for 7x25AB MSM
7x25AB is new msm which can go upto 1GHz. Add required
cpu checks to add support for this new device.
Change-Id: I0be886d471fe0c70b8afd4da87b9991862a8571f
Signed-off-by: Pankaj Kumar <pakuma@codeaurora.org>
diff --git a/arch/arm/mach-msm/devices-msm7x27a.c b/arch/arm/mach-msm/devices-msm7x27a.c
index b606c6c..2d79f62 100644
--- a/arch/arm/mach-msm/devices-msm7x27a.c
+++ b/arch/arm/mach-msm/devices-msm7x27a.c
@@ -832,7 +832,7 @@
void __init msm7x25a_kgsl_3d0_init(void)
{
- if (cpu_is_msm7x25a() || cpu_is_msm7x25aa()) {
+ if (cpu_is_msm7x25a() || cpu_is_msm7x25aa() || cpu_is_msm7x25ab()) {
kgsl_3d0_pdata.num_levels = 2;
kgsl_3d0_pdata.pwrlevel[0].gpu_freq = 133330000;
kgsl_3d0_pdata.pwrlevel[0].bus_freq = 160000000;
@@ -1620,7 +1620,7 @@
}
msm_clock_init(&msm7x27a_clock_init_data);
- if (cpu_is_msm7x27aa())
+ if (cpu_is_msm7x27aa() || cpu_is_msm7x25ab())
acpuclk_init(&acpuclk_7x27aa_soc_data);
else if (cpu_is_msm8625()) {
if (msm8625_cpu_id() == MSM8625)
diff --git a/arch/arm/mach-msm/include/mach/socinfo.h b/arch/arm/mach-msm/include/mach/socinfo.h
index ae0ea0c..09494ea 100644
--- a/arch/arm/mach-msm/include/mach/socinfo.h
+++ b/arch/arm/mach-msm/include/mach/socinfo.h
@@ -64,6 +64,7 @@
FSM_CPU_9XXX,
MSM_CPU_7X25A,
MSM_CPU_7X25AA,
+ MSM_CPU_7X25AB,
MSM_CPU_8064,
MSM_CPU_8930,
MSM_CPU_7X27AA,
@@ -170,6 +171,18 @@
#endif
}
+static inline int cpu_is_msm7x25ab(void)
+{
+#ifdef CONFIG_ARCH_MSM7X27A
+ enum msm_cpu cpu = socinfo_get_msm_cpu();
+
+ BUG_ON(cpu == MSM_CPU_UNKNOWN);
+ return cpu == MSM_CPU_7X25AB;
+#else
+ return 0;
+#endif
+}
+
static inline int cpu_is_msm7x30(void)
{
#ifdef CONFIG_ARCH_MSM7X30
diff --git a/arch/arm/mach-msm/pm2.c b/arch/arm/mach-msm/pm2.c
index 39e321a..5726972 100644
--- a/arch/arm/mach-msm/pm2.c
+++ b/arch/arm/mach-msm/pm2.c
@@ -465,7 +465,8 @@
__raw_writel(1, APPS_PWRDOWN);
mb();
} else if (cpu_is_msm7x27a() || cpu_is_msm7x27aa() ||
- cpu_is_msm7x25a() || cpu_is_msm7x25aa()) {
+ cpu_is_msm7x25a() || cpu_is_msm7x25aa() ||
+ cpu_is_msm7x25ab()) {
__raw_writel(0x7, APPS_CLK_SLEEP_EN);
mb();
__raw_writel(1, APPS_PWRDOWN);
@@ -591,7 +592,8 @@
__raw_writel(0x0f, APPS_CLK_SLEEP_EN);
mb();
} else if (cpu_is_msm7x27a() || cpu_is_msm7x27aa() ||
- cpu_is_msm7x25a() || cpu_is_msm7x25aa()) {
+ cpu_is_msm7x25a() || cpu_is_msm7x25aa() ||
+ cpu_is_msm7x25ab()) {
__raw_writel(0x7, APPS_CLK_SLEEP_EN);
mb();
}
diff --git a/arch/arm/mach-msm/socinfo.c b/arch/arm/mach-msm/socinfo.c
index 3faeb37..00748e4 100644
--- a/arch/arm/mach-msm/socinfo.c
+++ b/arch/arm/mach-msm/socinfo.c
@@ -247,6 +247,11 @@
[128] = MSM_CPU_8625,
[129] = MSM_CPU_8625,
+ /* 7x25AB IDs */
+ [131] = MSM_CPU_7X25AB,
+ [132] = MSM_CPU_7X25AB,
+ [133] = MSM_CPU_7X25AB,
+
/* Uninitialized IDs are not known to run Linux.
MSM_CPU_UNKNOWN is set to 0 to ensure these IDs are
considered as unknown CPU. */
diff --git a/arch/arm/mach-msm/timer.c b/arch/arm/mach-msm/timer.c
index ea8356c..c888815 100644
--- a/arch/arm/mach-msm/timer.c
+++ b/arch/arm/mach-msm/timer.c
@@ -981,7 +981,7 @@
if (cpu_is_msm7x01() || cpu_is_msm7x25() || cpu_is_msm7x27() ||
cpu_is_msm7x25a() || cpu_is_msm7x27a() || cpu_is_msm7x25aa() ||
- cpu_is_msm7x27aa() || cpu_is_msm8625()) {
+ cpu_is_msm7x27aa() || cpu_is_msm8625() || cpu_is_msm7x25ab()) {
dgt->shift = MSM_DGT_SHIFT;
dgt->freq = 19200000 >> MSM_DGT_SHIFT;
dgt->clockevent.shift = 32 + MSM_DGT_SHIFT;