summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Frid <afrid@nvidia.com>2010-07-21 18:35:39 -0700
committerGary King <gking@nvidia.com>2010-07-22 08:21:24 -0700
commitbd678487f1dcb3964a5cb4d16a93e2defb0a0d5f (patch)
treeb15df2bbc828f0e302d4700d53f3b8dceba2a88f
parent4df5e85aac6f8f954963d6779b81dd604613ef2b (diff)
[ARM/tegra] RM: added LP2 configuration options.
Added configuration options to set default LP2 policy. Change-Id: I81820f575858dda62d31b304b6adf09f7d0f3689 Reviewed-on: http://git-master/r/4164 Tested-by: Aleksandr Frid <afrid@nvidia.com> Reviewed-by: Gary King <gking@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/Kconfig35
-rw-r--r--arch/arm/mach-tegra/include/nvrm_power_private.h19
-rw-r--r--arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_power_dfs.c2
-rw-r--r--arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_power_dfs.h4
4 files changed, 54 insertions, 6 deletions
diff --git a/arch/arm/mach-tegra/Kconfig b/arch/arm/mach-tegra/Kconfig
index 8a7ec5bfea0a..cfc54a2261b1 100644
--- a/arch/arm/mach-tegra/Kconfig
+++ b/arch/arm/mach-tegra/Kconfig
@@ -154,6 +154,41 @@ config TEGRA_USB_VBUS_DETECT_BY_PMU
help
Enables USB VBUS detection by PMU
+choice
+ prompt "Tegra CPU power off [LP2 state] policy"
+ depends on TEGRA_NVRM
+ default TEGRA_LP2POLICY_IGNORE_LC
+ help
+ Selects additional DVFS qualification policy for the CPU idle
+ governor decision to put CPU into LP2 state
+
+config TEGRA_LP2POLICY_DISABLED
+ bool "LP2 is not allowed"
+ help
+ Disregards CPU idle governor LP2 requests, never enters LP2 state
+
+config TEGRA_LP2POLICY_ENTER_IN_LC
+ bool "LP2 is allowed in DVFS low corner"
+ help
+ Carries on CPU idle governor LP2 request and disables DVFS wake
+ interrupt only if all DVFS clock loads are under low frequency
+ thresholds, and none of DVFS clients is busy
+
+config TEGRA_LP2POLICY_PERSIST_IN_LC
+ bool "LP2 is persistent in DVFS low corner"
+ help
+ Always carries on CPU idle governor LP2 request, but disables DVFS
+ wake interrupt only if all DVFS clock loads are under low frequency
+ thresholds, or DVFS clients busy request floors are reached
+
+config TEGRA_LP2POLICY_IGNORE_LC
+ bool "LP2 is always allowed and persistent"
+ help
+ Always carries on CPU idle governor LP2 request, and disables DVFS
+ wake interrupt regardless of DVFS clock activities
+
+endchoice
+
if TEGRA_ODM_KIT
source "arch/arm/mach-tegra/odm_kit/Kconfig"
endif
diff --git a/arch/arm/mach-tegra/include/nvrm_power_private.h b/arch/arm/mach-tegra/include/nvrm_power_private.h
index bd0fe6e0ef88..a2663df8df6c 100644
--- a/arch/arm/mach-tegra/include/nvrm_power_private.h
+++ b/arch/arm/mach-tegra/include/nvrm_power_private.h
@@ -128,7 +128,26 @@ typedef enum
NvRmLp2Policy_Force32 = 0x7FFFFFFF
} NvRmLp2Policy;
+#ifdef CONFIG_TEGRA_LP2POLICY_DISABLED
+#define NVRM_DEFAULT_LP2POLICY (NvRmLp2Policy_Disabled)
+#endif
+
+#ifdef CONFIG_TEGRA_LP2POLICY_ENTER_IN_LC
+#define NVRM_DEFAULT_LP2POLICY (NvRmLp2Policy_EnterInLowCorner)
+#endif
+
+#ifdef CONFIG_TEGRA_LP2POLICY_PERSIST_IN_LC
+#define NVRM_DEFAULT_LP2POLICY (NvRmLp2Policy_MaskInLowCorner)
+#endif
+
+#ifdef CONFIG_TEGRA_LP2POLICY_IGNORE_LC
#define NVRM_DEFAULT_LP2POLICY (NvRmLp2Policy_IgnoreLowCorner)
+#endif
+
+#ifndef NVRM_DEFAULT_LP2POLICY
+#define NVRM_DEFAULT_LP2POLICY (NvRmLp2Policy_IgnoreLowCorner)
+#endif
+
extern NvRmLp2Policy g_Lp2Policy;
/**
diff --git a/arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_power_dfs.c b/arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_power_dfs.c
index af6c0309a8d1..985f8df19643 100644
--- a/arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_power_dfs.c
+++ b/arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_power_dfs.c
@@ -74,12 +74,10 @@ void NvRmPrivAp20EmcParametersAdjust(NvRmDfs* pDfs)
{
case EMC_FBIO_CFG5_0_DRAM_TYPE_LPDDR2:
pDfs->DfsParameters[NvRmDfsClockId_Emc] = EmcParamLpDddr2;
- g_Lp2Policy = NVRM_AP20_LPDDR2_LP2POLICY;
break;
case EMC_FBIO_CFG5_0_DRAM_TYPE_DDR2:
pDfs->DfsParameters[NvRmDfsClockId_Emc] = EmcParamDddr2;
- g_Lp2Policy = NVRM_AP20_DDR2_LP2POLICY;
break;
default:
diff --git a/arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_power_dfs.h b/arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_power_dfs.h
index 3d8c85be21c5..8b5c9d4ded39 100644
--- a/arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_power_dfs.h
+++ b/arch/arm/mach-tegra/nvrm/core/ap20/ap20rm_power_dfs.h
@@ -233,10 +233,6 @@ extern "C"
#define NVRM_DFS_PARAM_EMC_AP20 NVRM_DFS_PARAM_EMC_AP20_LPDDR2
-// Defines LP2 entry policy each supported SDRAM type
-#define NVRM_AP20_DDR2_LP2POLICY (NvRmLp2Policy_IgnoreLowCorner)
-#define NVRM_AP20_LPDDR2_LP2POLICY (NvRmLp2Policy_MaskInLowCorner)
-
/**
* Defines CPU frequency threshold for slave CPU1 power management:
* - CPU1 is turned Off when cpu clock is below ON_MIN for