Permalink
Browse files

DVFS/Speedo tweaks to allow TFP versions with tegra_core_process_id

equal to "1" work with the new kernel version. Probably need more tweaks
for this SoC now that we understand what is happening.

Core process id 1 reports as follows:

Tegra3: CPU Speedo ID 3, Soc Speedo ID 2
Tegra Revision: A03 SKU: 0x83 CPU Process: 1 Core Process: 0

Other known already working variant was process id 2

Tegra3: CPU Speedo ID 3, Soc Speedo ID 2
Tegra Revision: A03 SKU: 0x83 CPU Process: 2 Core Process: 0
  • Loading branch information...
1 parent 9af09ce commit f81d0879b7a0161024896cb618af91f2cf264594 @motley-git committed Apr 15, 2012
Showing with 9 additions and 8 deletions.
  1. +7 −8 arch/arm/mach-tegra/tegra3_dvfs.c
  2. +2 −0 arch/arm/mach-tegra/tegra3_speedo.c
@@ -31,8 +31,8 @@
static bool tegra_dvfs_cpu_disabled;
static bool tegra_dvfs_core_disabled;
-static const int cpu_millivolts[MAX_DVFS_FREQS] = {
- 800, 825, 850, 875, 900, 912, 950, 1000, 1025, 1050, 1075, 1100, 1125, 1150, 1175, 1200, 1250, 1300, 1350};
+static const int cpu_millivolts[MAX_DVFS_FREQS] =
+ {800, 825, 850, 875, 900, 912, 925, 950, 975, 1000, 1025, 1050, 1075, 1100, 1125, 1150, 1200, 1275, 1300, 1350};
static const int core_millivolts[MAX_DVFS_FREQS] = {
950, 1000, 1050, 1100, 1150, 1200, 1250, 1300, 1350, 1400};
@@ -75,8 +75,7 @@ static int tegra3_get_core_floor_mv(int cpu_mv)
return 1000;
if (cpu_mv <= 1000)
return 1100;
- if ((tegra_cpu_speedo_id() < 2) ||
- (tegra_cpu_speedo_id() == 4))
+ if ((tegra_cpu_speedo_id() == 4))
return 1200;
if (cpu_mv <= 1100)
return 1200;
@@ -150,9 +149,9 @@ static struct dvfs cpu_dvfs_table[] = {
CPU_DVFS("cpu_g", 1, 2, MHZ, 520, 520, 720, 720, 880, 880, 880, 880, 1090, 1180, 1200, 1300),
CPU_DVFS("cpu_g", 1, 3, MHZ, 550, 550, 800, 800, 1000, 1000, 1000, 1000, 1180, 1230, 1300),
- CPU_DVFS("cpu_g", 2, 1, MHZ, 480, 480, 650, 650, 820, 820, 820, 1000, 1060, 1100, 1200, 1250, 1300, 1330, 1400, 1550, 1600, 1700, 1800),
- CPU_DVFS("cpu_g", 2, 2, MHZ, 520, 520, 720, 720, 880, 880, 880, 1090, 1180, 1200, 1300, 1310, 1350, 1400, 1550, 1600, 1700, 1800),
- CPU_DVFS("cpu_g", 2, 3, MHZ, 550, 550, 800, 800, 1000, 1000, 1000, 1180, 1230, 1300, 1320, 1350, 1400, 1550, 1600, 1700, 1800),
+ CPU_DVFS("cpu_g", 2, 1, MHZ, 1, 1, 650, 650, 820, 820, 820, 1000, 1060, 1100, 1200, 1250, 1300, 1330, 1400, 1550, 1600, 1700, 1800),
+ CPU_DVFS("cpu_g", 2, 2, MHZ, 1, 1, 720, 720, 880, 880, 880, 1090, 1180, 1200, 1300, 1310, 1350, 1400, 1400, 1550, 1600, 1700, 1800),
+ CPU_DVFS("cpu_g", 2, 3, MHZ, 1, 1, 800, 800, 1000, 1000, 1000, 1180, 1230, 1300, 1320, 1350, 1400, 1400, 1400, 1550, 1600, 1700, 1800),
CPU_DVFS("cpu_g", 3, 1, MHZ, 480, 480, 650, 650, 820, 820, 820, 820, 1000, 1060, 1100, 1200, 1250, 1300, 1330, 1400, 1550, 1600, 1700, 1800),
CPU_DVFS("cpu_g", 3, 2, MHZ, 520, 520, 700, 700, 880, 880, 880, 880, 1090, 1180, 1200, 1300, 1310, 1350, 1400, 1550, 1600, 1700, 1800),
@@ -248,7 +247,7 @@ static struct dvfs core_dvfs_table[] = {
CORE_DVFS("2d", 2, 1, KHZ, 1, 267000, 304000, 361000, 408000, 446000, 484000, 520000, 600000, 600000),
CORE_DVFS("epp", 2, 1, KHZ, 1, 267000, 304000, 361000, 408000, 446000, 484000, 520000, 600000, 600000),
CORE_DVFS("3d", 2, 1, KHZ, 1, 247000, 304000, 361000, 408000, 446000, 484000, 520000, 600000, 600000),
- CORE_DVFS("3d2", 2, 1, KHZ, 1, 247000, 304000, 361000, 408000, 446000, 484000, 520000, 600000, 600000),
+ CORE_DVFS("3d2", 2, 1, KHZ, 1, 247000, 304000, 361000, 408000, 446000, 484000, 520000, 600000, 600000),
CORE_DVFS("se", 2, 1, KHZ, 1, 267000, 304000, 361000, 408000, 446000, 484000, 520000, 600000, 600000),
CORE_DVFS("vde", 3, 1, KHZ, 1, 1, 1, 1, 1, 1, 484000, 484000, 484000, 484000),
@@ -453,6 +453,8 @@ int tegra_core_speedo_mv(void)
case 0:
return 1200;
case 1:
+ if (cpu_speedo_id == 2)
+ return 1350;
if ((cpu_speedo_id != 7) && (cpu_speedo_id != 8))
return 1200;
/* fall thru for T30L or T30SL */

0 comments on commit f81d087

Please sign in to comment.