summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorAlex Frid <afrid@nvidia.com>2010-03-25 22:18:55 -0700
committerGary King <gking@nvidia.com>2010-03-29 17:20:29 -0800
commita1f7a9e6296396975eadbca615fe7788e2a0c350 (patch)
tree8f218a253cee1616f1ed86740082e6445425253e /arch
parenta3644ba3a01c41f789432bbb75c9dbba004d3664 (diff)
tegra RM: Updated graphics clock control.
Updated graphics clock control: added 2D/EPP frequency scaling following EMC clock, and reduced Host1x clock to 108 MHz to make sure it can be run at low voltage always (per previous evaluation Host1x at 83MHz works well with 240MHz cap on modules behind Host, hence 108MHz setting with current 300 MHz module cap). Change-Id: I9d5d89b38f08b99a805ad22459a84cb580dce05c Reviewed-on: http://git-master/r/981 Tested-by: Aleksandr Frid <afrid@nvidia.com> Reviewed-by: Gary King <gking@nvidia.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-tegra/nvrm/core/ap15/nvrm_clocks.c1
-rw-r--r--arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_clock_config.c9
-rw-r--r--arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_clocks.h3
3 files changed, 10 insertions, 3 deletions
diff --git a/arch/arm/mach-tegra/nvrm/core/ap15/nvrm_clocks.c b/arch/arm/mach-tegra/nvrm/core/ap15/nvrm_clocks.c
index 602f67bc5520..40e8837f9e11 100644
--- a/arch/arm/mach-tegra/nvrm/core/ap15/nvrm_clocks.c
+++ b/arch/arm/mach-tegra/nvrm/core/ap15/nvrm_clocks.c
@@ -2758,6 +2758,7 @@ static const NvRmModuleID s_Ap20PllC0UsagePolicy[] =
NvRmModuleID_Tvo,
NvRmModuleID_3D,
NvRmModuleID_2D,
+ NvRmModuleID_Epp,
NvRmModuleID_Mpe,
NvRmModuleID_Hdmi,
NvRmModuleID_Vde
diff --git a/arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_clock_config.c b/arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_clock_config.c
index 76943e28624c..46d6f4edd004 100644
--- a/arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_clock_config.c
+++ b/arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_clock_config.c
@@ -774,13 +774,16 @@ NvRmPrivAp20GetEmcSyncFreq(
{
case NvRmModuleID_2D:
case NvRmModuleID_Epp:
- // TODO: establish scales after Ap20 bring-up
+ // Scale down 2D/EPP whith EMC clock (set 2D/EPP frequency at
+ // 50% of max when EMC clock is at or below 50% of max)
FreqKHz = NvRmPrivGetSocClockLimits(Module)->MaxKHz;
+ if ((0 < s_Ap20EmcConfig.Index) &&
+ (s_Ap20EmcConfig.Index < NVRM_AP20_DFS_EMC_FREQ_STEPS))
+ FreqKHz >>= 1;
break;
case NvRmModuleID_GraphicsHost:
- // TODO: establish level after Ap20 bring-up
- FreqKHz = NvRmPrivGetSocClockLimits(Module)->MaxKHz;
+ FreqKHz = NVRM_AP20_HOST_KHZ;
break;
default:
diff --git a/arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_clocks.h b/arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_clocks.h
index 0179bccdb90b..04d9bf0734b1 100644
--- a/arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_clocks.h
+++ b/arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_clocks.h
@@ -57,6 +57,9 @@ extern const NvU32 g_Ap20ModuleClockTableSize;
// Defines maximum APB frequency (bug 559823)
#define NVRM_AP20_APB_MAX_KHZ (125000)
+// Defines graphics Host frequency
+#define NVRM_AP20_HOST_KHZ (108000)
+
/**
* Defines frequency steps derived from PLLP0 fixed output to be used as System
* clock source frequency. The frequency specified in kHz, and it will be rounded