ARM: tegra: dvfs: Add interface to set fmax at vmin
authorAlex Frid <afrid@nvidia.com>
Sat, 21 Dec 2013 06:01:00 +0000 (22:01 -0800)
committerWinnie Hsu <whsu@nvidia.com>
Fri, 16 May 2014 22:53:56 +0000 (15:53 -0700)
commit56329c469d0ba2015f8ed48b9fdb71d62b5754d4
tree5533d883a3b2db90ff285e68e9d4a32b4f3f1068
parent0db31e5caad14e3318728bef9c9deb7cdaab16d4
ARM: tegra: dvfs: Add interface to set fmax at vmin

Added interface to specify clock fmax/vmin limits at run-time. Calling
this interface updates frequencies in the respective DVFS table to be
consistent with the new limits (voltage ladder is preserved):

- for voltages below new vmin, the respective frequencies are shifted
below new fmax to the levels already present in the table; if the 1st
table entry has frequency above new fmax, all entries below vmin
are filled in with 1kHz (min rate used in DVFS tables).

- for voltages above new vmin, the respective frequencies are set at
or above new fmax (not necessarily present in DVFS table before)

- if new vmin is already in the table the respective frequency is set
to new fmax (not necessarily present in DVFS table before)

Since, such update may result in changing voltage requirement up at
the same clock frequency, the interface can be called only for clocks
that are allowed to override core voltage (SDMMC on tegra platforms),
and only if core voltage is already overridden to the level higher
than new vmin.

Bug 1423423
Bug 1423429

Change-Id: I4f61ea6e3f8b6792ed058509339e16bff1947104
Signed-off-by: Alex Frid <afrid@nvidia.com>
Reviewed-on: http://git-master/r/350016
(cherry picked from commit e6d6c5612f9dd22519297912365e0e54e31785ba)
Reviewed-on: http://git-master/r/410185
GVS: Gerrit_Virtual_Submit
Reviewed-by: Shreshtha Sahu <ssahu@nvidia.com>
Tested-by: Shreshtha Sahu <ssahu@nvidia.com>
Reviewed-by: Venkat Moganty <vmoganty@nvidia.com>
arch/arm/mach-tegra/clock.c
arch/arm/mach-tegra/dvfs.c
include/linux/clk/tegra.h