summaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-ti33x-psp-3.2/beaglebone/0079-AM335X-errata-OPP50-on-MPU-domain-is-not-supported.patch
blob: c50abbf6c1c3209da07f504687271736d98330d5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
From 662134c1007cc275193737dd11ea4b77f47256a7 Mon Sep 17 00:00:00 2001
From: AnilKumar Ch <anilkumar@ti.com>
Date: Tue, 26 Jun 2012 15:41:51 +0530
Subject: [PATCH 79/79] AM335X: errata: OPP50 on MPU domain is not supported

This patch implements a workaround for OPP50 erratum, Advisory
1.0.15 at http://www.ti.com/lit/er/sprz360b/sprz360b.pdf

OPP50 Operation on MPU Domain is Not Supported. This issue seen with
reliability tests running on MPU. To minimize power consumption, the
ARM Cortex-A8 may be operated at the lower frequency defined by OPP50,
but the respective power terminal VDD_MPU must be operated as defined
by OPP100. So MPU OPP50 modified to <275MHz, 1.1V>.

Power consumption as seen on AM335x EVM:
OPP50  <275MHz, 0.95> - 40.5 mW
OPP50  <275MHz, 1.10> - 55.5 mW
OPP100 <500MHz, 1.10> - 98.5 mW

Based on the above data we can see 43mW power savings compared to
OPP100. This is the reason for keeping OPP50 alive instead of
shutting down completely.

Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
---
 arch/arm/mach-omap2/opp3xxx_data.c |   10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/arch/arm/mach-omap2/opp3xxx_data.c b/arch/arm/mach-omap2/opp3xxx_data.c
index 0e540c8..9fbcfc3 100644
--- a/arch/arm/mach-omap2/opp3xxx_data.c
+++ b/arch/arm/mach-omap2/opp3xxx_data.c
@@ -154,7 +154,15 @@ static struct omap_opp_def __initdata omap36xx_opp_def_list[] = {
 
 /* VDD1 */
 
-#define AM33XX_VDD_MPU_OPP50_UV		950000
+/*
+ * Errata 1.0.15: OPP50 Operation on MPU Domain is Not Supported.
+ *
+ * To minimize power consumption, the ARM Cortex-A8 may be operated at
+ * the lower frequency defined by OPP50, but the respective voltage
+ * domain VDD_MPU must be operated as defined by OPP100. So MPU OPP50
+ * definition is modified to 275MHz, 1.1V.
+ */
+#define AM33XX_VDD_MPU_OPP50_UV		1100000
 #define AM33XX_VDD_MPU_OPP100_UV	1100000
 #define AM33XX_VDD_MPU_OPP120_UV	1200000
 #define AM33XX_VDD_MPU_OPPTURBO_UV	1260000
-- 
1.7.10