Re: [PATCH] omap3: Add basic support for 720MHz part

Koen Kooi
2011-01-19T09:49:34Z

Op 19 jan 2011, om 10:06 heeft Nishanth Menon het volgende geschreven:

> Vishwanath Sripathy wrote, on 01/19/2011 10:56 AM:
>> If you want a quick hack, you can modify the voltage for 700M marginally
>> (like you have done above). But it needs to be done in multiple places.
>> You need to modify IVA OPP6 entry in opp table and OPP6 voltage value in
>> voltage.h as well besides above change. This should work.
> we may want to be sure about keeping the additional voltages in 1 step increment (12.5mV - to ensure twl conversion routines sane)- i think we may be pretty much maxed out for the tps chip used, no?

Not using the 12.5mV steps gives me:

[ 3.076873] calc_dep_vdd_volt: Not able to find a matching volt forvdd_core corresponding to vdd_mpu 1350001 volt
[ 3.095306] omap_voltage_scale: Error in calculating dependent vdd voltagesfor vdd_mpu

It does seem to work, though:

root@usrp-e1xx:~# grep MIPS /proc/cpuinfo
BogoMIPS : 717.37

I think I'll just drop the OPP5 voltage by 12.5mV since I know what silicon my usrp-e1xx has, but I can't really give out that patch to others, since someone might replace the overo with another one.

This is the hack I ended up using:

diff --git a/arch/arm/mach-omap2/opp3xxx_data.c b/arch/arm/mach-omap2/opp3xxx_data.c
index 76d26c7..c913240 100644
--- a/arch/arm/mach-omap2/opp3xxx_data.c
+++ b/arch/arm/mach-omap2/opp3xxx_data.c
@@ -37,7 +37,7 @@ static struct omap_opp_def __initdata omap34xx_opp_def_list[] = {
/* MPU OPP5 */
OPP_INITIALIZER("mpu", true, 600000000, 1350000),
/* MPU OPP6 */
- OPP_INITIALIZER("mpu", false, 720000000, 1350000),
+ OPP_INITIALIZER("mpu", false, 720000000, 1350001),

/*
* L3 OPP1 - 41.5 MHz is disabled because: The voltage for that OPP is
@@ -64,7 +64,7 @@ static struct omap_opp_def __initdata omap34xx_opp_def_list[] = {
/* DSP OPP5 */
OPP_INITIALIZER("iva", true, 430000000, 1350000),
/* DSP OPP6 */
- OPP_INITIALIZER("iva", false, 520000000, 1350000),
+ OPP_INITIALIZER("iva", false, 520000000, 1350001),
};

static struct omap_opp_def __initdata omap36xx_opp_def_list[] = {
diff --git a/arch/arm/mach-omap2/voltage.c b/arch/arm/mach-omap2/voltage.c
index d10cb1b..2b7ff8f 100644
--- a/arch/arm/mach-omap2/voltage.c
+++ b/arch/arm/mach-omap2/voltage.c
@@ -324,6 +324,7 @@ static struct omap_volt_data omap34xx_vddmpu_volt_data[] = {
VOLT_DATA_DEFINE(OMAP3430_VDD_MPU_OPP3_UV, OMAP343X_CONTROL_FUSE_OPP3_VDD1, 0xf9, 0x18),
VOLT_DATA_DEFINE(OMAP3430_VDD_MPU_OPP4_UV, OMAP343X_CONTROL_FUSE_OPP4_VDD1, 0xf9, 0x18),
VOLT_DATA_DEFINE(OMAP3430_VDD_MPU_OPP5_UV, OMAP343X_CONTROL_FUSE_OPP5_VDD1, 0xf9, 0x18),
+ VOLT_DATA_DEFINE(OMAP3430_VDD_MPU_OPP6_UV, OMAP343X_CONTROL_FUSE_OPP5_VDD1, 0xf9, 0x18),
VOLT_DATA_DEFINE(0, 0, 0, 0),
};

diff --git a/arch/arm/plat-omap/include/plat/voltage.h b/arch/arm/plat-omap/include/plat/voltage.h
index 6782c5e..42b89db 100644
--- a/arch/arm/plat-omap/include/plat/voltage.h
+++ b/arch/arm/plat-omap/include/plat/voltage.h
@@ -31,6 +31,7 @@
#define OMAP3430_VDD_MPU_OPP3_UV 1200000
#define OMAP3430_VDD_MPU_OPP4_UV 1270000
#define OMAP3430_VDD_MPU_OPP5_UV 1350000
+#define OMAP3430_VDD_MPU_OPP6_UV 1350001

#define OMAP3430_VDD_CORE_OPP1_UV 975000
#define OMAP3430_VDD_CORE_OPP2_UV 1050000