summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormattis fjallstrom <mattis@acm.org>2015-06-08 10:31:44 -0700
committermattis fjallstrom <mattis@acm.org>2015-06-08 10:31:44 -0700
commit9bdcd4a656be073b446823908c98d0a8c441f0df (patch)
tree29e28d72a361873a9f36a3dc3766953e9283898b
parenteff019527fa7b27e872d9e2ec35e2487fd71a90a (diff)
downloadolio-linux-3.10-9bdcd4a656be073b446823908c98d0a8c441f0df.tar.xz
olio-linux-3.10-9bdcd4a656be073b446823908c98d0a8c441f0df.zip
Setting top speed to 800MHz. Depends on the CONFIG_MACH_OMAP3_H1_DVT2 flag being set.
Change-Id: I8ab0d33210e47e4dac861cc6ffcab70cd92a6ea6
-rw-r--r--arch/arm/mach-omap2/omap_opp_data.h3
-rw-r--r--arch/arm/mach-omap2/opp3xxx_data.c41
-rw-r--r--arch/arm/mach-omap2/pm-debug.c2
-rw-r--r--arch/arm/mach-omap2/voltagedomains3xxx_data.c5
4 files changed, 50 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/omap_opp_data.h b/arch/arm/mach-omap2/omap_opp_data.h
index 336fdfcf88b..93a489969a2 100644
--- a/arch/arm/mach-omap2/omap_opp_data.h
+++ b/arch/arm/mach-omap2/omap_opp_data.h
@@ -87,6 +87,9 @@ extern int __init omap_init_opp_table(struct omap_opp_def *opp_def,
extern struct omap_volt_data omap34xx_vddmpu_volt_data[];
extern struct omap_volt_data omap34xx_vddcore_volt_data[];
extern struct omap_volt_data omap36xx_vddmpu_volt_data[];
+#ifdef CONFIG_MACH_OMAP3_H1_DVT2
+extern struct omap_volt_data omap36xx_olioh1_vddmpu_volt_data[];
+#endif
extern struct omap_volt_data omap36xx_vddcore_volt_data[];
extern struct omap_volt_data omap443x_vdd_mpu_volt_data[];
diff --git a/arch/arm/mach-omap2/opp3xxx_data.c b/arch/arm/mach-omap2/opp3xxx_data.c
index 0f5af3377af..f715f6ffd1d 100644
--- a/arch/arm/mach-omap2/opp3xxx_data.c
+++ b/arch/arm/mach-omap2/opp3xxx_data.c
@@ -73,6 +73,16 @@ struct omap_volt_data omap36xx_vddmpu_volt_data[] = {
VOLT_DATA_DEFINE(0, 0, 0, 0),
};
+
+struct omap_volt_data omap36xx_olioh1_vddmpu_volt_data[] = {
+ VOLT_DATA_DEFINE(OMAP3630_VDD_MPU_OPP50_UV, OMAP3630_CONTROL_FUSE_OPP50_VDD1, 0xf4, 0x0c),
+ VOLT_DATA_DEFINE(OMAP3630_VDD_MPU_OPP100_UV, OMAP3630_CONTROL_FUSE_OPP100_VDD1, 0xf9, 0x16),
+ VOLT_DATA_DEFINE(OMAP3630_VDD_MPU_OPP120_UV, OMAP3630_CONTROL_FUSE_OPP120_VDD1, 0xfa, 0x23),
+ /* VOLT_DATA_DEFINE(OMAP3630_VDD_MPU_OPP1G_UV, OMAP3630_CONTROL_FUSE_OPP1G_VDD1, 0xfa, 0x27), */
+ VOLT_DATA_DEFINE(0, 0, 0, 0),
+};
+
+
/* VDD2 */
#define OMAP3630_VDD_CORE_OPP50_UV 1000000
@@ -149,6 +159,32 @@ static struct omap_opp_def __initdata omap36xx_opp_def_list[] = {
OPP_INITIALIZER("iva", false, 800000000, OMAP3630_VDD_MPU_OPP1G_UV),
};
+static struct omap_opp_def __initdata omap36xx_olioh1_opp_def_list[] = {
+ /* MPU OPP1 - OPP50 */
+ OPP_INITIALIZER("mpu", true, 300000000, OMAP3630_VDD_MPU_OPP50_UV),
+ /* MPU OPP2 - OPP100 */
+ OPP_INITIALIZER("mpu", true, 600000000, OMAP3630_VDD_MPU_OPP100_UV),
+ /* MPU OPP3 - OPP-Turbo */
+ OPP_INITIALIZER("mpu", true, 800000000, OMAP3630_VDD_MPU_OPP120_UV),
+ /* MPU OPP4 - OPP-SB */
+ /* OPP_INITIALIZER("mpu", true, 1000000000, OMAP3630_VDD_MPU_OPP1G_UV), */
+
+ /* L3 OPP1 - OPP50 */
+ OPP_INITIALIZER("l3_main", true, 100000000, OMAP3630_VDD_CORE_OPP50_UV),
+ /* L3 OPP2 - OPP100, OPP-Turbo, OPP-SB */
+ OPP_INITIALIZER("l3_main", true, 200000000, OMAP3630_VDD_CORE_OPP100_UV),
+
+ /* DSP OPP1 - OPP50 */
+ OPP_INITIALIZER("iva", true, 260000000, OMAP3630_VDD_MPU_OPP50_UV),
+ /* DSP OPP2 - OPP100 */
+ OPP_INITIALIZER("iva", true, 520000000, OMAP3630_VDD_MPU_OPP100_UV),
+ /* DSP OPP3 - OPP-Turbo */
+ OPP_INITIALIZER("iva", false, 660000000, OMAP3630_VDD_MPU_OPP120_UV),
+ /* DSP OPP4 - OPP-SB */
+ OPP_INITIALIZER("iva", false, 800000000, OMAP3630_VDD_MPU_OPP1G_UV),
+};
+
+
/**
* omap3_opp_init() - initialize omap3 opp table
*/
@@ -160,8 +196,13 @@ int __init omap3_opp_init(void)
return r;
if (cpu_is_omap3630())
+#ifdef CONFIG_MACH_OMAP3_H1_DVT2
+ r = omap_init_opp_table(omap36xx_olioh1_opp_def_list,
+ ARRAY_SIZE(omap36xx_olioh1_opp_def_list));
+#else
r = omap_init_opp_table(omap36xx_opp_def_list,
ARRAY_SIZE(omap36xx_opp_def_list));
+#endif
else
r = omap_init_opp_table(omap34xx_opp_def_list,
ARRAY_SIZE(omap34xx_opp_def_list));
diff --git a/arch/arm/mach-omap2/pm-debug.c b/arch/arm/mach-omap2/pm-debug.c
index 94036241cec..119e6756883 100644
--- a/arch/arm/mach-omap2/pm-debug.c
+++ b/arch/arm/mach-omap2/pm-debug.c
@@ -39,7 +39,7 @@
#include "pm-debug-regs.h"
/* enable_off_mode is the runtime flag for enable/disable of offmode */
-u32 enable_off_mode;
+u32 enable_off_mode = 1;
/*
* global_disable_off_mode supercedes enable_off_mode and keeps
diff --git a/arch/arm/mach-omap2/voltagedomains3xxx_data.c b/arch/arm/mach-omap2/voltagedomains3xxx_data.c
index 261bb7cb4e6..c9a39119036 100644
--- a/arch/arm/mach-omap2/voltagedomains3xxx_data.c
+++ b/arch/arm/mach-omap2/voltagedomains3xxx_data.c
@@ -109,8 +109,13 @@ void __init omap3xxx_voltagedomains_init(void)
*/
#ifdef CONFIG_PM_OPP
if (cpu_is_omap3630()) {
+#ifdef CONFIG_MACH_OMAP3_H1_DVT2
+ omap3_voltdm_mpu.volt_data = omap36xx_olioh1_vddmpu_volt_data;
+ omap3_voltdm_core.volt_data = omap36xx_vddcore_volt_data;
+#else
omap3_voltdm_mpu.volt_data = omap36xx_vddmpu_volt_data;
omap3_voltdm_core.volt_data = omap36xx_vddcore_volt_data;
+#endif /* CONFIG_MACH_OMAP3_H1_DVT2 */
} else {
omap3_voltdm_mpu.volt_data = omap34xx_vddmpu_volt_data;
omap3_voltdm_core.volt_data = omap34xx_vddcore_volt_data;