summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Frid <afrid@nvidia.com>2010-06-10 22:28:31 -0700
committerGary King <gking@nvidia.com>2010-06-11 16:34:42 -0700
commit0ad0f96d590c15c8bbe1165ed8da250edc222a6f (patch)
tree12fef3c48dadd5de705c0e7f255ecc37f16aa41f
parent820ab291521d4255ad03fd013e5356f9e70f6868 (diff)
[ARM/tegra] RM: speed up clock usage API.
Skipped spare clock h/w access when DVFS is running - it was not used, anyway, since all rates in this case are available in DVFS variables. Change-Id: Id324c7904e30ea8fe50b319cfd06c75a721b6b3f Reviewed-on: http://git-master/r/2458 Tested-by: Aleksandr Frid <afrid@nvidia.com> Reviewed-by: Gary King <gking@nvidia.com>
-rw-r--r--arch/arm/mach-tegra/nvrm/core/common/nvrm_power_dfs.c11
1 files changed, 7 insertions, 4 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 a0bac50637cd..7ac8d331fecc 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
@@ -3283,17 +3283,20 @@ NvRmDfsGetClockUtilization(
NV_ASSERT(pClockUsage);
NV_ASSERT((0 < ClockId) && (ClockId < NvRmDfsClockId_Num));
- DfsClockFreqGet(hRmDeviceHandle, &DfsKHz);
-
- NvOsIntrMutexLock(pDfs->hIntrMutex);
-
// If DFS is not running - update current frequencies directly from h/w
if (pDfs->DfsRunState <= NvRmDfsRunState_Stopped)
{
+ DfsClockFreqGet(hRmDeviceHandle, &DfsKHz);
+
+ NvOsIntrMutexLock(pDfs->hIntrMutex);
pDfs->CurrentKHz = DfsKHz;
if (pDfs->Samplers[ClockId].MonitorPresent)
pDfs->Samplers[ClockId].AverageKHz = DfsKHz.Domains[ClockId];
}
+ else
+ {
+ NvOsIntrMutexLock(pDfs->hIntrMutex);
+ }
// Update clock info
pClockUsage->MinKHz = pDfs->DfsParameters[ClockId].MinKHz;
pClockUsage->MaxKHz = pDfs->DfsParameters[ClockId].MaxKHz;