old version maemo20
[kernel-power] / kernel-maemo-2.6.28 / debian / patches / overclock_uvolt.diff
diff --git a/kernel-maemo-2.6.28/debian/patches/overclock_uvolt.diff b/kernel-maemo-2.6.28/debian/patches/overclock_uvolt.diff
new file mode 100644 (file)
index 0000000..634aa3e
--- /dev/null
@@ -0,0 +1,145 @@
+--- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/omap3-opp.h
++++ kernel-maemo-2.6.28/arch/arm/mach-omap2/omap3-opp.h
+@@ -4,6 +4,15 @@
+ #include <mach/omap-pm.h>
+ /* MPU speeds */
++#define S1200M  1200000000
++#define S1100M  1100000000
++#define S1000M  1000000000
++#define S950M   950000000
++#define S900M   900000000
++#define S850M   850000000
++#define S800M   800000000
++#define S750M   750000000
++#define S700M   700000000
+ #define S600M   600000000
+ #define S550M   550000000
+ #define S500M   500000000
+@@ -23,16 +32,23 @@
+ static struct omap_opp omap3_mpu_rate_table[] = {
+       {0, 0, 0},
+-      /*OPP1*/
+       {0, VDD1_OPP1, 0x1E},
+-      /*OPP2*/
+-      {S250M, VDD1_OPP2, 0x26},
+-      /*OPP3*/
+-      {S500M, VDD1_OPP3, 0x30},
+-      /*OPP4*/
+-      {S550M, VDD1_OPP4, 0x36},
+-      /*OPP5*/
+-      {S600M, VDD1_OPP5, 0x3C},
++      /*underclocking*/
++      {S125M, VDD1_OPP2, 0x1E},
++      /*default*/
++      {S250M, VDD1_OPP3, 0x26},
++      {S500M, VDD1_OPP4, 0x30},
++      {S550M, VDD1_OPP5, 0x30},
++      {S600M, 6, 0x30},
++      /*overclocking*/
++      {S700M, 7, 0x36},
++      {S750M, 8, 0x36},
++      {S800M, 9, 0x36},
++      {S850M, 10, 0x36},
++      {S900M, 11, 0x36},
++      {S950M, 12, 0x36},
++      {S1000M, 13, 0x36},
++      {S1100M, 14, 0x36},
+ };
+ static struct omap_opp omap3_l3_rate_table[] = {
+@@ -47,16 +63,23 @@
+ static struct omap_opp omap3_dsp_rate_table[] = {
+       {0, 0, 0},
+-      /*OPP1*/
++      /*underclocking*/
+       {S90M, VDD1_OPP1, 0x1E},
+-      /*OPP2*/
+-      {S180M, VDD1_OPP2, 0x26},
+-      /*OPP3*/
+-      {S360M, VDD1_OPP3, 0x30},
+-      /*OPP4*/
+-      {S400M, VDD1_OPP4, 0x36},
+-      /*OPP5*/
+-      {S430M, VDD1_OPP5, 0x3C},
++      /*default*/
++      {S90M, VDD1_OPP2, 0x1E},
++      {S180M, VDD1_OPP3, 0x26},
++      {S360M, VDD1_OPP4, 0x30},
++      {S400M, VDD1_OPP5, 0x36},
++      {S430M, 6, 0x3C},
++      /*overclocking*/
++      {S430M, 7, 0x3C},
++      {S430M, 8, 0x3C},
++      {S430M, 9, 0x3C},/*800MHz*/
++      {S500M, 10, 0x3C},
++      {S500M, 11, 0x3C},
++      {S500M, 12, 0x3C},
++      {S500M, 13, 0x3C},
++      {S500M, 14, 0x3C},
+ };
+ #endif
+--- kernel-maemo-2.6.28.orig/arch/arm/plat-omap/include/mach/omap34xx.h
++++ kernel-maemo-2.6.28/arch/arm/plat-omap/include/mach/omap34xx.h
+@@ -114,7 +114,8 @@
+ #define VDD2_OPP3     0x3
+ #define MIN_VDD1_OPP  VDD1_OPP1
+-#define MAX_VDD1_OPP  VDD1_OPP5
++/*#define MAX_VDD1_OPP        VDD1_OPP5*/
++#define MAX_VDD1_OPP  14
+ #define MIN_VDD2_OPP  VDD2_OPP1
+ #define MAX_VDD2_OPP  VDD2_OPP3
+--- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/smartreflex.c
++++ kernel-maemo-2.6.28/arch/arm/mach-omap2/smartreflex.c
+@@ -513,7 +513,7 @@
+       sr->req_opp_no = target_opp_no;
+       if (sr->srid == SR1) {
+-              switch (target_opp_no) {
++              switch (min(target_opp_no-1,5)) {
+               case 5:
+                       nvalue_reciprocal = sr->opp5_nvalue;
+                       break;
+@@ -527,6 +527,7 @@
+                       nvalue_reciprocal = sr->opp2_nvalue;
+                       break;
+               case 1:
++              case 0:
+                       nvalue_reciprocal = sr->opp1_nvalue;
+                       break;
+               default:
+--- kernel-maemo-2.6.28.orig/arch/arm/plat-omap/cpu-omap.c
++++ kernel-maemo-2.6.28/arch/arm/plat-omap/cpu-omap.c
+@@ -148,10 +148,13 @@
+                                                       VERY_HI_RATE) / 1000;
+       }
+-      clk_set_rate(mpu_clk, policy->cpuinfo.max_freq * 1000);
++      /*clk_set_rate(mpu_clk, policy->cpuinfo.max_freq * 1000);*/
++      clk_set_rate(mpu_clk, 600000 * 1000); /*N900 hack: set default max to 600MHz */
+-      policy->min = policy->cpuinfo.min_freq;
+-      policy->max = policy->cpuinfo.max_freq;
++      /*policy->min = policy->cpuinfo.min_freq;*/
++      /*policy->max = policy->cpuinfo.max_freq;*/
++      policy->min = 250000;
++      policy->max = 600000; /*N900 hack: set default to 250-600MHz */
+       policy->cur = omap_getspeed(0);
+       policy->cpuinfo.transition_latency = 300 * 1000;
+--- kernel-maemo-2.6.28.orig/arch/arm/mach-omap2/smartreflex.h
++++ kernel-maemo-2.6.28/arch/arm/mach-omap2/smartreflex.h
+@@ -254,7 +254,7 @@
+ /* XXX: end remove/move */
+ /* SR_MAX_LOW_OPP: the highest of the "low OPPs", 1 and 2. */
+-#define SR_MAX_LOW_OPP                2
++#define SR_MAX_LOW_OPP                3
+ /* XXX: find more appropriate place for these once DVFS is in place */
+ extern u32 current_vdd1_opp;