summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/nvrm/core/common/nvrm_power_dfs.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-tegra/nvrm/core/common/nvrm_power_dfs.c')
-rw-r--r--arch/arm/mach-tegra/nvrm/core/common/nvrm_power_dfs.c39
1 files changed, 26 insertions, 13 deletions
diff --git a/arch/arm/mach-tegra/nvrm/core/common/nvrm_power_dfs.c b/arch/arm/mach-tegra/nvrm/core/common/nvrm_power_dfs.c
index 38b68621cd3f..756c806cc759 100644
--- a/arch/arm/mach-tegra/nvrm/core/common/nvrm_power_dfs.c
+++ b/arch/arm/mach-tegra/nvrm/core/common/nvrm_power_dfs.c
@@ -271,6 +271,22 @@ do\
/*****************************************************************************/
+#if NVRM_DTT_RANGE_CHANGE_PRINTF
+
+#define DttRangeReport(T, pDtt) \
+do\
+{\
+ NvOsDebugPrintf("DTT: T = %d, Range = %d (%d : %d)\n", \
+ (T), (pDtt)->TcorePolicy.PolicyRange, \
+ (pDtt)->TcorePolicy.LowLimit, (pDtt)->TcorePolicy.HighLimit); \
+} while(0)
+
+#else
+#define DttRangeReport(T, pDtt)
+#endif
+
+/*****************************************************************************/
+
// DFS object
static NvRmDfs s_Dfs;
@@ -1698,8 +1714,6 @@ DttPolicyUpdate(
NvS32 TemperatureC,
NvRmDtt* pDtt)
{
- NvU32 Range = pDtt->TcorePolicy.PolicyRange;
-
if (hRm->ChipId.Id == 0x20)
{
NvRmPrivAp20DttPolicyUpdate(hRm, TemperatureC, pDtt);
@@ -1716,14 +1730,6 @@ DttPolicyUpdate(
pDtt->TcorePolicy.UpdateIntervalUs = NV_WAIT_INFINITE;
pDtt->TcorePolicy.PolicyRange = 0;
}
- if (pDtt->UseIntr || (pDtt->TcorePolicy.PolicyRange != Range))
- {
-#if NVRM_DTT_RANGE_CHANGE_PRINTF
- NvOsDebugPrintf("DTT: T = %d, Range = %d (%d : %d)\n",
- TemperatureC, pDtt->TcorePolicy.PolicyRange,
- pDtt->TcorePolicy.LowLimit, pDtt->TcorePolicy.HighLimit);
-#endif
- }
}
static NvBool
@@ -1734,6 +1740,7 @@ DttClockUpdate(
{
NvS32 TemperatureC;
NvS32 LowLimit, HighLimit;
+ NvU32 OldRange;
NvRmTzonePolicy Policy;
// Check if thermal throttling is supported
@@ -1749,6 +1756,7 @@ DttClockUpdate(
NvOdmTmonTemperatureGet(pDtt->hOdmTcore, &TemperatureC))
{
DttPolicyUpdate(pDfs->hRm, TemperatureC, pDtt);
+ DttRangeReport(TemperatureC, pDtt);
LowLimit = pDtt->TcorePolicy.LowLimit;
HighLimit = pDtt->TcorePolicy.HighLimit;
@@ -1769,6 +1777,7 @@ DttClockUpdate(
}
// Update temperature monitoring policy
+ OldRange = pDtt->TcorePolicy.PolicyRange;
if (!pDtt->UseIntr &&
NvOdmTmonTemperatureGet(pDtt->hOdmTcore, &TemperatureC))
{
@@ -1787,6 +1796,12 @@ DttClockUpdate(
pDtt->TcorePolicy.UpdateFlag = NV_FALSE;
}
NvOsIntrMutexUnlock(pDfs->hIntrMutex);
+
+ // Report range change
+ if (!pDtt->UseIntr && (OldRange != pDtt->TcorePolicy.PolicyRange))
+ {
+ DttRangeReport(TemperatureC, pDtt);
+ }
}
else
{
@@ -1828,10 +1843,8 @@ static void DttIntrCallback(void* args)
NvOdmTmonConfigParam_IntrLimitLow, &LowLimit);
(void)NvOdmTmonParameterConfig(pDtt->hOdmTcore,
NvOdmTmonConfigParam_IntrLimitHigh, &HighLimit);
+ DttRangeReport(TemperatureC, pDtt);
}
-
- NVRM_DFS_PRINTF(("Dtt Intr: T = %d, LowLimit = %d, HighLimit = %d\n",
- TemperatureC, LowLimit, HighLimit));
}
/*****************************************************************************/